TaRecommendCustomerServiceImpl.java 49KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021
  1. package com.huiju.estateagents.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.huiju.estateagents.base.ResponseBean;
  8. import com.huiju.estateagents.center.taUser.entity.TaUser;
  9. import com.huiju.estateagents.center.taUser.mapper.TaUserMapper;
  10. import com.huiju.estateagents.center.taUser.service.ITaUserService;
  11. import com.huiju.estateagents.common.CommConstant;
  12. import com.huiju.estateagents.common.DateUtils;
  13. import com.huiju.estateagents.common.StringUtils;
  14. import com.huiju.estateagents.drainage.entity.TaDrainage;
  15. import com.huiju.estateagents.drainage.mapper.TaDrainageMapper;
  16. import com.huiju.estateagents.entity.*;
  17. import com.huiju.estateagents.excel.AgentsRecommendCustomer;
  18. import com.huiju.estateagents.excel.ExcelRecommendCustomer;
  19. import com.huiju.estateagents.excel.ReporRecommendCustomer;
  20. import com.huiju.estateagents.mapper.*;
  21. import com.huiju.estateagents.service.IMiniAppService;
  22. import com.huiju.estateagents.service.ITaRecommendCustomerService;
  23. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  24. import com.huiju.estateagents.statistic.entity.TaCustomerFollowUpRecord;
  25. import com.huiju.estateagents.statistic.mapper.TaCustomerFollowUpRecordMapper;
  26. import org.apache.commons.collections.CollectionUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import java.time.LocalDateTime;
  30. import java.util.HashMap;
  31. import java.util.List;
  32. import java.util.Map;
  33. /**
  34. * <p>
  35. * 推荐客户表 服务实现类
  36. * </p>
  37. *
  38. * @author jobob
  39. * @since 2019-05-10
  40. */
  41. @Service
  42. public class TaRecommendCustomerServiceImpl extends ServiceImpl<TaRecommendCustomerMapper, TaRecommendCustomer> implements ITaRecommendCustomerService {
  43. @Autowired
  44. TaPersonMapper taPersonMapper;
  45. @Autowired
  46. TaRecommendCustomerMapper taRecommendCustomerMapper;
  47. @Autowired
  48. IMiniAppService iMiniAppService;
  49. @Autowired
  50. TaPersonVisitRecordMapper taPersonVisitRecordMapper;
  51. @Autowired
  52. ITaUserService userService;
  53. @Autowired
  54. private TaBuildingMapper taBuildingMapper;
  55. @Autowired
  56. private TdCityMapper cityMapper;
  57. @Autowired
  58. private TaCustomerFollowUpRecordMapper customerFollowUpRecordMapper;
  59. @Autowired
  60. private TaPersonBuildingMapper taPersonBuildingMapper;
  61. @Autowired
  62. private TaBuildingDynamicMapper taBuildingDynamicMapper;
  63. @Autowired
  64. private TaShareActivityMapper taShareActivityMapper;
  65. @Autowired
  66. private HelpActivityMapper helpActivityMapper;
  67. @Autowired
  68. private TaNewsMapper taNewsMapper;
  69. @Autowired
  70. private TaDrainageMapper taDrainageMapper;
  71. @Autowired
  72. private TaUserMapper taUserMapper;
  73. @Autowired
  74. private TaPersonFromRecordMapper taPersonFromRecordMapper;
  75. @Autowired
  76. private TdPersonFromMapper tdPersonFromMapper;
  77. @Autowired
  78. private TdWxDictMapper tdWxDictMapper;
  79. @Autowired
  80. private TaCustomerFromMapper taCustomerFromMapper;
  81. @Autowired
  82. private TaSharePersonFromMapper taSharePersonFromMapper;
  83. @Override
  84. public ResponseBean getMyCustList(String openid, String keywords, int pageNumber, int pageSize) {
  85. List<TaPerson> taPersons = getPersonsByOpenId(openid);
  86. if (null == taPersons || taPersons.size() != 1) {
  87. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  88. }
  89. TaPerson taPerson = taPersons.get(0);
  90. IPage<TaRecommendCustomer> page = new Page<>();
  91. page.setCurrent(pageNumber);
  92. page.setSize(pageSize);
  93. QueryWrapper<TaRecommendCustomer> query = new QueryWrapper<>();
  94. query.eq("recommend_person", taPerson.getPersonId());
  95. query.like(null != keywords && "".equals(keywords.trim()), "name", keywords);
  96. query.orderByDesc("report_date");
  97. IPage<TaRecommendCustomer> result = taRecommendCustomerMapper.selectPage(page, query);
  98. return ResponseBean.success(result);
  99. }
  100. @Override
  101. public ResponseBean getAdminMyCustList(String openid, String keywords, int pageNumber, int pageSize) {
  102. List<TaPerson> taPersons = getPersonsByOpenId(openid);
  103. if (null == taPersons || taPersons.size() != 1) {
  104. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  105. }
  106. TaPerson taPerson = taPersons.get(0);
  107. IPage<TaRecommendCustomer> page = new Page<>();
  108. page.setCurrent(pageNumber);
  109. page.setSize(pageSize);
  110. QueryWrapper<TaRecommendCustomer> query = new QueryWrapper<>();
  111. query.eq("realty_consultant", taPerson.getPersonId());
  112. query.like(null != keywords && "".equals(keywords.trim()), "name", keywords);
  113. query.orderByDesc("report_date");
  114. IPage<TaRecommendCustomer> result = taRecommendCustomerMapper.selectPage(page, query);
  115. return ResponseBean.success(result);
  116. }
  117. @Override
  118. public ResponseBean getCustDetail(String id) {
  119. TaRecommendCustomer taRecommendCustomer = taRecommendCustomerMapper.selectById(id);
  120. if (!StringUtils.isEmpty(taRecommendCustomer.getRealtyConsultant())) {
  121. TaPerson taPerson = taPersonMapper.selectById(taRecommendCustomer.getRealtyConsultant());
  122. if (null != taPerson) {
  123. TaUser user = userService.getById(taPerson.getUserId());
  124. taRecommendCustomer.setConsultants(new HashMap<String, Object>() {{
  125. put("name", user.getUserName());
  126. put("phone", user.getPhone());
  127. put("photo", user.getPhoto());
  128. }});
  129. }
  130. }
  131. return ResponseBean.success(taRecommendCustomer);
  132. }
  133. @Override
  134. public ResponseBean updateCustByJSON(String paramStr) {
  135. JSONObject params = JSONObject.parseObject(paramStr);
  136. if (null == params) {
  137. return ResponseBean.error("解析参数失败", ResponseBean.ERROR_ILLEGAL_PARAMS);
  138. }
  139. String checkResult = checkCustomerParams(params);
  140. if (null != checkResult) {
  141. return ResponseBean.error(checkResult, ResponseBean.ERROR_MISSING_PARAMS);
  142. }
  143. UpdateWrapper<TaRecommendCustomer> wrapper = new UpdateWrapper<>();
  144. wrapper.eq("customer_id", params.get("id"));
  145. wrapper.set("name", params.get("name"));
  146. wrapper.set("picture", params.get("picture"));
  147. wrapper.set("phone", params.get("phone"));
  148. wrapper.set("sex", params.get("sex"));
  149. wrapper.set("describe", params.get("describe"));
  150. String at = params.getString("appointmentTime");
  151. if (!StringUtils.isEmpty(at)) {
  152. wrapper.set("appointmentTime", DateUtils.day2LocalDateime(at));
  153. }
  154. wrapper.set("vistors", params.get("vistors"));
  155. wrapper.set("explain", params.get("explain"));
  156. wrapper.set("intention", params.get("intention"));
  157. wrapper.set("realtyManageType", params.get("realtyManageType"));
  158. wrapper.set("demandType", params.get("demandType"));
  159. wrapper.set("priceRange", params.get("priceRange"));
  160. wrapper.set("realtyConsultant", params.get("realtyConsultant"));
  161. // todo 需要约定时间格式
  162. // wrapper.set("reportDate", params.get("reportDate"));
  163. String status = params.getString("status");
  164. if (null != status) {
  165. wrapper.set("status", params.get("status"));
  166. }
  167. int row = taRecommendCustomerMapper.update(new TaRecommendCustomer(), wrapper);
  168. if (row <= 0) {
  169. return ResponseBean.error("更新客户信息失败", ResponseBean.ERROR_UNAVAILABLE);
  170. }
  171. return ResponseBean.success("更新客户信息成功");
  172. }
  173. @Override
  174. public synchronized ResponseBean recommendCust(String paramStr, String openid, Integer orgId) {
  175. JSONObject params = JSONObject.parseObject(paramStr);
  176. if (null == params) {
  177. return ResponseBean.error("解析参数失败", ResponseBean.ERROR_ILLEGAL_PARAMS);
  178. }
  179. List<TaPerson> taPersons = getPersonsByOpenId(openid);
  180. if (null == taPersons || taPersons.size() != 1) {
  181. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  182. }
  183. TaPerson taPerson = taPersons.get(0);
  184. String checkResult = checkCustomerParams(params);
  185. if (null != checkResult) {
  186. return ResponseBean.error(checkResult, ResponseBean.ERROR_MISSING_PARAMS);
  187. }
  188. // 报备有 10 天有效期
  189. QueryWrapper<TaRecommendCustomer> queryWrapper = new QueryWrapper<>();
  190. queryWrapper.eq("phone", params.getString("phone"));
  191. queryWrapper.eq("building_id", params.getString("intention"));
  192. queryWrapper.in("verify_status", CommConstant.VERIFY_AGREE, CommConstant.VERIFY_READY);
  193. List<TaRecommendCustomer> result = taRecommendCustomerMapper.selectList(queryWrapper);
  194. if (null != result && result.size() > 0) {
  195. return ResponseBean.error("当前客户已被推荐, 不能再次推荐", ResponseBean.ERROR_ILLEGAL_PARAMS);
  196. }
  197. TaRecommendCustomer taRecommendCustomer = new TaRecommendCustomer();
  198. taRecommendCustomer.setName(params.getString("name"));
  199. taRecommendCustomer.setPicture(params.getString("picture"));
  200. taRecommendCustomer.setPhone(params.getString("phone"));
  201. taRecommendCustomer.setSex(params.getInteger("sex"));
  202. taRecommendCustomer.setDescribe(params.getString("describe"));
  203. taRecommendCustomer.setRecommendPerson(params.getString("recommendPerson"));
  204. taRecommendCustomer.setBuildingId(params.getString("intention"));
  205. taRecommendCustomer.setRealtyConsultant(params.getString("realtyConsultant"));
  206. taRecommendCustomer.setReportRecommendStatus(CommConstant.RECOMMENDED);
  207. taRecommendCustomer.setVerifyStatus(CommConstant.VERIFY_READY);
  208. taRecommendCustomer.setCreateDate(LocalDateTime.now());
  209. taRecommendCustomer.setReportDate(LocalDateTime.now());
  210. taRecommendCustomer.setOrgId(orgId);
  211. QueryWrapper<TaPerson> personQueryWrapper = new QueryWrapper<>();
  212. personQueryWrapper.eq("org_id", orgId);
  213. personQueryWrapper.eq("phone", params.getString("phone"));
  214. TaPerson currentPerson = taPersonMapper.selectOne(personQueryWrapper);
  215. if (null != currentPerson) {
  216. taRecommendCustomer.setPersonId(currentPerson.getPersonId());
  217. }
  218. // 时间格式 yyyy-MM-dd
  219. String at = params.getString("appointmentTime");
  220. if (!StringUtils.isEmpty(at)) {
  221. taRecommendCustomer.setAppointmentTime(DateUtils.dayToLocalDateime(at));
  222. }
  223. // taRecommendCustomer.setAppointmentTime((String) params.get("appointmentTime"));
  224. taRecommendCustomer.setVisiteNum(params.getInteger("visiteNum"));
  225. TaBuilding building = taBuildingMapper.selectById(params.getString("intention"));
  226. taRecommendCustomer.setIntention(building.getBuildingName());
  227. taRecommendCustomer.setRealtyManageType(params.getString("realtyManageType"));
  228. taRecommendCustomer.setDemandType(params.getString("demandType"));
  229. taRecommendCustomer.setPriceRange(params.getString("priceRange"));
  230. taRecommendCustomer.setEntryType(CommConstant.ENTRY_INPUT);
  231. // taRecommendCustomer.setVerifyStatus(CommConstant.VERIFY_READY);
  232. String status = params.getString("status");
  233. int statusInt = 0;
  234. if (StringUtils.isEmpty(status)) {
  235. taRecommendCustomer.setStatus(statusInt);
  236. } else {
  237. taRecommendCustomer.setStatus(Integer.parseInt(status));
  238. }
  239. taRecommendCustomer.setRecommendPerson(taPerson.getPersonId());
  240. int row = taRecommendCustomerMapper.insert(taRecommendCustomer);
  241. if (row < 1) {
  242. return ResponseBean.error("推荐客户失败", ResponseBean.ERROR_UNAVAILABLE);
  243. }
  244. // // 找到销售经理,并推送消息
  245. // TaPerson saleMan = taPersonMapper.getSalesExecutive();
  246. // if (null != saleMan && !StringUtils.isEmpty(saleMan.getMiniOpenid())) {
  247. // // 发送消息
  248. // iMiniAppService.sendNewCustomerMessage(saleMan.getMiniOpenid(), CommConstant.MINIAPP_INDEX, taRecommendCustomer.getName(), taRecommendCustomer.getPhone(), "", taPerson.getName());
  249. // }
  250. return ResponseBean.success(taRecommendCustomer);
  251. }
  252. @Override
  253. public ResponseBean reportCust(String paramStr, String openid, Integer orgId) {
  254. JSONObject params = JSONObject.parseObject(paramStr);
  255. if (null == params) {
  256. return ResponseBean.error("解析参数失败", ResponseBean.ERROR_ILLEGAL_PARAMS);
  257. }
  258. List<TaPerson> taPersons = getPersonsByOpenId(openid);
  259. if (null == taPersons || taPersons.size() != 1) {
  260. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  261. }
  262. TaPerson taPerson = taPersons.get(0);
  263. // String checkResult = checkCustomerParams(params);
  264. // if (null != checkResult) {
  265. // return ResponseBean.error(checkResult, ResponseBean.ERROR_MISSING_PARAMS);
  266. // }
  267. if (StringUtils.isEmpty(params.getString("realtyConsultant"))) {
  268. return ResponseBean.error("置业顾问不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
  269. }
  270. // 查找置业顾问对应的 TaPerson 及 TaUser
  271. TaPerson consultantPerson = taPersonMapper.selectById(params.getString("realtyConsultant"));
  272. TaUser consultantUser = null;
  273. if (null == consultantPerson) {
  274. consultantUser = taUserMapper.selectById(params.getString("realtyConsultant"));
  275. if (null != consultantUser && null != consultantUser.getUserId() && consultantUser.getUserId() > 0) {
  276. QueryWrapper<TaPerson> query = new QueryWrapper<>();
  277. query.eq("org_id", consultantUser.getOrgId());
  278. query.eq("user_id", consultantUser.getUserId());
  279. query.last("limit 1");
  280. consultantPerson = taPersonMapper.selectOne(query);
  281. }
  282. } else {
  283. consultantUser = taUserMapper.selectById(consultantPerson.getUserId());
  284. }
  285. if (null == consultantUser || consultantUser.getStatus() != CommConstant.STATUS_NORMAL) {
  286. return ResponseBean.error("置业顾问不存在或已被注销", ResponseBean.ERROR_UNAVAILABLE);
  287. }
  288. // 如果置业顾问还没有绑定小程序
  289. if (null == consultantPerson) {
  290. consultantPerson = new TaPerson();
  291. }
  292. TaRecommendCustomer taRecommendCustomer = new TaRecommendCustomer();
  293. taRecommendCustomer.setOrgId(orgId);
  294. taRecommendCustomer.setName(taPerson.getNickname());
  295. taRecommendCustomer.setPicture(taPerson.getAvatarurl());
  296. taRecommendCustomer.setPhone(params.getString("phone"));
  297. taRecommendCustomer.setSex(null == taPerson.getGender() ? null : ("1".equals(taPerson.getGender()) ? 1 : 2));
  298. // taRecommendCustomer.setDescribe(params.getString("describe"));
  299. taRecommendCustomer.setRealtyConsultant(consultantUser.getUserId().toString());
  300. //如果没有传building_id的情况构造building_id
  301. if (StringUtils.isEmpty(params.getString("buildingId")) && !StringUtils.isEmpty(params.getString("realtyConsultant"))) {
  302. QueryWrapper<TaPersonBuilding> taPersonBuildingQueryWrapper = new QueryWrapper<>();
  303. taPersonBuildingQueryWrapper.eq("person_id", consultantPerson.getPersonId()).or().eq("user_id", consultantUser.getUserId());
  304. List<TaPersonBuilding> taPersonBuildingList = taPersonBuildingMapper.selectList(taPersonBuildingQueryWrapper);
  305. if (taPersonBuildingList.size() > 0) {
  306. params.put("buildingId", taPersonBuildingList.get(0).getBuildingId());
  307. }
  308. }
  309. taRecommendCustomer.setBuildingId(params.getString("buildingId"));
  310. TaBuilding building = taBuildingMapper.selectById(params.getString("buildingId"));
  311. taRecommendCustomer.setIntention(building.getBuildingName());
  312. taRecommendCustomer.setReportRecommendStatus(CommConstant.VERIFY_AGREE);
  313. taRecommendCustomer.setCreateDate(LocalDateTime.now());
  314. taRecommendCustomer.setReportDate(LocalDateTime.now());
  315. taRecommendCustomer.setPersonId(taPerson.getPersonId());
  316. // 时间格式 yyyy-MM-dd
  317. // String at = params.getString("appointmentTime");
  318. // if (!StringUtils.isEmpty(at)) {
  319. // taRecommendCustomer.setAppointmentTime(DateUtils.day2LocalDateime(at));
  320. // }ni
  321. // taRecommendCustomer.setAppointmentTime((String) params.get("appointmentTime"));
  322. // taRecommendCustomer.setVisiteNum(params.getInteger("visiteNum"));
  323. // taRecommendCustomer.setIntention(params.getString("intention"));
  324. // taRecommendCustomer.setRealtyManageType(params.getString("realtyManageType"));
  325. // taRecommendCustomer.setDemandType(params.getString("demandType"));
  326. // taRecommendCustomer.setPriceRange(params.getString("priceRange"));
  327. taRecommendCustomer.setEntryType(CommConstant.ENTRY_VERIFY);
  328. taRecommendCustomer.setVerifyStatus(CommConstant.VERIFY_AGREE);
  329. taRecommendCustomer.setStatus(CommConstant.CUSTOMER_REPORT);
  330. QueryWrapper<TaPerson> personQueryWrapper = new QueryWrapper<>();
  331. personQueryWrapper.eq("org_id", orgId);
  332. personQueryWrapper.eq("phone", params.getString("phone"));
  333. TaPerson currentPerson = taPersonMapper.selectOne(personQueryWrapper);
  334. if (null != currentPerson) {
  335. if (currentPerson.getPersonType().equals(CommConstant.PERSON_REALTY_CONSULTANT)) {
  336. return ResponseBean.error("置业顾问不可以绑定置业顾问", ResponseBean.ERROR_ILLEGAL_PARAMS);
  337. }
  338. taRecommendCustomer.setPersonId(currentPerson.getPersonId());
  339. }
  340. // String status = params.getString("status");
  341. // if (null == status) status = "1";
  342. // taRecommendCustomer.setStatus(status);
  343. // taRecommendCustomer.setRecommendPerson(taPerson.getPersonId());
  344. taRecommendCustomer.setRecommendPerson(params.getString("realtyConsultant"));
  345. // 插入客户来源逻辑, 防止下面 if 里面的 return
  346. // 首次报备的客户, 写入客户来源表
  347. TaCustomerFrom customerFrom = null;
  348. if (!StringUtils.isEmpty(taRecommendCustomer.getBuildingId())) {
  349. Map<String, Number> counter = taCustomerFromMapper.countPerson(taRecommendCustomer.getOrgId(), taRecommendCustomer.getBuildingId() ,taRecommendCustomer.getPersonId());
  350. boolean orgFirst = counter.get("orgCount").longValue() < 1;
  351. boolean projectFirst = counter.get("projectCount").longValue() < 1;
  352. if (projectFirst) {
  353. TaBuilding taBuilding = taBuildingMapper.selectById(taRecommendCustomer.getBuildingId());
  354. customerFrom = new TaCustomerFrom();
  355. customerFrom.setPersonId(taRecommendCustomer.getPersonId());
  356. customerFrom.setCustomerId(taRecommendCustomer.getCustomerId());
  357. customerFrom.setPersonName(taRecommendCustomer.getName());
  358. customerFrom.setOrgId(taRecommendCustomer.getOrgId());
  359. // customerFrom.setSceneId(sceneId);
  360. customerFrom.setIsOrgFirst(orgFirst);
  361. customerFrom.setIsProjectFirst(true);
  362. customerFrom.setCreateDate(LocalDateTime.now());
  363. customerFrom.setBuildingId(taRecommendCustomer.getBuildingId());
  364. customerFrom.setBuildingName(taBuilding.getBuildingName());
  365. customerFrom.setSharePersonId(consultantPerson.getPersonId());
  366. customerFrom.setSharePersonName(consultantUser.getUserName());
  367. // 半小时内如果有当前人员的分享记录
  368. // 那么就认为当前客户是通过分享进入的
  369. TaSharePersonFrom personShare = taSharePersonFromMapper.getConsultantLastShare(taRecommendCustomer.getOrgId(),
  370. taRecommendCustomer.getBuildingId(),
  371. consultantUser.getUserId(),
  372. taRecommendCustomer.getPersonId());
  373. if (null != personShare) {
  374. // 强制转换 targetType
  375. String targetType = personShare.getTargetType().replace("_share", "").replace("dynamic", "activity");
  376. customerFrom.setTargetType(targetType);
  377. customerFrom.setTargetId(personShare.getTargetId());
  378. customerFrom.setTargetName(personShare.getTargetName());
  379. }
  380. taCustomerFromMapper.insert(customerFrom);
  381. }
  382. }
  383. // 报备有 10 天有效期
  384. QueryWrapper<TaRecommendCustomer> queryWrapper = new QueryWrapper<>();
  385. queryWrapper.eq("phone", taRecommendCustomer.getPhone());
  386. queryWrapper.eq("building_id", taRecommendCustomer.getBuildingId());
  387. queryWrapper.eq("org_id", taRecommendCustomer.getOrgId());
  388. queryWrapper.in("verify_status", CommConstant.VERIFY_AGREE, CommConstant.VERIFY_READY);
  389. List<TaRecommendCustomer> result = taRecommendCustomerMapper.selectList(queryWrapper);
  390. if (null != result && result.size() > 0) {
  391. String conName = "";
  392. TaPerson conPerson = taPersonMapper.selectById(result.get(0).getRealtyConsultant());
  393. if (null != conPerson) {
  394. if (null != consultantPerson && consultantPerson.getPersonId().equals(conPerson.getPersonId())) {
  395. return ResponseBean.success("bound");
  396. }
  397. conName = conPerson.getName();
  398. } else {
  399. TaUser conUser = userService.getById(result.get(0).getRealtyConsultant());
  400. if (null != conUser) {
  401. if (consultantUser.getUserId().equals(conUser.getUserId())) {
  402. return ResponseBean.success("bound");
  403. }
  404. conName = conUser.getUserName();
  405. }
  406. }
  407. return ResponseBean.error("您在当前项目的置业顾问是:" + conName, ResponseBean.ERROR_ILLEGAL_PARAMS);
  408. }
  409. int row = taRecommendCustomerMapper.insert(taRecommendCustomer);
  410. if (row < 1) {
  411. return ResponseBean.error("报备客户失败", ResponseBean.ERROR_UNAVAILABLE);
  412. }
  413. if (null != customerFrom) {
  414. customerFrom.setCustomerId(taRecommendCustomer.getCustomerId());
  415. taCustomerFromMapper.updateById(customerFrom);
  416. }
  417. // 找到销售经理,并推送消息
  418. // TaPerson saleMan = taPersonMapper.getSalesExecutive();
  419. // if (null != saleMan && !StringUtils.isEmpty(saleMan.getMiniOpenid())) {
  420. // // 发送消息
  421. // iMiniAppService.sendNewCustomerMessage(saleMan, CommConstant.MINIAPP_INDEX, taRecommendCustomer.getName(), taRecommendCustomer.getPhone(), "", taPerson.getName());
  422. // }
  423. return ResponseBean.success(taRecommendCustomer);
  424. }
  425. String checkCustomerParams(JSONObject params) {
  426. if (null == params.getString("name")) {
  427. return "请设置客户姓名";
  428. }
  429. if (null == params.getString("phone")) {
  430. return "请设置客户电话";
  431. }
  432. if (null == params.getInteger("sex")) {
  433. return "请设置客户性别";
  434. }
  435. if (null == params.getString("intention")) {
  436. return "请设置意向楼盘";
  437. }
  438. return null;
  439. }
  440. List<TaPerson> getPersonsByOpenId(String openid) {
  441. return taPersonMapper.getPersonByOpenId(openid);
  442. }
  443. @Override
  444. public IPage<TaRecommendCustomer> getUnSignedCustomerList(int pageNumber, int pageSize, String building, String personId) {
  445. QueryWrapper<TaRecommendCustomer> queryWrapper = new QueryWrapper<>();
  446. // queryWrapper.eq("building_id",building);
  447. queryWrapper.eq("realty_consultant", personId);
  448. queryWrapper.gt("status", CommConstant.MESSAGE_UNREAD);
  449. IPage<TaRecommendCustomer> page = new Page<>(pageNumber, pageSize);
  450. return taRecommendCustomerMapper.selectPage(page, queryWrapper);
  451. }
  452. @Override
  453. public IPage getCustomerList(Integer status, int pageNumber, int pageSize, String building, String name, String tel, String consultName, String consultTel, String entryType, String verifyStatus, Integer sex, String customerType, Integer orgId, List<TaPersonBuilding> taPersonBuildingList, String sceneType, String startCreateDate, String endCreateDate, String sharePersonName) {
  454. if (CommConstant.CUTOMER_TYPE_PUBLIC.equals(customerType)) {
  455. // 公客
  456. IPage<TaPerson> page = new Page<>(pageNumber, pageSize);
  457. // 公客就不用 buildingId 进行查询
  458. return taRecommendCustomerMapper.getPublicCustomerList(page, name, tel, entryType, verifyStatus, sex, orgId, consultTel, sceneType, taPersonBuildingList, building, startCreateDate, endCreateDate, sharePersonName);
  459. } else {
  460. // 私客
  461. IPage<TaRecommendCustomer> page = new Page<>(pageNumber, pageSize);
  462. return taRecommendCustomerMapper.getCustomerList(page, building, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId, status, taPersonBuildingList, sceneType, startCreateDate, endCreateDate, sharePersonName);
  463. }
  464. }
  465. @Override
  466. public IPage<TaPerson> getIndependentAgents(int pageNumber, int pageSize, String name, String tel, Integer orgId) {
  467. IPage<TaPerson> page = new Page<>(pageNumber, pageSize);
  468. return taRecommendCustomerMapper.getIndependentAgents(page, name, tel, orgId);
  469. }
  470. @Override
  471. public IPage<TaRecommendCustomer> getRecCustomerList(int pageNumber, int pageSize, String building, String name, String tel, String consultName, String consultTel, String entryType, String verifyStatus, Integer sex, Integer orgId, List<TaPersonBuilding> taPersonBuildingList) {
  472. IPage<TaRecommendCustomer> page = new Page<>(pageNumber, pageSize);
  473. return taRecommendCustomerMapper.getRecCustomerList(page, building, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId, taPersonBuildingList);
  474. }
  475. @Override
  476. public IPage<TaRecommendCustomer> getRepCustomerList(int pageNumber, int pageSize, String building, String name, String tel, String consultName, String consultTel, String entryType, String verifyStatus, Integer sex, Integer orgId, List<TaPersonBuilding> taPersonBuildingList) {
  477. IPage<TaRecommendCustomer> page = new Page<>(pageNumber, pageSize);
  478. return taRecommendCustomerMapper.getRepCustomerList(page, building, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId, taPersonBuildingList);
  479. }
  480. @Override
  481. public TaRecommendCustomer getCustomerById(String customerId) {
  482. return taRecommendCustomerMapper.getCustomerById(customerId);
  483. }
  484. @Override
  485. public TaRecommendCustomer getCustomerDetail(String customerId, int pageNumber, int pageSize, List<TaPersonBuilding> taPersonBuildingList, String buildingId) {
  486. String personId = taRecommendCustomerMapper.getCustomerById(customerId).getPersonId();
  487. TaRecommendCustomer taRecommendCustomer = taRecommendCustomerMapper.getCustomerDetail(customerId, personId);
  488. TaPerson person = taPersonMapper.selectById(personId);
  489. if (!StringUtils.isEmpty(personId)) {
  490. IPage<TaPersonVisitRecord> page = new Page<>(pageNumber, pageSize);
  491. IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page, personId, taPersonBuildingList, buildingId);
  492. List<TaPersonVisitRecord> records = taPersonVisitRecordIPage.getRecords();
  493. records.forEach(e -> {
  494. //获取活动标题
  495. if ("activity".equals(e.getEventType()) && null != e.getTargetId()) {
  496. TaBuildingDynamic taBuildingDynamic = taBuildingDynamicMapper.selectById(e.getTargetId());
  497. if (null != taBuildingDynamic) {
  498. e.setActivityName(taBuildingDynamic.getTitle());
  499. }
  500. }
  501. //获取拼团标题
  502. if ("group".equals(e.getEventType()) && null != e.getTargetId()) {
  503. TaShareActivity taShareActivity = taShareActivityMapper.selectById(e.getTargetId());
  504. if (null != taShareActivity) {
  505. e.setActivityName(taShareActivity.getActivityName());
  506. }
  507. }
  508. //获取助力标题
  509. if ("help".equals(e.getEventType()) && null != e.getTargetId()) {
  510. HelpActivity helpActivity = helpActivityMapper.selectById(e.getTargetId());
  511. if (null != helpActivity) {
  512. e.setActivityName(helpActivity.getTitle());
  513. }
  514. }
  515. //获取咨询标题
  516. if ("news".equals(e.getEventType()) && null != e.getTargetId()) {
  517. TaNews taNews = taNewsMapper.selectById(e.getTargetId());
  518. if (null != taNews) {
  519. e.setActivityName(taNews.getNewsName());
  520. }
  521. }
  522. //获取H5活动标题
  523. if ("h5".equals(e.getEventType()) && null != e.getTargetId()) {
  524. TaDrainage taDrainage = taDrainageMapper.selectById(e.getTargetId());
  525. if (null != taDrainage) {
  526. e.setActivityName(taDrainage.getName());
  527. }
  528. }
  529. });
  530. taPersonVisitRecordIPage.setRecords(records);
  531. taRecommendCustomer.setVisitRecords(taPersonVisitRecordIPage);
  532. taRecommendCustomer.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
  533. taRecommendCustomer.setIntentions(taRecommendCustomerMapper.getCustomerIntentions(personId, taPersonBuildingList));
  534. }
  535. if (!StringUtils.isEmpty(taRecommendCustomer.getRealtyConsultant())) {
  536. TaPerson consultant = taPersonMapper.getById(taRecommendCustomer.getRealtyConsultant());
  537. TaUser user = new TaUser();
  538. if (null == consultant) {
  539. user = userService.getById(taRecommendCustomer.getRealtyConsultant());
  540. } else {
  541. user = userService.getById(consultant.getUserId());
  542. }
  543. if (null != user) {
  544. List<String> projects = taPersonMapper.getUserProjects(user.getUserId());
  545. if (projects.size() > 0) {
  546. user.setProjects(projects);
  547. }
  548. taRecommendCustomer.setConsultant(user);
  549. }
  550. }
  551. //构造来源类型
  552. taRecommendCustomer.setPersonFrom("");
  553. if (null != person) {
  554. Map<String, String> geoInfo = new HashMap<>();
  555. geoInfo.put("provience", person.getProvince());
  556. geoInfo.put("country", person.getCountry());
  557. TdCity city = cityMapper.selectById(person.getCity());
  558. if (null != city) {
  559. geoInfo.put("city", city.getName());
  560. } else {
  561. geoInfo.put("city", "未知");
  562. }
  563. taRecommendCustomer.setGeoInfo(geoInfo);
  564. QueryWrapper<TaPersonFromRecord> queryWrapper = new QueryWrapper<>();
  565. queryWrapper.eq("org_id", person.getOrgId());
  566. queryWrapper.eq("person_id", person.getPersonId());
  567. queryWrapper.eq("is_first_time", 1);
  568. List<TaPersonFromRecord> taPersonFromRecords = taPersonFromRecordMapper.selectList(queryWrapper);
  569. if (taPersonFromRecords.size() > 0) {
  570. QueryWrapper<TdWxDict> tdWxDictQueryWrapper = new QueryWrapper<>();
  571. tdWxDictQueryWrapper.eq("scene_id", taPersonFromRecords.get(0).getSceneId());
  572. TdWxDict tdWxDict = tdWxDictMapper.selectOne(tdWxDictQueryWrapper);
  573. taRecommendCustomer.setPersonFrom(null != tdWxDict ? tdWxDict.getSceneAlias() : "");
  574. }
  575. }
  576. return taRecommendCustomer;
  577. }
  578. @Override
  579. public TaPerson getPublicCustomerDetail(String personId, int pageNumber, int pageSize, List<TaPersonBuilding> taPersonBuildingList, String buildingId) {
  580. TaPerson taPerson = taPersonMapper.getById(personId);
  581. if (!StringUtils.isEmpty(personId)) {
  582. IPage<TaPersonVisitRecord> page = new Page<>(pageNumber, pageSize);
  583. IPage<TaPersonVisitRecord> taPersonVisitRecordIPage = taPersonVisitRecordMapper.visitRecordByPersonId(page, personId, taPersonBuildingList, buildingId);
  584. List<TaPersonVisitRecord> records = taPersonVisitRecordIPage.getRecords();
  585. records.forEach(e -> {
  586. //获取活动标题
  587. if ("activity".equals(e.getEventType()) && null != e.getTargetId()) {
  588. TaBuildingDynamic taBuildingDynamic = taBuildingDynamicMapper.selectById(e.getTargetId());
  589. if (null != taBuildingDynamic) {
  590. e.setActivityName(taBuildingDynamic.getTitle());
  591. }
  592. }
  593. //获取拼团标题
  594. if ("group".equals(e.getEventType()) && null != e.getTargetId()) {
  595. TaShareActivity taShareActivity = taShareActivityMapper.selectById(e.getTargetId());
  596. if (null != taShareActivity) {
  597. e.setActivityName(taShareActivity.getActivityName());
  598. }
  599. }
  600. //获取助力标题
  601. if ("help".equals(e.getEventType()) && null != e.getTargetId()) {
  602. HelpActivity helpActivity = helpActivityMapper.selectById(e.getTargetId());
  603. if (null != helpActivity) {
  604. e.setActivityName(helpActivity.getTitle());
  605. }
  606. }
  607. //获取咨询标题
  608. if ("news".equals(e.getEventType()) && null != e.getTargetId()) {
  609. TaNews taNews = taNewsMapper.selectById(e.getTargetId());
  610. if (null != taNews) {
  611. e.setActivityName(taNews.getNewsName());
  612. }
  613. }
  614. //获取H5活动标题
  615. if ("h5".equals(e.getEventType()) && null != e.getTargetId()) {
  616. TaDrainage taDrainage = taDrainageMapper.selectById(e.getTargetId());
  617. if (null != taDrainage) {
  618. e.setActivityName(taDrainage.getName());
  619. }
  620. }
  621. });
  622. taPersonVisitRecordIPage.setRecords(records);
  623. taPerson.setVisitRecords(taPersonVisitRecordIPage);
  624. taPerson.setVisitTimes(taPersonVisitRecordIPage.getRecords().size());
  625. taPerson.setIntentions(taRecommendCustomerMapper.getCustomerIntentions(personId, taPersonBuildingList));
  626. taPerson.setDuration(taPersonVisitRecordMapper.getDurationByPersonId(personId));
  627. taPerson.setVisitTime(taPersonVisitRecordMapper.getFirstVisitTimeByPersonId(personId));
  628. TdCity city = cityMapper.selectById(taPerson.getCity());
  629. if (null != city) {
  630. taPerson.setCity(city.getName());
  631. }
  632. //构造来源类型
  633. taPerson.setPersonFrom("");
  634. if (null != taPerson) {
  635. QueryWrapper<TaPersonFromRecord> queryWrapper = new QueryWrapper<>();
  636. queryWrapper.eq("org_id", taPerson.getOrgId());
  637. queryWrapper.eq("person_id", taPerson.getPersonId());
  638. queryWrapper.eq("is_first_time", 1);
  639. List<TaPersonFromRecord> taPersonFromRecords = taPersonFromRecordMapper.selectList(queryWrapper);
  640. if (taPersonFromRecords.size() > 0) {
  641. QueryWrapper<TdWxDict> tdWxDictQueryWrapper = new QueryWrapper<>();
  642. tdWxDictQueryWrapper.eq("scene_id", taPersonFromRecords.get(0).getSceneId());
  643. TdWxDict tdWxDict = tdWxDictMapper.selectOne(tdWxDictQueryWrapper);
  644. taPerson.setPersonFrom(null != tdWxDict ? tdWxDict.getSceneAlias() : "");
  645. }
  646. }
  647. }
  648. return taPerson;
  649. }
  650. @Override
  651. public IPage<TaRecommendCustomer> getCustomersIRecommended(int pageNumber, int pageSize, String customerId, Integer orgId, List<TaPersonBuilding> taPersonBuildingList) {
  652. QueryWrapper<TaRecommendCustomer> queryWrapper = new QueryWrapper<>();
  653. // todo
  654. // 此处可能不是 person_id 而是 recommend_person
  655. IPage<TaRecommendCustomer> page = new Page<>(pageNumber, pageSize);
  656. // queryWrapper.eq("recommend_person",customerId);
  657. //// queryWrapper.eq("building_id",building);
  658. // queryWrapper.eq("status", CommConstant.VERIFY_AGREE);
  659. // queryWrapper.eq("org_id", orgId);
  660. return taRecommendCustomerMapper.getCustomersIRecommended(page, customerId, CommConstant.STATUS_NORMAL, orgId, taPersonBuildingList);
  661. }
  662. @Override
  663. public TaRecommendCustomer newByPerson(TaPerson person) {
  664. // 没有手机号, 暂时不生成客户信息
  665. String phone = StringUtils.ifNull(person.getTel(), person.getPhone());
  666. if (StringUtils.isEmpty(phone)) {
  667. return null;
  668. }
  669. // 已经存在的, 随机返回一条记录
  670. List<TaRecommendCustomer> custs = getCustomerByPhone(phone, person.getOrgId());
  671. if (null != custs && custs.size() > 0) {
  672. return custs.get(0);
  673. }
  674. TaRecommendCustomer cust = new TaRecommendCustomer();
  675. cust.setName(StringUtils.ifNull(person.getName(), person.getNickname()));
  676. cust.setSex(null == person.getSex() ? str2Int(person.getGender()) : person.getSex());
  677. cust.setPhone(phone);
  678. cust.setPicture(StringUtils.ifNull(person.getPhoto(), person.getAvatarurl()));
  679. cust.setCountry(person.getCountry());
  680. cust.setCity(person.getCity());
  681. cust.setProvince(person.getProvince());
  682. // 审核同意
  683. cust.setVerifyStatus(CommConstant.VERIFY_AGREE);
  684. // 报备状态
  685. cust.setStatus(CommConstant.CUSTOMER_REPORT);
  686. // 当前日期
  687. cust.setReportDate(LocalDateTime.now());
  688. if (taRecommendCustomerMapper.insert(cust) > 0) {
  689. return cust;
  690. } else {
  691. log.error("依据人员新增推荐客户失败");
  692. return null;
  693. }
  694. }
  695. @Override
  696. public ResponseBean batchConsultantAssist(TaUser taUser, Integer orgId) {
  697. if (CollectionUtils.isNotEmpty(taUser.getPersonIds())) {
  698. for (TaPerson taPerson : taUser.getPersonIds()) {
  699. consultantAssist(taUser, taPerson.getPersonId(), orgId);
  700. }
  701. }
  702. return ResponseBean.success("操作成功");
  703. }
  704. @Override
  705. public ResponseBean consultantAssist(TaUser taUser, String personId, Integer orgId) {
  706. TaPerson taPerson = taPersonMapper.getById(personId);
  707. TaPerson recommendPerson = taPersonMapper.selectById(personId);
  708. QueryWrapper<TaUser> queryWrapper = new QueryWrapper();
  709. queryWrapper.eq("user_id", taUser.getUserId());
  710. TaUser userInfo = taUserMapper.selectOne(queryWrapper);
  711. QueryWrapper<TaPersonBuilding> taPersonBuildingQueryWrapper = new QueryWrapper();
  712. taPersonBuildingQueryWrapper.eq("user_id", taUser.getUserId());
  713. TaPersonBuilding taPersonBuilding = taPersonBuildingMapper.selectOne(taPersonBuildingQueryWrapper);
  714. if (null == userInfo || userInfo.getStatus() != CommConstant.STATUS_NORMAL) {
  715. return ResponseBean.error("置业顾问不存在或已被注销", ResponseBean.ERROR_UNAVAILABLE);
  716. }
  717. TaRecommendCustomer taRecommendCustomer = new TaRecommendCustomer();
  718. taRecommendCustomer.setOrgId(orgId);
  719. taRecommendCustomer.setName(taPerson.getNickname());
  720. taRecommendCustomer.setPicture(taPerson.getAvatarurl());
  721. taRecommendCustomer.setPhone(taPerson.getPhone());
  722. taRecommendCustomer.setSex(null == taPerson.getGender() ? null : ("1".equals(taPerson.getGender()) ? 1 : 2));
  723. taRecommendCustomer.setRealtyConsultant(userInfo.getUserId().toString());
  724. taRecommendCustomer.setBuildingId(taPersonBuilding.getBuildingId());
  725. TaBuilding building = taBuildingMapper.selectById(taPersonBuilding.getBuildingId());
  726. taRecommendCustomer.setIntention(building.getBuildingName());
  727. taRecommendCustomer.setReportRecommendStatus(CommConstant.VERIFY_AGREE);
  728. taRecommendCustomer.setCreateDate(LocalDateTime.now());
  729. taRecommendCustomer.setReportDate(LocalDateTime.now());
  730. taRecommendCustomer.setPersonId(taPerson.getPersonId());
  731. taRecommendCustomer.setEntryType(CommConstant.ENTRY_VERIFY);
  732. taRecommendCustomer.setVerifyStatus(CommConstant.VERIFY_AGREE);
  733. taRecommendCustomer.setStatus(CommConstant.CUSTOMER_REPORT);
  734. taRecommendCustomer.setPersonId(personId);
  735. taRecommendCustomer.setRecommendPerson(recommendPerson == null ? "" : recommendPerson.getRecommendPerson());
  736. int row = taRecommendCustomerMapper.insert(taRecommendCustomer);
  737. if (row < 1) {
  738. return ResponseBean.error("分配客户失败", ResponseBean.ERROR_UNAVAILABLE);
  739. }
  740. return ResponseBean.success(taRecommendCustomer);
  741. }
  742. private List<TaRecommendCustomer> getCustomerByPhone(String phone, Integer orgId) {
  743. QueryWrapper<TaRecommendCustomer> queryWrapper = new QueryWrapper<>();
  744. queryWrapper.eq("org_id", orgId);
  745. queryWrapper.eq("phone", phone);
  746. queryWrapper.gt("status", CommConstant.STATUS_DELETE);
  747. queryWrapper.orderByDesc("report_date");
  748. List<TaRecommendCustomer> custs = taRecommendCustomerMapper.selectList(queryWrapper);
  749. return custs;
  750. }
  751. private Integer str2Int(String str) {
  752. if (null == str) {
  753. return null;
  754. }
  755. try {
  756. return Integer.valueOf(str);
  757. } catch (Exception e) {
  758. return 0;
  759. }
  760. }
  761. @Override
  762. public List<ExcelRecommendCustomer> getRecCustomerExport(Integer orgId, Integer pageCode, Integer pageSize, List<TaPersonBuilding> taPersonBuildingList) {
  763. return taRecommendCustomerMapper.getRecCustomerExport(orgId, pageCode, pageSize, taPersonBuildingList);
  764. }
  765. @Override
  766. public Integer getRecCustomerExportCount(Integer orgId, List<TaPersonBuilding> taPersonBuildingList) {
  767. return taRecommendCustomerMapper.getRecCustomerExportCount(orgId, taPersonBuildingList);
  768. }
  769. @Override
  770. public Integer getRepCustomerReportCount(String building, String name, String tel, String consultName, String consultTel, String entryType, String verifyStatus, Integer sex, Integer orgId, List<TaPersonBuilding> taPersonBuildingList) {
  771. return taRecommendCustomerMapper.getRepCustomerReportCount(building, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId, taPersonBuildingList);
  772. }
  773. @Override
  774. public List<ReporRecommendCustomer> getRepCustomerReportExport(String building, String name, String tel, String consultName, String consultTel, String entryType, String verifyStatus, Integer sex, Integer orgId, Integer pageCode, Integer pageSize, List<TaPersonBuilding> taPersonBuildingList) {
  775. return taRecommendCustomerMapper.getRepCustomerReportExport(building, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId, pageCode, pageSize, taPersonBuildingList);
  776. }
  777. @Override
  778. public Integer getIndependentAgentsCount(Integer orgId) {
  779. return taRecommendCustomerMapper.getIndependentAgentsCount(orgId);
  780. }
  781. @Override
  782. public List<AgentsRecommendCustomer> getIndependentAgentsExport(Integer orgId, Integer pageCode, Integer pageSize) {
  783. return taRecommendCustomerMapper.getIndependentAgentsExport(orgId, pageCode, pageSize);
  784. }
  785. /**
  786. * 查询我的客户人数集合
  787. *
  788. * @param openid
  789. * @return
  790. */
  791. @Override
  792. public ResponseBean getMyCustStatistics(String openid) {
  793. List<TaPerson> taPersons = getPersonsByOpenId(openid);
  794. if (null == taPersons || taPersons.size() != 1) {
  795. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  796. }
  797. TaPerson taPerson = taPersons.get(0);
  798. Map<String, Object> map = taRecommendCustomerMapper.getMyCustStatistics(taPerson.getPersonId(), taPerson.getUserId(), taPerson.getOrgId());
  799. return ResponseBean.success(map);
  800. }
  801. /**
  802. * 分页查询我的跟进客户集合
  803. *
  804. * @param pageNumber
  805. * @param pageSize
  806. * @param openid
  807. * @param name
  808. * @param phone
  809. * @param status
  810. * @param startReportDate
  811. * @param endReportDate
  812. * @param startArrivalDate
  813. * @param endArrivalDate
  814. * @return
  815. */
  816. @Override
  817. public ResponseBean getMyCustFollowOrClinch(Integer pageNumber, Integer pageSize, String openid, String type, String name, String phone, Integer status, String startReportDate, String endReportDate, String startArrivalDate, String endArrivalDate) {
  818. List<TaPerson> taPersons = getPersonsByOpenId(openid);
  819. if (null == taPersons || taPersons.size() != 1) {
  820. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  821. }
  822. TaPerson taPerson = taPersons.get(0);
  823. IPage<TaRecommendCustomer> page = new Page<>();
  824. page.setCurrent(pageNumber);
  825. page.setSize(pageSize);
  826. //分页获取跟进客户status != 4的为跟进客户, status = 4的为成交客户 根据type区分 follow 跟进 clinch 成交
  827. IPage<TaRecommendCustomer> result = taRecommendCustomerMapper.getMyCustFollowOrClinch(page, taPerson.getPersonId(), taPerson.getUserId(), taPerson.getOrgId(), type, name, phone, status, startReportDate, endReportDate, startArrivalDate, endArrivalDate);
  828. return ResponseBean.success(result);
  829. }
  830. /**
  831. * 获取盘客工具下我的客户详情
  832. *
  833. * @param customerId
  834. * @param openid
  835. * @return
  836. */
  837. @Override
  838. public ResponseBean getMyCustDetail(String customerId, String openid) {
  839. List<TaPerson> taPersons = getPersonsByOpenId(openid);
  840. if (null == taPersons || taPersons.size() != 1) {
  841. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  842. }
  843. TaPerson taPerson = taPersons.get(0);
  844. TaRecommendCustomer taRecommendCustomer = taRecommendCustomerMapper.getMyCustDetailById(customerId);
  845. //添加跟进行为
  846. addCustomerFpllowUp(taPerson, taRecommendCustomer, "查看客户详情");
  847. return ResponseBean.success(taRecommendCustomer);
  848. }
  849. /**
  850. * 更新我的客户基本信息
  851. *
  852. * @param taRecommendCustomer
  853. * @param openid
  854. * @return
  855. */
  856. @Override
  857. public ResponseBean updateMyCust(TaRecommendCustomer taRecommendCustomer, String openid) {
  858. List<TaPerson> taPersons = getPersonsByOpenId(openid);
  859. if (null == taPersons || taPersons.size() != 1) {
  860. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  861. }
  862. TaPerson taPerson = taPersons.get(0);
  863. taRecommendCustomerMapper.updateById(taRecommendCustomer);
  864. //添加跟进行为
  865. addCustomerFpllowUp(taPerson, taRecommendCustomer, "编辑客户信息");
  866. return ResponseBean.success(taRecommendCustomer);
  867. }
  868. //添加跟进行为
  869. private void addCustomerFpllowUp(TaPerson taPerson, TaRecommendCustomer taRecommendCustomer, String recordType) {
  870. TaCustomerFollowUpRecord taCustomerFollowUpRecord = new TaCustomerFollowUpRecord();
  871. taCustomerFollowUpRecord.setOrgId(taPerson.getOrgId());
  872. taCustomerFollowUpRecord.setCreateDate(LocalDateTime.now());
  873. taCustomerFollowUpRecord.setCustomerId(taRecommendCustomer.getCustomerId());
  874. taCustomerFollowUpRecord.setRecordType(recordType);
  875. taCustomerFollowUpRecord.setFollowerId(taPerson.getPersonId());
  876. taCustomerFollowUpRecord.setCustomerSex(taRecommendCustomer.getSex());
  877. customerFollowUpRecordMapper.insert(taCustomerFollowUpRecord);
  878. }
  879. }