Browse Source

恶意用户列表

zoujiajian 2 years ago
parent
commit
5da71473a4

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

@@ -73,4 +73,6 @@ public interface UserMapper extends BaseMapper<User> {
 
     @Update("update user set sub_apply_money = sub_apply_money + #{addApplyMoney} where id = #{id} and sub_apply_money = #{subApplyMoney}")
     Integer addDistributeSubMoney(@Param("id") Long id, @Param("subApplyMoney") BigDecimal subApplyMoney, @Param("addApplyMoney") BigDecimal addApplyMoney);
+
+    Integer getNewMaliceUser(DateTime beginOfDay);
 }

+ 196 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/MaliceUserView.java

@@ -0,0 +1,196 @@
+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.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: MaliceUserView
+ * 创建者: JavaZou
+ * 创建时间:2024/5/16 16:13
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select distinct user_id from order_don where status not in ('close','noPayment') and buyer_id is not null group by user_id having count(distinct buyer_id) > 4) o inner join user u on u.id = o.user_id")
+public class MaliceUserView {
+	/**
+	 * id
+	 */
+	@DbField("u.id")
+	private Long id;
+
+	/**
+	 * 名称
+	 */
+	@DbField("u.nickname")
+	private String nickname;
+
+	/**
+	 * 手机号
+	 */
+	@DbField("u.phone")
+	private String phone;
+
+	/**
+	 * 绑定手机号
+	 */
+	@DbIgnore
+	private String bindPhone;
+
+	/**
+	 * 绑定邮箱
+	 */
+	@DbIgnore
+	private String bindEmail;
+
+	/**
+	 * 头像
+	 */
+	@DbField("u.headimgurl")
+	private String headimgurl;
+
+	/**
+	 * 积分
+	 */
+	@DbField("u.points")
+	private BigDecimal points;
+
+	@DbField("u.balance")
+	private BigDecimal balance;
+
+	@DbField("case when u.login_phone != '' then 'phone' when u.email != '' then 'email' when u.open_id != '' then 'wechat' else 'wechat' end")
+	private String register;
+
+	@DbField("u.show_id")
+	private String showId;
+
+	/**
+	 * 登录注册手机号
+	 */
+	@DbField("u.login_phone")
+	private String loginPhone;
+
+	/**
+	 * 登录注册邮箱
+	 */
+	@DbField("u.email")
+	private String email;
+
+	/**
+	 * 活跃抽奖积分
+	 */
+	@DbField("u.active_points")
+	private BigDecimal activePoints;
+
+	@DbField("u.register_env")
+	private String registerEnv;
+
+	@DbField("u.last_time")
+	private Date lastTime;
+
+	/**
+	 * 账户数
+	 */
+	@DbIgnore
+	private Integer accountNum;
+
+	/**
+	 * 邀请人id
+	 */
+	@DbField("us.shared_id")
+	private Long sharedId;
+
+	/**
+	 * 邀请人名称
+	 */
+	@DbIgnore
+	private String distributeName;
+
+	@DbIgnore
+	private String businessName;
+
+	@DbIgnore
+	private Integer inviteCount;
+
+	/**
+	 * 渠道来源
+	 */
+	@DbIgnore
+	private String channelName;
+
+	@DbField("u.is_black")
+	private Boolean isBlack;
+
+	@DbField("u.unionid")
+	private String unionid;
+
+	/**
+	 * 企业微信客服
+	 */
+	@DbIgnore
+	private String corpCustomers;
+
+	/**
+	 * 首单信息
+	 */
+	@DbIgnore
+	private String firstOrderDetail;
+
+	/**
+	 * 有无路由器订单
+	 */
+	@DbIgnore
+	private Boolean isHadRouteOrder;
+
+
+	/**
+	 * 订单金额
+	 */
+	@DbIgnore
+	private BigDecimal orderMoney;
+
+	/**
+	 * 订单数
+	 */
+	@DbIgnore
+	private Integer numOfOrder;
+
+	/**
+	 * 退款金额
+	 */
+	@DbIgnore
+	private BigDecimal refundMoney;
+
+	/**
+	 * 退款率
+	 */
+	@DbIgnore
+	private BigDecimal refundRate;
+
+	/**
+	 * 创建时间
+	 */
+	@DbField("u.created_time")
+	private Date createdTime;
+
+	/**
+	 * 最后更新时间
+	 */
+	@DbField("u.update_time")
+	private Date updateTime;
+
+	@DbField("u.is_google")
+	private Boolean isGoogle;
+
+	/**
+	 * 是否实名
+	 */
+	@DbIgnore
+	private Boolean isCert;
+}

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

@@ -27,4 +27,16 @@
         where not exists (select user_id,sum(money) from order_don o where o.user_id = s.user_id and o.relation_id != 0 and o.status not in ('close','noPayment','refund') and o.created_time &lt; #{beginOfDay} group by user_id, date_format(o.created_time,'%Y-%m-%d')
         having sum(money) >  #{largeLimit})
     </select>
+
+    <select id="getNewMaliceUser" resultType="java.lang.Integer">
+        select count(distinct o.user_id)
+        from (select user_id
+              from order_don
+              where created_time >= #{beginOfDay}
+                and status not in ('close', 'noPayment')
+                and buyer_id is not null
+              group by user_id
+              having count(distinct buyer_id) > 4) o
+                 inner join user u on u.id = o.user_id
+    </select>
 </mapper>

+ 22 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsUserController.java

@@ -20,6 +20,7 @@ import com.cyksj.mapper.corp.CorpUserFollowRelationMapper;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.model.entity.*;
+import com.cyksj.model.manage.views.MaliceUserView;
 import com.cyksj.model.manage.views.UserView;
 import com.cyksj.model.request.UserBalanceReq;
 import com.cyksj.model.request.UserFuncPropertyReq;
@@ -445,4 +446,25 @@ public class CmsUserController{
         Integer newConsumerCount = userMapper.getLargeNewConsumer(beginOfDay, largeLimit);
         return GatewayResponse.SUCCESS.newBuilder().toResult(newConsumerCount > 0 ? true : false);
     }
+
+    /**
+     * 超过恶意用户列表
+     * 使用五个以上得支付宝
+     */
+    @GetMapping("/get/malice/user")
+    public Result<SearchResult<MaliceUserView>> getMaliceUser() {
+        MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+        SearchResult<MaliceUserView> search = beanSearcher.search(MaliceUserView.class, builder.build());
+        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+    }
+
+    /**
+     * 是否有最新恶意用户
+     */
+    @GetMapping("get/malice/user/newUser")
+    public Result<Boolean> getNewMaliceUser() {
+        DateTime beginOfDay = DateUtil.beginOfDay(DateTime.now());
+        Integer newConsumerCount = userMapper.getNewMaliceUser(beginOfDay);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(newConsumerCount > 0 ? true : false);
+    }
 }