TaRecommendCustomerController.java 43KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874
  1. package com.huiju.estateagents.controller;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.excel.ExcelWriter;
  4. import com.alibaba.excel.write.metadata.WriteSheet;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.huiju.estateagents.base.ResponseBean;
  9. import com.huiju.estateagents.center.taUser.entity.TaUser;
  10. import com.huiju.estateagents.center.taUser.service.ITaUserService;
  11. import com.huiju.estateagents.common.CommConstant;
  12. import com.huiju.estateagents.common.JWTUtils;
  13. import com.huiju.estateagents.common.StringUtils;
  14. import com.huiju.estateagents.entity.*;
  15. import com.huiju.estateagents.event.EventBus;
  16. import com.huiju.estateagents.excel.*;
  17. import com.huiju.estateagents.excel.handler.CustomCellWriteHandler;
  18. import com.huiju.estateagents.mapper.TaPersonBuildingMapper;
  19. import com.huiju.estateagents.mapper.TaRecommendCustomerMapper;
  20. import com.huiju.estateagents.service.ITaPersonService;
  21. import com.huiju.estateagents.service.ITaRecommendCustomerService;
  22. import com.huiju.estateagents.service.TaChannelPersonService;
  23. import com.huiju.estateagents.service.TaChannelService;
  24. import io.swagger.annotations.Api;
  25. import io.swagger.annotations.ApiImplicitParam;
  26. import io.swagger.annotations.ApiImplicitParams;
  27. import io.swagger.annotations.ApiOperation;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.context.ApplicationContext;
  30. import org.springframework.web.bind.annotation.*;
  31. import com.huiju.estateagents.base.BaseController;
  32. import javax.annotation.Resource;
  33. import javax.servlet.http.HttpServletRequest;
  34. import javax.servlet.http.HttpServletResponse;
  35. import java.io.IOException;
  36. import java.time.LocalDateTime;
  37. import java.util.ArrayList;
  38. import java.util.List;
  39. import java.util.Map;
  40. /**
  41. * <p>
  42. * 推荐客户表 前端控制器
  43. * </p>
  44. *
  45. * @author jobob
  46. * @since 2019-05-10
  47. */
  48. @RestController
  49. @RequestMapping("/api")
  50. @Api(value = "项目类型", tags = "项目类型")
  51. public class TaRecommendCustomerController extends BaseController {
  52. @Autowired
  53. ITaRecommendCustomerService taRecommendCustomerService;
  54. @Autowired
  55. ITaPersonService taPersonService;
  56. @Resource
  57. private ApplicationContext applicationContext;
  58. @Autowired
  59. private TaChannelService taChannelService;
  60. @Autowired
  61. private TaChannelPersonService taChannelPersonService;
  62. @Autowired
  63. private TaRecommendCustomerMapper taRecommendCustomerMapper;
  64. @Autowired
  65. private TaPersonBuildingMapper taPersonBuildingMapper;
  66. @Autowired
  67. private ITaPersonService iTaPersonService;
  68. @Autowired
  69. private ITaUserService iTaUserService;
  70. /**
  71. * 我的客户列表
  72. * @param pageNumber
  73. * @param pageSize
  74. * @param keywords
  75. * @param request
  76. * @return
  77. */
  78. @GetMapping("/wx/customer/list")
  79. @ApiOperation(value = "查询我的客户列表", notes = "查询我的客户列表")
  80. @ApiImplicitParams({
  81. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageNumber", paramType = "query",value = "第几页"),
  82. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageSize", paramType = "query",value = "一页多少行"),
  83. @ApiImplicitParam(dataTypeClass = String.class, name = "keywords", paramType = "query",value = "搜索关键字,目前仅支持姓名")
  84. })
  85. public ResponseBean getMyCustList(@RequestParam int pageNumber, @RequestParam int pageSize, String keywords, HttpServletRequest request) {
  86. if (pageNumber < 0 || pageSize < 0) {
  87. return ResponseBean.error("分页参数不正确", ResponseBean.ERROR_ILLEGAL_PARAMS);
  88. }
  89. String openid = getOpenId(request);
  90. return taRecommendCustomerService.getMyCustList(openid, keywords, pageNumber, pageSize);
  91. }
  92. /**
  93. * 我的客户列表
  94. * @param pageNumber
  95. * @param pageSize
  96. * @param keywords
  97. * @param request
  98. * @return
  99. */
  100. @GetMapping("/admin/customer/list/{userId}")
  101. @ApiOperation(value = "查询我的客户列表", notes = "查询我的客户列表")
  102. @ApiImplicitParams({
  103. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageNumber", paramType = "query",value = "第几页"),
  104. @ApiImplicitParam(dataTypeClass = Integer.class, name = "pageSize", paramType = "query",value = "一页多少行"),
  105. @ApiImplicitParam(dataTypeClass = String.class, name = "keywords", paramType = "query",value = "搜索关键字,目前仅支持姓名")
  106. })
  107. public ResponseBean getAdminMyCustList(@RequestParam int pageNumber,
  108. @RequestParam int pageSize,
  109. @RequestParam(required = false) String keywords,
  110. @PathVariable("userId") Integer userId,
  111. HttpServletRequest request) {
  112. if (pageNumber < 0 || pageSize < 0) {
  113. return ResponseBean.error("分页参数不正确", ResponseBean.ERROR_ILLEGAL_PARAMS);
  114. }
  115. TaUser user = iTaUserService.getById(userId);
  116. if (null == user) {
  117. return ResponseBean.error("员工不存在!", ResponseBean.ERROR_ILLEGAL_PARAMS);
  118. }
  119. QueryWrapper<TaPerson> personQueryWrapper = new QueryWrapper<>();
  120. personQueryWrapper.eq("user_id", userId);
  121. TaPerson person = iTaPersonService.getOne(personQueryWrapper);
  122. if (null == person) {
  123. return ResponseBean.error("未绑定小程序!", ResponseBean.ERROR_ILLEGAL_PARAMS);
  124. }
  125. return taRecommendCustomerService.getAdminMyCustList(person.getMiniOpenid(), keywords, pageNumber, pageSize);
  126. }
  127. /**
  128. * 客户详情
  129. * @param id
  130. * @return
  131. */
  132. @GetMapping("/wx/customer/{id}")
  133. @ApiOperation(value = "查询客户详情", notes = "查询客户详情")
  134. @ApiImplicitParams({
  135. @ApiImplicitParam(dataTypeClass = String.class, name = "id", paramType = "path",value = "搜索关键字,目前仅支持姓名")
  136. })
  137. public ResponseBean getCustDetail(@PathVariable String id) {
  138. if (null == id || "".equals(id.trim())) {
  139. return ResponseBean.error("请求地址错误", ResponseBean.ERROR_ILLEGAL_PARAMS);
  140. }
  141. return taRecommendCustomerService.getCustDetail(id);
  142. }
  143. /**
  144. * 客户编辑
  145. * @param paramStr
  146. * @return
  147. */
  148. @PostMapping("/wx/customer/edit")
  149. @ApiOperation(value = "客户编辑", notes = "客户编辑")
  150. @ApiImplicitParams({
  151. @ApiImplicitParam(dataTypeClass = String.class, name = "id", paramType = "path",value = "搜索关键字,目前仅支持姓名")
  152. })
  153. public ResponseBean updateCust(@RequestBody String paramStr) {
  154. return taRecommendCustomerService.updateCustByJSON(paramStr);
  155. }
  156. /**
  157. * 推荐客户
  158. * @param paramStr
  159. * @param request
  160. * @return
  161. */
  162. @PostMapping("/wx/customer/new")
  163. public ResponseBean recommendCust(@RequestBody String paramStr, HttpServletRequest request) {
  164. String openid = getOpenId(request);
  165. Integer orgId = getOrgId(request);
  166. return taRecommendCustomerService.recommendCust(paramStr, openid,orgId);
  167. }
  168. /**
  169. * 报备客户
  170. * @param paramStr
  171. * @param request
  172. * @return
  173. */
  174. @PostMapping("/wx/customer/report")
  175. public ResponseBean reportCust(@RequestBody String paramStr, HttpServletRequest request) {
  176. String openid = getOpenId(request);
  177. Integer orgId = getOrgId(request);
  178. return taRecommendCustomerService.reportCust(paramStr, openid,orgId);
  179. }
  180. @PostMapping("/wx/customer/recommend")
  181. public ResponseBean getUnSignedCustomerList ( @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  182. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
  183. @RequestParam(value ="buildingId") String buildingId,
  184. HttpServletRequest request){
  185. String openid = getOpenId(request);
  186. List<TaPerson> taPersons = taPersonService.getPersonsByOpenId(openid);
  187. if (null == taPersons || taPersons.size() != 1) {
  188. return ResponseBean.error("验证人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  189. }
  190. TaPerson person = taPersons.get(0);
  191. try{
  192. return ResponseBean.success(taRecommendCustomerService.getUnSignedCustomerList(pageNumber,pageSize,buildingId,person.getPersonId()));
  193. }catch (Exception e){
  194. e.printStackTrace();
  195. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  196. }
  197. }
  198. @GetMapping("/wx/customer/myReport")
  199. public ResponseBean getCustomerIReport (HttpServletRequest request,
  200. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  201. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
  202. String openid = getOpenId(request);
  203. List<TaPerson> taPersons = taPersonService.getPersonsByOpenId(openid);
  204. if (null == taPersons || taPersons.size() != 1) {
  205. return ResponseBean.error("验证人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  206. }
  207. TaPerson person = taPersons.get(0);
  208. try{
  209. IPage<TaRecommendCustomer>pg = new Page<>(pageNumber,pageSize);
  210. QueryWrapper<TaRecommendCustomer>queryWrapper = new QueryWrapper<>();
  211. queryWrapper.eq("realty_consultant",person.getPersonId());
  212. queryWrapper.eq("report_recommend_status",CommConstant.REPORTED);
  213. queryWrapper.eq("status",CommConstant.CUSTOMER_REPORT);
  214. queryWrapper.orderByDesc("create_date");
  215. IPage<TaRecommendCustomer>result = taRecommendCustomerService.page(pg,queryWrapper);
  216. return ResponseBean.success(result);
  217. }catch (Exception e){
  218. e.printStackTrace();
  219. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  220. }
  221. }
  222. @GetMapping("/wx/customer/myCustomer")
  223. public ResponseBean getMyCustomer ( @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  224. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
  225. HttpServletRequest request){
  226. String openid = getOpenId(request);
  227. List<TaPerson> taPersons = taPersonService.getPersonsByOpenId(openid);
  228. if (null == taPersons || taPersons.size() != 1) {
  229. return ResponseBean.error("验证人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  230. }
  231. TaPerson person = taPersons.get(0);
  232. try{
  233. IPage<TaRecommendCustomer>pg = new Page<>(pageNumber,pageSize);
  234. QueryWrapper<TaRecommendCustomer>queryWrapper = new QueryWrapper<>();
  235. queryWrapper.eq("realty_consultant",person.getPersonId());
  236. // queryWrapper.eq("report_recommend_status",CommConstant.REPORTED);
  237. queryWrapper.gt("status",CommConstant.STATUS_UNACCALIMED);
  238. queryWrapper.orderByDesc("create_date");
  239. IPage<TaRecommendCustomer>result = taRecommendCustomerService.page(pg,queryWrapper);
  240. return ResponseBean.success(result);
  241. }catch (Exception e){
  242. e.printStackTrace();
  243. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  244. }
  245. }
  246. @GetMapping("/wx/customer/myInviteAgent")
  247. public ResponseBean getMyInviteAgent (@RequestParam(value ="personId") String personId,
  248. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  249. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
  250. try{
  251. IPage<TaRecommendCustomer>pg = new Page<>(pageNumber,pageSize);
  252. QueryWrapper<TaRecommendCustomer>queryWrapper = new QueryWrapper<>();
  253. queryWrapper.eq("realty_consultant",personId);
  254. queryWrapper.eq("report_recommend_status",CommConstant.REPORTED);
  255. queryWrapper.orderByDesc("create_date");
  256. IPage<TaRecommendCustomer>result = taRecommendCustomerService.page(pg,queryWrapper);
  257. return ResponseBean.success(result);
  258. }catch (Exception e){
  259. e.printStackTrace();
  260. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  261. }
  262. }
  263. // 客户列表 公客/私客
  264. @GetMapping("/admin/customer/recommend")
  265. public ResponseBean getCustomerList (HttpServletRequest request,
  266. @RequestParam(value ="name",required = false) String name,
  267. @RequestParam(value ="tel",required = false) String tel,
  268. @RequestParam(value ="buildingId",required = false) String buildingId,
  269. @RequestParam(value ="consultName",required = false) String consultName,
  270. @RequestParam(value ="consultTel",required = false) String consultTel,
  271. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  272. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
  273. @RequestParam(value ="entryType",required = false) String entryType,
  274. @RequestParam(value ="verifyStatus",required = false) String verifyStatus,
  275. @RequestParam(value = "sex",required = false)Integer sex,
  276. @RequestParam(value = "customerType") String customerType,// public 公 private 私
  277. @RequestParam(value = "status",required = false) Integer status){
  278. try{
  279. // TODO 目前如果是公客,就取当前操作人员的 buildingId
  280. // if ("public".equals(customerType)) {
  281. // Map<String,Object> map = JWTUtils.getUserIdAndOrgId(request);
  282. // String userId = (String) map.get("userId");
  283. // QueryWrapper<TaPersonBuilding> queryWrapper = new QueryWrapper<>();
  284. // queryWrapper.eq("user_id", userId);
  285. // queryWrapper.orderByDesc("create_date");
  286. // queryWrapper.last("limit 1");
  287. // TaPersonBuilding personBuilding = taPersonBuildingMapper.selectOne(queryWrapper);
  288. // buildingId = personBuilding.getBuildingId();
  289. // }
  290. return ResponseBean.success(taRecommendCustomerService.getCustomerList(status,pageNumber,pageSize,buildingId,name,tel,consultName,consultTel,entryType,verifyStatus,sex, customerType, getOrgId(request),getTaPersonBuildingListByUserId(request)));
  291. }catch (Exception e){
  292. e.printStackTrace();
  293. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  294. }
  295. }
  296. //推荐客户列表
  297. @GetMapping("/admin/customer/recommend/recommender")
  298. public ResponseBean getRecCustomerList (HttpServletRequest request,
  299. @RequestParam(value ="name",required = false) String name,
  300. @RequestParam(value ="tel",required = false) String tel,
  301. @RequestParam(value ="buildingId",required = false) String buildingId,
  302. @RequestParam(value ="consultName",required = false) String consultName,
  303. @RequestParam(value ="consultTel",required = false) String consultTel,
  304. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  305. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
  306. @RequestParam(value ="entryType",required = false) String entryType,
  307. @RequestParam(value ="verifyStatus",required = false) String verifyStatus,
  308. @RequestParam(value = "sex",required = false)Integer sex){
  309. try{
  310. return ResponseBean.success(taRecommendCustomerService.getRecCustomerList(pageNumber,pageSize,buildingId,name,tel,consultName,consultTel,entryType,verifyStatus,sex, getOrgId(request),getTaPersonBuildingListByUserId(request)));
  311. }catch (Exception e){
  312. e.printStackTrace();
  313. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  314. }
  315. }
  316. //报备客户列表
  317. @GetMapping("/admin/customer/recommend/report")
  318. public ResponseBean getRepCustomerList (@RequestParam(value ="name",required = false) String name,
  319. @RequestParam(value ="tel",required = false) String tel,
  320. @RequestParam(value ="buildingId",required = false) String buildingId,
  321. @RequestParam(value ="consultName",required = false) String consultName,
  322. @RequestParam(value ="consultTel",required = false) String consultTel,
  323. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  324. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
  325. @RequestParam(value ="entryType",required = false) String entryType,
  326. @RequestParam(value ="verifyStatus",required = false) String verifyStatus,
  327. @RequestParam(value = "sex",required = false)Integer sex, HttpServletRequest request){
  328. Integer orgid = getOrgId(request);
  329. try{
  330. return ResponseBean.success(taRecommendCustomerService.getRepCustomerList(pageNumber,pageSize,buildingId,name,tel,consultName,consultTel,entryType,verifyStatus,sex, orgid,getTaPersonBuildingListByUserId(request)));
  331. }catch (Exception e){
  332. e.printStackTrace();
  333. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  334. }
  335. }
  336. /**
  337. * 经纪人列表
  338. * @param name
  339. * @param tel
  340. * @param pageNumber
  341. * @param pageSize
  342. * @return
  343. */
  344. @GetMapping("/admin/customer/agents")
  345. public ResponseBean getIndependentAgents (HttpServletRequest request,
  346. @RequestParam(value ="name",required = false) String name,
  347. @RequestParam(value ="tel",required = false) String tel,
  348. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  349. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
  350. try{
  351. return ResponseBean.success(taRecommendCustomerService.getIndependentAgents(pageNumber,pageSize,name,tel, getOrgId(request)));
  352. }catch (Exception e){
  353. e.printStackTrace();
  354. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  355. }
  356. }
  357. @GetMapping("/admin/customer/recommend/{customerId}")
  358. public ResponseBean getCustomersIRecommended (@RequestParam int pageNumber, @RequestParam int pageSize, @PathVariable String customerId,HttpServletRequest request){
  359. Integer orgId = getOrgId(request);
  360. try{
  361. return ResponseBean.success(taRecommendCustomerService.getCustomersIRecommended(pageNumber,pageSize,customerId,orgId));
  362. }catch (Exception e){
  363. e.printStackTrace();
  364. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  365. }
  366. }
  367. @GetMapping("/wx/customer/recommend/mine")
  368. public ResponseBean getWxCustomersIRecommended (@RequestParam int pageNumber, @RequestParam int pageSize,HttpServletRequest request){
  369. Integer orgId =getOrgId(request);
  370. String openid = getOpenId(request);
  371. List<TaPerson> taPersons = taPersonService.getPersonsByOpenId(openid);
  372. if (null == taPersons || taPersons.size() != 1) {
  373. return ResponseBean.error("验证人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  374. }
  375. TaPerson person = taPersons.get(0);
  376. try{
  377. return ResponseBean.success(taRecommendCustomerService.getCustomersIRecommended(pageNumber,pageSize,person.getPersonId(),orgId));
  378. }catch (Exception e){
  379. e.printStackTrace();
  380. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  381. }
  382. }
  383. /**
  384. * 修改对象
  385. * @param taRecommendCustomer 实体对象
  386. * @return
  387. */
  388. @RequestMapping(value="/wx/customer/recommend/edit/{customerId}",method= RequestMethod.PUT)
  389. public ResponseBean taRecommendCustomerUpdateWx(@PathVariable String customerId,
  390. @RequestBody TaRecommendCustomer taRecommendCustomer){
  391. ResponseBean responseBean = new ResponseBean();
  392. taRecommendCustomer.setCustomerId(customerId);
  393. try {
  394. if (taRecommendCustomerService.updateById(taRecommendCustomer)){
  395. responseBean.addSuccess(taRecommendCustomer);
  396. }else {
  397. responseBean.addError("fail");
  398. }
  399. }catch (Exception e){
  400. e.printStackTrace();
  401. responseBean.addError(e.getMessage());
  402. }
  403. return responseBean;
  404. }
  405. /**
  406. * 修改对象
  407. * @param taRecommendCustomer 实体对象
  408. * @return
  409. */
  410. @RequestMapping(value="/admin/customer/recommend/edit/{id}",method= RequestMethod.PUT)
  411. public ResponseBean taRecommendCustomerUpdate(@PathVariable String id,
  412. @RequestBody TaRecommendCustomer taRecommendCustomer){
  413. ResponseBean responseBean = new ResponseBean();
  414. taRecommendCustomer.setCustomerId(id);
  415. try {
  416. if (taRecommendCustomerService.updateById(taRecommendCustomer)){
  417. responseBean.addSuccess(taRecommendCustomer);
  418. }else {
  419. responseBean.addError("fail");
  420. }
  421. }catch (Exception e){
  422. e.printStackTrace();
  423. responseBean.addError(e.getMessage());
  424. }
  425. return responseBean;
  426. }
  427. // /**
  428. // * 修改对象
  429. // * @param taRecommendCustomer 实体对象
  430. // * @return
  431. // */
  432. // @RequestMapping(value="/wx/customer/recommend/edit/{id}",method= RequestMethod.PUT)
  433. // public ResponseBean taWxRecommendCustomerUpdate(@PathVariable String id,
  434. // @RequestBody TaRecommendCustomer taRecommendCustomer){
  435. // ResponseBean responseBean = new ResponseBean();
  436. // taRecommendCustomer.setCustomerId(id);
  437. // try {
  438. // if (taRecommendCustomerService.updateById(taRecommendCustomer)){
  439. // responseBean.addSuccess(taRecommendCustomer);
  440. // }else {
  441. // responseBean.addError("fail");
  442. // }
  443. // }catch (Exception e){
  444. // e.printStackTrace();
  445. // responseBean.addError(e.getMessage());
  446. // }
  447. // return responseBean;
  448. // }
  449. @RequestMapping(value = "/wx/customer/recommend/get/{customerId}", method = RequestMethod.GET)
  450. public ResponseBean getSingleCustomer(@PathVariable(value = "customerId") String customerId) {
  451. ResponseBean responseBean = new ResponseBean();
  452. try {
  453. responseBean.addSuccess(taRecommendCustomerService.getById(customerId));
  454. }catch (Exception e){
  455. e.printStackTrace();
  456. responseBean.addError(e.getMessage());
  457. }
  458. return responseBean;
  459. }
  460. @RequestMapping(value = "/admin/customer/recommend/getById/{id}", method = RequestMethod.GET)
  461. public ResponseBean getRecommendCustomerById(@PathVariable(value = "id") String customerId) {
  462. ResponseBean responseBean = new ResponseBean();
  463. try {
  464. responseBean.addSuccess(taRecommendCustomerService.getCustomerById(customerId));
  465. }catch (Exception e){
  466. e.printStackTrace();
  467. responseBean.addError(e.getMessage());
  468. }
  469. return responseBean;
  470. }
  471. @GetMapping(value = "/admin/customer/recommend/get/{id}")
  472. public ResponseBean getCustomerDetail(@PathVariable String id,
  473. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  474. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize) {
  475. ResponseBean responseBean = new ResponseBean();
  476. try {
  477. responseBean.addSuccess(taRecommendCustomerService.getCustomerDetail(id,pageNumber,pageSize));
  478. }catch (Exception e){
  479. e.printStackTrace();
  480. responseBean.addError(e.getMessage());
  481. }
  482. return responseBean;
  483. }
  484. @GetMapping(value = "/admin/customer/recommend/public/get/{id}")
  485. public ResponseBean getPublicCustomerDetail(@PathVariable String id,
  486. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  487. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize) {
  488. ResponseBean responseBean = new ResponseBean();
  489. try {
  490. responseBean.addSuccess(taRecommendCustomerService.getPublicCustomerDetail(id,pageNumber,pageSize));
  491. }catch (Exception e){
  492. e.printStackTrace();
  493. responseBean.addError(e.getMessage());
  494. }
  495. return responseBean;
  496. }
  497. @GetMapping("/admin/customer/recommend/drift")
  498. public ResponseBean getDriftCustomerList (HttpServletRequest request,
  499. @RequestParam(value ="buildingId",defaultValue = "false") String buildingId,
  500. @RequestParam(value ="pageNumber",defaultValue = "1") Integer pageNumber,
  501. @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize){
  502. try{
  503. return ResponseBean.success(taPersonService.getDriftCustomerList(pageNumber,pageSize,buildingId, getOrgId(request)));
  504. }catch (Exception e){
  505. e.printStackTrace();
  506. return ResponseBean.error(e.getMessage(),ResponseBean.ERROR_UNAVAILABLE);
  507. }
  508. }
  509. /**
  510. * 修改对象
  511. * @return
  512. */
  513. @RequestMapping(value="/admin/customer/recommend/verify/{id}",method= RequestMethod.PUT)
  514. public ResponseBean taRecommendCustomerVerify(@PathVariable String id,@RequestParam Integer verifyStatus, @RequestParam(required = false) String verifyRemark, HttpServletRequest request){
  515. if (null == verifyStatus) {
  516. return ResponseBean.error("审核结果非法", ResponseBean.ERROR_ILLEGAL_PARAMS);
  517. }
  518. Integer orgId = getOrgId(request);
  519. ResponseBean responseBean = new ResponseBean();
  520. try {
  521. TaRecommendCustomer taRecommendCustomer = taRecommendCustomerService.getById(id);
  522. if(null == taRecommendCustomer.getVerifyStatus() || 0 == taRecommendCustomer.getVerifyStatus().intValue()){ // taRecommendCustomer.getVerifyStatus().equals(CommConstant.VERIFY_READY)
  523. taRecommendCustomer.setVerifyStatus(verifyStatus);
  524. if(!StringUtils.isEmpty(verifyRemark)){
  525. taRecommendCustomer.setVerifyRemark(verifyRemark);
  526. if(CommConstant.CUSTOMER_REPORT.equals(taRecommendCustomer.getReportRecommendStatus())){
  527. taRecommendCustomer.setRealtyConsultant(taRecommendCustomer.getRecommendPerson());
  528. }
  529. }
  530. // 审核不通过的时候,移除置业顾问选择
  531. if (CommConstant.VERIFY_DISAGREE == verifyStatus) {
  532. taRecommendCustomer.setRealtyConsultant(null);
  533. }
  534. if (taRecommendCustomerService.updateById(taRecommendCustomer)){
  535. // 审核通过增加积分
  536. if (CommConstant.VERIFY_AGREE == verifyStatus) {
  537. applicationContext.publishEvent(new EventBus(taRecommendCustomer, EventBus.EventType.RecommendCustomer, orgId));
  538. }
  539. responseBean.addSuccess(taRecommendCustomer);
  540. }else {
  541. responseBean.addError("fail");
  542. }
  543. } else {
  544. responseBean.addSuccess("客户已审核");
  545. }
  546. }catch (Exception e){
  547. e.printStackTrace();
  548. responseBean.addError(e.getMessage());
  549. }
  550. return responseBean;
  551. }
  552. /**
  553. * 导出数据(推荐客户列表)
  554. */
  555. @GetMapping("/admin/customer/recommend/recommender/export")
  556. public void export(HttpServletRequest request, HttpServletResponse response) throws IOException {
  557. // response.setContentType("application/vnd.ms-excel");
  558. response.setContentType("application/octet-stream");
  559. response.setCharacterEncoding("utf-8");
  560. response.setHeader("Content-disposition", "attachment;filename=推荐客户.xlsx");
  561. Integer count = taRecommendCustomerService.getRecCustomerExportCount(getOrgId(request),getTaPersonBuildingListByUserId(request));
  562. Integer pageCode = 0;
  563. Integer pageSize = 100;
  564. // 总页数
  565. Integer pageCount = count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1;
  566. // 设置读取的class
  567. ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), ExcelRecommendCustomer.class).registerWriteHandler(new CustomCellWriteHandler()).build();
  568. // 设置 sheet, 同一个sheet只需要设置一次
  569. WriteSheet writeSheet = EasyExcel.writerSheet("推荐客户").build();
  570. do {
  571. List<ExcelRecommendCustomer> recCustomerExport = taRecommendCustomerService.getRecCustomerExport(getOrgId(request), pageCode * pageSize, pageSize,getTaPersonBuildingListByUserId(request));
  572. excelWriter.write(recCustomerExport, writeSheet);
  573. pageCode ++;
  574. } while (pageCode <= pageCount);
  575. /// finish 会帮忙关闭流
  576. excelWriter.finish();
  577. }
  578. /**
  579. * 导出数据(报备客户)
  580. */
  581. @GetMapping("/admin/customer/recommend/report/export")
  582. public void reportExport(HttpServletRequest request,
  583. HttpServletResponse response,
  584. @RequestParam(value ="name",required = false) String name,
  585. @RequestParam(value ="tel",required = false) String tel,
  586. @RequestParam(value ="buildingId",required = false) String buildingId,
  587. @RequestParam(value ="consultName",required = false) String consultName,
  588. @RequestParam(value ="consultTel",required = false) String consultTel,
  589. @RequestParam(value ="entryType",required = false) String entryType,
  590. @RequestParam(value ="verifyStatus",required = false) String verifyStatus,
  591. @RequestParam(value = "sex",required = false)Integer sex) throws IOException {
  592. // response.setContentType("application/vnd.ms-excel");
  593. response.setContentType("application/octet-stream");
  594. response.setCharacterEncoding("utf-8");
  595. response.setHeader("Content-disposition", "attachment;filename=报备客户.xlsx");
  596. Integer count = taRecommendCustomerService.getRepCustomerReportCount(buildingId,name,tel,consultName,consultTel,entryType,verifyStatus,sex,getOrgId(request));
  597. Integer pageCode = 0;
  598. Integer pageSize = 100;
  599. // 总页数
  600. Integer pageCount = count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1;
  601. // 设置读取的class
  602. ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), ReporRecommendCustomer.class).registerWriteHandler(new CustomCellWriteHandler()).build();
  603. // 设置 sheet, 同一个sheet只需要设置一次
  604. WriteSheet writeSheet = EasyExcel.writerSheet("报备客户").build();
  605. List<ReporRecommendCustomer> recCustomerExport = null;
  606. do {
  607. recCustomerExport = taRecommendCustomerService.getRepCustomerReportExport(buildingId, name, tel, consultName, consultTel, entryType, verifyStatus, sex, getOrgId(request), pageCode * pageSize, pageSize);
  608. excelWriter.write(recCustomerExport, writeSheet);
  609. pageCode ++;
  610. } while (pageCode <= pageCount);
  611. /// finish 会帮忙关闭流
  612. excelWriter.finish();
  613. }
  614. /**
  615. * 导出数据(经纪人)
  616. */
  617. @GetMapping("/admin/customer/recommend/agents/export")
  618. public void agentsExport(HttpServletRequest request, HttpServletResponse response) throws IOException {
  619. // response.setContentType("application/vnd.ms-excel");
  620. response.setContentType("application/octet-stream");
  621. response.setCharacterEncoding("utf-8");
  622. response.setHeader("Content-disposition", "attachment;filename=经纪人.xlsx");
  623. Integer count = taRecommendCustomerService.getIndependentAgentsCount(getOrgId(request));
  624. Integer pageCode = 0;
  625. Integer pageSize = 100;
  626. // 总页数
  627. Integer pageCount = count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1;
  628. // 设置读取的class
  629. ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), AgentsRecommendCustomer.class).registerWriteHandler(new CustomCellWriteHandler()).build();
  630. // 设置 sheet, 同一个sheet只需要设置一次
  631. WriteSheet writeSheet = EasyExcel.writerSheet("经纪人").build();
  632. List<AgentsRecommendCustomer> recCustomerExport = null;
  633. do {
  634. recCustomerExport = taRecommendCustomerService.getIndependentAgentsExport(getOrgId(request), pageCode * pageSize, pageSize);
  635. excelWriter.write(recCustomerExport, writeSheet);
  636. pageCode ++;
  637. } while (pageCode <= pageCount);
  638. /// finish 会帮忙关闭流
  639. excelWriter.finish();
  640. }
  641. // 客户列表 公客/私客
  642. /**
  643. * 导出数据 客户列表 公客/私客
  644. * @param request
  645. * @param response
  646. * @param name
  647. * @param tel
  648. * @param buildingId
  649. * @param consultName
  650. * @param consultTel
  651. * @param entryType
  652. * @param verifyStatus
  653. * @param sex
  654. * @param customerType
  655. * @param status
  656. * @throws IOException
  657. */
  658. @GetMapping("/admin/customer/recommend/export")
  659. public void getCustomerExportList (HttpServletRequest request,
  660. HttpServletResponse response,
  661. @RequestParam(value ="name",required = false) String name,
  662. @RequestParam(value ="tel",required = false) String tel,
  663. @RequestParam(value ="buildingId",required = false) String buildingId,
  664. @RequestParam(value ="consultName",required = false) String consultName,
  665. @RequestParam(value ="consultTel",required = false) String consultTel,
  666. @RequestParam(value ="entryType",required = false) String entryType,
  667. @RequestParam(value ="verifyStatus",required = false) String verifyStatus,
  668. @RequestParam(value = "sex",required = false)Integer sex,
  669. @RequestParam(value = "customerType") String customerType,
  670. @RequestParam(value = "status",required = false) Integer status) throws IOException { // public 公 private 私
  671. // response.setContentType("application/vnd.ms-excel");
  672. response.setContentType("application/octet-stream");
  673. response.setCharacterEncoding("utf-8");
  674. response.setHeader("Content-disposition", "attachment;filename=经纪人.xlsx");
  675. Integer orgId = getOrgId(request);
  676. Integer pageCode = 0;
  677. Integer pageSize = 100;
  678. // 总页数
  679. Integer pageCount = 0;
  680. if (CommConstant.CUTOMER_TYPE_PUBLIC.equals(customerType)) {
  681. /**
  682. * 公客
  683. */
  684. // 设置读取的class
  685. ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), PublicCustomerExport.class).registerWriteHandler(new CustomCellWriteHandler()).build();
  686. // 设置 sheet, 同一个sheet只需要设置一次
  687. WriteSheet writeSheet = EasyExcel.writerSheet("客户列表-公客").build();
  688. Integer count = taRecommendCustomerMapper.getPublicCustomerExportListCount(name, tel, entryType, verifyStatus, sex, orgId,consultTel);
  689. pageCount = count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1;
  690. List<PublicCustomerExport> publicList = null;
  691. do {
  692. publicList = taRecommendCustomerMapper.getPublicCustomerExportList(pageCode * pageSize, pageSize, name, tel, entryType, verifyStatus, sex, orgId,consultTel);
  693. excelWriter.write(publicList, writeSheet);
  694. pageCode ++;
  695. } while (pageCode <= pageCount);
  696. // finish 会帮忙关闭流
  697. excelWriter.finish();
  698. } else {
  699. /**
  700. * 私客
  701. */
  702. // 设置读取的class
  703. ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), PrivateCustomerExport.class).registerWriteHandler(new CustomCellWriteHandler()).build();
  704. // 设置 sheet, 同一个sheet只需要设置一次
  705. WriteSheet writeSheet = EasyExcel.writerSheet("客户列表-私客").build();
  706. Integer count = taRecommendCustomerMapper.getCustomerExportListCount(buildingId, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId,status);
  707. pageCount = count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1;
  708. List<PrivateCustomerExport> privateList = null;
  709. do {
  710. privateList = taRecommendCustomerMapper.getCustomerExportList(pageCode * pageSize, pageSize, buildingId, name, tel, consultName, consultTel, entryType, verifyStatus, sex, orgId,status);
  711. excelWriter.write(privateList, writeSheet);
  712. pageCode ++;
  713. } while (pageCode <= pageCount);
  714. // finish 会帮忙关闭流
  715. excelWriter.finish();
  716. }
  717. }
  718. /**
  719. * 查询判客工具下的我的客户人数集合
  720. * @param request
  721. * @return
  722. */
  723. @GetMapping("/wx/inventory/customer/statistics")
  724. @ApiOperation(value = "查询我的客户人数统计", notes = "查询我的客户人数统计")
  725. public ResponseBean getMyCustStatistics(HttpServletRequest request) {
  726. String openid = getOpenId(request);
  727. return taRecommendCustomerService.getMyCustStatistics(openid);
  728. }
  729. /**
  730. * 分页查询判客工具下的我的客户跟进人集合
  731. * 根据type区分 follow 跟进 clinch 成交
  732. * @param request
  733. * @return
  734. */
  735. @GetMapping("/wx/inventory/customer/statistics/{type}")
  736. @ApiOperation(value = "查询我的客户人数统计", notes = "查询我的客户人数统计")
  737. public ResponseBean getMyCustFollows(@PathVariable(value = "type") String type,
  738. @RequestParam(value = "pageNumber",defaultValue = "0") Integer pageNumber,
  739. @RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize,
  740. @RequestParam(value = "name",required = false) String name,
  741. @RequestParam(value = "phone",required = false) String phone,
  742. @RequestParam(value = "status",required = false) Integer status,
  743. @RequestParam(value = "startReportDate",required = false) String startReportDate,
  744. @RequestParam(value = "endReportDate",required = false) String endReportDate,
  745. @RequestParam(value = "startArrivalDate",required = false) String startArrivalDate,
  746. @RequestParam(value = "endArrivalDate",required = false) String endArrivalDate,
  747. HttpServletRequest request) {
  748. String openid = getOpenId(request);
  749. return taRecommendCustomerService.getMyCustFollowOrClinch(pageNumber,pageSize,openid,type,name,phone,status,startReportDate,endReportDate,startArrivalDate,endArrivalDate);
  750. }
  751. /**
  752. * 查询盘客工具下我的客户详情
  753. * @param request
  754. * @return
  755. */
  756. @GetMapping("/wx/inventory/customer/{customerId}")
  757. @ApiOperation(value = "查询客户详情", notes = "查询客户详情")
  758. public ResponseBean getMyCustDetail(@PathVariable(value = "customerId") String customerId,HttpServletRequest request) {
  759. String openid = getOpenId(request);
  760. return taRecommendCustomerService.getMyCustDetail(customerId,openid);
  761. }
  762. /**
  763. * 查询盘客工具下编辑基本信息
  764. * @param request
  765. * @return
  766. */
  767. @PutMapping("/wx/inventory/customer/{customerId}")
  768. @ApiOperation(value = "编辑客户信息", notes = "编辑客户信息")
  769. public ResponseBean updateMyCustDetail(@PathVariable(value = "customerId") String customerId,
  770. @RequestBody TaRecommendCustomer taRecommendCustomer, HttpServletRequest request) {
  771. String openid = getOpenId(request);
  772. taRecommendCustomer.setCustomerId(customerId);
  773. return taRecommendCustomerService.updateMyCust(taRecommendCustomer,openid);
  774. }
  775. }