TaPersonMapper.java 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. package com.huiju.estateagents.mapper;
  2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.huiju.estateagents.entity.TaChannel;
  5. import com.huiju.estateagents.entity.TaPerson;
  6. import com.huiju.estateagents.entity.TaPersonPositon;
  7. import com.huiju.estateagents.po.PersonPO;
  8. import org.apache.ibatis.annotations.*;
  9. import java.time.LocalDate;
  10. import java.time.LocalDateTime;
  11. import java.util.List;
  12. import java.util.Map;
  13. /**
  14. * <p>
  15. * 人员表 Mapper 接口
  16. * </p>
  17. *
  18. * @author jobob
  19. * @since 2019-05-10
  20. */
  21. @Mapper
  22. public interface TaPersonMapper extends BaseMapper<TaPerson> {
  23. List<Map<String, Object>> selectCardList(IPage<Map<String, Object>> page, @Param("personType") String personType, @Param("status") int status, @Param("buildingId") String buildingId, @Param("orgId") Integer orgId, @Param("consultant") String consultant);
  24. int setFieldIncrement(@Param("personId") String personId, @Param("field") String field, @Param("increment") int increment);
  25. int setPointsIncrement(@Param("personId") String personId, @Param("increment") int increment);
  26. TaPerson getSalesExecutive();
  27. List<TaPerson> getPersonByOpenId(@Param("openId") String openId);
  28. List<Map<String, Object>> selectBuildingConsultants(@Param("buildingId") String buildingId, @Param("personType") String personType, @Param("status") int status, @Param("orgId") Integer orgId);
  29. IPage<TaPerson> selectCustomer(IPage<TaPerson> page);
  30. TaPerson getById(@Param("personId") String personId);
  31. List<String> getUserProjects(@Param("personId") Integer personId);
  32. TaPerson selectByIdPerson(@Param("openid") String openid);
  33. List<String> getConsultantByName(@Param("name") String name);
  34. String getConsultantByTel(@Param("tel") String tel);
  35. List<Map<String, Object>> selectCardListofMine(IPage<Map<String, Object>> page, @Param("personType") String personType, @Param("status") int status, @Param("personIds") List<String> personIds);
  36. //---------- 用户总数 start ------------
  37. /**
  38. * 总用户数
  39. *
  40. * @return
  41. */
  42. @ResultType(Integer.class)
  43. @Select("select count(1) from ta_person where org_id = #{org} AND person_type IN ('customer','drift','estate agent')")
  44. Integer selectUserCount(@Param("org") Integer orgId);
  45. /**
  46. * 总注册数
  47. *
  48. * @return
  49. */
  50. @ResultType(Integer.class)
  51. @Select("select count(1) from ta_person where org_id = #{org} AND person_type IN ('customer','drift','estate agent') and phone is not null")
  52. Integer selectRegisteredCount(@Param("org") Integer orgId);
  53. /**
  54. * 渠道代理后台总用户数
  55. *
  56. * @return
  57. */
  58. @ResultType(Integer.class)
  59. @Select("select count(1) from ta_person where org_id = #{org}")
  60. Integer selectChannelUserCount(@Param("org") String orgId);
  61. /**
  62. * 渠道代理后台总注册数
  63. *
  64. * @return
  65. */
  66. @ResultType(Integer.class)
  67. @Select("select count(1) from ta_person where org_id = #{org} and phone is not null")
  68. Integer selectChannelRegisteredCount(@Param("org") String orgId);
  69. /**
  70. * 根据时间段查询
  71. *
  72. * @param personType
  73. * @return
  74. */
  75. Integer selectRecentlyCount(@Param("org") Integer orgId, @Param("personType") String personType, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
  76. //---------- 用户总数 end ------------
  77. /**
  78. * 用户行为
  79. *
  80. * @param personType
  81. * @param startDate
  82. * @param endDate
  83. * @return
  84. */
  85. List<PersonPO> selectUserBehavior(@Param("org") Integer orgId,
  86. @Param("personType") String personType,
  87. @Param("startDate") LocalDate startDate,
  88. @Param("endDate") LocalDate endDate,
  89. @Param("buildingId") String buildingId,
  90. @Param("eventType") String eventType,
  91. @Param("event") String event,
  92. @Param("activity") String activity);
  93. /**
  94. * 活跃用户数 / 最近新增的用户数
  95. *
  96. * @param personType
  97. * @param dateType
  98. * @return
  99. */
  100. List<Map<String, Object>> selectActiveUserCount(@Param("org") Integer orgId, @Param("personType") String personType, @Param("dateType") String dateType, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
  101. /**
  102. * 新增用户数
  103. *
  104. * @param personType
  105. * @param startDate
  106. * @param endDate
  107. * @return
  108. */
  109. List<Map<String, Object>> selectNewsUserCount(@Param("orgId") Integer orgId, @Param("personType") String personType, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
  110. /**
  111. * 性别比例
  112. * <p>
  113. * 据说 1 男 2 女
  114. *
  115. * @return
  116. */
  117. @Select("select count(1) as sex_count from ta_person where org_id = #{org} AND person_type IN ('customer','drift','estate agent') and gender = #{gender}")
  118. Integer selectSexUser(@Param("org") Integer orgId, @Param("gender") Integer gender);
  119. /**
  120. * 城市比例
  121. *
  122. * @param personType
  123. * @return
  124. */
  125. @ResultType(Map.class)
  126. @Select("SELECT " +
  127. " a.city as city, " +
  128. " b.shortname AS name, " +
  129. " b.lng, " +
  130. " b.lat, " +
  131. " count(a.person_id) AS cityCount " +
  132. "FROM " +
  133. " ta_person a " +
  134. "inner JOIN td_city b " +
  135. "on a.city = b.id " +
  136. "WHERE " +
  137. " a.org_id = #{org} " +
  138. " AND a.person_type IN ('customer','drift','estate agent') " +
  139. "GROUP BY " +
  140. " a.city ")
  141. List<Map<String, Object>> selectCityUser(@Param("org") Integer orgId);
  142. // ------------- 用户来源 start ------------
  143. /**
  144. * 用户来源 的饼图
  145. *
  146. * @param recommendPersonType
  147. * @return
  148. */
  149. Integer selectUserSourcePie(@Param("org") Integer orgId, @Param("recommendPersonType") String recommendPersonType, @Param("personType") String personType);
  150. /**
  151. * 用户来源 柱状
  152. *
  153. * @return
  154. */
  155. List<Map<String, Object>> selectUserSourceColumnar(@Param("org") Integer orgId, @Param("personType") String personType, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
  156. /**
  157. * 用户来源 数据列表
  158. */
  159. List<Map<String, Object>> selectUserSourceData(@Param("org") Integer orgId, @Param("personType") String personType, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
  160. // ------------- 用户来源 end ------------
  161. @Update("UPDATE ta_person SET ${field} = IFNULL(${field}, 0) + #{increment} WHERE person_id = #{newsId}")
  162. void setFieldNum(@Param("newsId") String newsId, @Param("field") String field, @Param("increment") int increment);
  163. IPage<TaPerson> getPersonList(IPage<TaPerson> page, @Param("personType") String personType, @Param("name") String name, @Param("phone") String phone, @Param("status") Integer status, @Param("buildingId") String buildingId, @Param("personTags") String personTags);
  164. /**
  165. * 渠道下的经纪人
  166. *
  167. * @param pg
  168. * @param name
  169. * @param phone
  170. * @return
  171. */
  172. IPage<TaPerson> channelBrokerList(IPage<TaChannel> pg, @Param("name") String name, @Param("phone") String phone, @Param("orgid") Integer orgid, @Param("channelId") Integer channelId);
  173. /**
  174. * 渠道邀请经纪人
  175. *
  176. * @param pg
  177. * @param id
  178. * @return
  179. */
  180. IPage<TaPerson> InviteClientsList(IPage<TaChannel> pg, @Param("id") String id);
  181. /**
  182. * 获取用户总积分
  183. *
  184. * @param orgId
  185. * @return
  186. */
  187. Integer sumPointsByOrgId(@Param("orgId") Integer orgId);
  188. //更新city拼音为cityId
  189. void upDatePersonCityToId(@Param("personId") String personId);
  190. /**
  191. * 判断置业顾问绑定状态
  192. *
  193. * @return
  194. */
  195. Integer judgeBindStatusByCondition(@Param("userId") Integer userId, @Param("orgId") Integer orgId, @Param("phone") String phone);
  196. IPage<TaPerson> selectDriftCustomerPageList(IPage<TaPerson> page, @Param("buildingId") String buildingId, @Param("orgId") Integer orgId, @Param("personEstateDrift") String personEstateDrift, @Param("sceneType") String sceneType);
  197. int selectFromNum(@Param("orgId") Integer orgId, @Param("personType") String personType);
  198. /**
  199. * 保存用户位置信息
  200. *
  201. * @param record
  202. * @return
  203. */
  204. Integer savePersonPosition(TaPersonPositon record);
  205. /**
  206. * 今日新增人数
  207. * @param orgId
  208. * @return
  209. */
  210. Integer selectTodayRecentlyCount(@Param("orgId") Integer orgId, @Param("nowDate") LocalDateTime nowDate);
  211. List<Map<String, Object>> selectCityPerson(@Param("orgId") Integer orgId);
  212. }