AppMePageAction.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. package com.happy.action;
  2. import com.baidubce.model.User;
  3. import com.google.gson.Gson;
  4. import com.happy.Model.Booking;
  5. import com.happy.Model.FileInfo;
  6. import com.happy.Model.Hotel;
  7. import com.happy.Model.weixin.*;
  8. import com.happy.Until.*;
  9. import com.happy.Until.Enum.B;
  10. import com.happy.Until.Enum.DataType;
  11. import com.happy.Until.Enum.TempEnum;
  12. import com.happy.common.http.HttpsClient;
  13. import com.happy.common.wx.WxUtil;
  14. import com.happy.constant.ConstDefault;
  15. import com.happy.constant.ResultStatusCode;
  16. import com.happy.dto.IPage;
  17. import com.happy.service.*;
  18. import com.opensymphony.xwork2.ActionSupport;
  19. import net.sf.json.JSONObject;
  20. import org.apache.struts2.ServletActionContext;
  21. import org.apache.struts2.interceptor.ServletRequestAware;
  22. import javax.annotation.Resource;
  23. import javax.servlet.http.HttpServletRequest;
  24. import javax.servlet.http.HttpServletResponse;
  25. import java.net.URLEncoder;
  26. import java.util.*;
  27. /**
  28. * 我的进去Action请求交互
  29. */
  30. public class AppMePageAction extends ActionSupport implements ServletRequestAware {
  31. private HttpServletRequest request;
  32. public HttpServletResponse response;
  33. @Resource
  34. public BookService bookService;
  35. @Resource
  36. public UserService userService;
  37. @Resource
  38. public AppService appService;
  39. @Resource
  40. public HotelService hotelService;
  41. @Resource
  42. public FileService fileService;
  43. @Resource
  44. public AppHomePageService appHomePageService;
  45. private String contactUserName; // 常用联系人姓名
  46. private String contactUserIdNum; // 常用联系人身份证
  47. private String contactUserPhone; // 常用联系人电话
  48. public int page = 1; // 当前页
  49. public int rows = 5;// 每页显示的行数rows
  50. private String userId; // 用户id
  51. private String bookingId; // 订单id
  52. private String userName; // 用户姓名
  53. private String headPhoto; // 用户头像地址
  54. private String contactId; // 相关联系人的id
  55. public String status;
  56. private String code; // 授权前端给用户code
  57. private String userCode; // 第一次进来获取用户的code
  58. private String queryValue; // 首页查寻搜索关键词
  59. public String type; // 类型:收藏、住过
  60. public HttpServletRequest getRequest() {
  61. return request;
  62. }
  63. public void setRequest(HttpServletRequest request) {
  64. this.request = request;
  65. }
  66. public void setServletRequest(HttpServletRequest request) {
  67. this.request = request;
  68. }
  69. public HttpServletResponse getResponse() {
  70. return response;
  71. }
  72. public void setResponse(HttpServletResponse response) {
  73. this.response = response;
  74. }
  75. public int getPage() {
  76. return page;
  77. }
  78. public void setPage(int page) {
  79. this.page = page;
  80. }
  81. public int getRows() {
  82. return rows;
  83. }
  84. public void setRows(int rows) {
  85. this.rows = rows;
  86. }
  87. public String getStatus() {
  88. return status;
  89. }
  90. public void setStatus(String status) {
  91. this.status = status;
  92. }
  93. /**
  94. * userId
  95. * 进入我的,查询订单列表
  96. * @return
  97. */
  98. public String getBookingList()
  99. {
  100. if (Func.checkNull(userId))
  101. return null;
  102. // 通过用户id查询所有订单列表数据
  103. StringBuilder querySql = new StringBuilder("");
  104. querySql.append(" and status_del = 1");
  105. if (!Func.checkNull(userId)){
  106. querySql.append(" and create_userid = '").append(userId).append("' ");
  107. }
  108. IPage<Booking> iPage = bookService.queryPage(querySql.toString(), page, rows);
  109. List<Booking> bookList =iPage.getPageList();
  110. if(bookList!=null){
  111. for (Booking book: bookList) {
  112. if (book == null || Func.checkNull(book.getHouseId()))
  113. continue;
  114. // 将房间图片,写入房型对象中
  115. List<FileInfo> fileInfoList = fileService.queryListByLinkId(book.getHouseId());
  116. book.setHouseFileInfoList(fileInfoList);
  117. }
  118. }
  119. ResponseUtil.writeJsonIPage(ServletActionContext.getResponse(),iPage);
  120. return null;
  121. }
  122. /**
  123. * 收藏、住过的酒店列表
  124. * userId
  125. * type 收藏、住过
  126. * @return
  127. */
  128. public String getHotelAndUsersList()
  129. {
  130. if (Func.checkNull(userId) || Func.checkNull(type))
  131. return null;
  132. Users users = userService.queryByUserId(userId);
  133. if (users == null)
  134. return null;
  135. List<String> collectList = new ArrayList<>();
  136. List<String> liveList = new ArrayList<>();
  137. if (!Func.checkNull(users.getCollect_hotel()))
  138. collectList = Arrays.asList(users.getCollect_hotel().split(","));
  139. if (!Func.checkNull(users.getLive_hotel()))
  140. liveList = Arrays.asList(users.getLive_hotel().split(","));
  141. IPage<Hotel> iPage = new IPage<>();
  142. if (TempEnum.收藏.name().equals(type))
  143. {
  144. iPage = appHomePageService.getHotelList(collectList,page,rows);
  145. }else if (TempEnum.住过.name().equals(type))
  146. {
  147. iPage = appHomePageService.getHotelList(liveList,page,rows);
  148. }
  149. ResponseUtil.writeJsonIPage(ServletActionContext.getResponse(),iPage);
  150. return null;
  151. }
  152. /**
  153. * 通过订单id查订单数据
  154. * @return
  155. */
  156. public String getBookingById()
  157. {
  158. if (Func.checkNull(bookingId))
  159. return null;
  160. // 通过用户id查询所有订单列表数据
  161. JSONObject resultJson = new JSONObject();
  162. Booking book = bookService.getById(Func.parseInt(bookingId));
  163. if (book == null) {
  164. resultJson.put(B.code, ResultStatusCode.BAD_REQUEST.getStatus());
  165. resultJson.put(B.message,"查无此数据");
  166. return null;
  167. }
  168. // 数据字典写入book
  169. Map dicMap = hotelService.queryHotelDicMap();
  170. // 酒店配置列表数据填充
  171. if (!Func.checkNull(book.getHotelConfig()))
  172. {
  173. List<String> list = Arrays.asList(book.getHotelConfig().split(","));
  174. List hotelDicList = new ArrayList();
  175. for (String hotelDicId:list) {
  176. if (!dicMap.containsKey(Func.parseInt(hotelDicId)))
  177. continue;
  178. hotelDicList.add(dicMap.get(Func.parseInt(hotelDicId)));
  179. }
  180. book.setHotelConfigList(hotelDicList);
  181. }
  182. // 房型配置列表数据填充
  183. if (!Func.checkNull(book.getHouseConfig()))
  184. {
  185. List<String> list = Arrays.asList(book.getHouseConfig().split(","));
  186. List houseDicList = new ArrayList();
  187. for (String hotelDicId:list) {
  188. if (!dicMap.containsKey(Func.parseInt(hotelDicId)))
  189. continue;
  190. houseDicList.add(dicMap.get(Func.parseInt(hotelDicId)));
  191. }
  192. book.setHouseConfigList(houseDicList);
  193. }
  194. // 将房间图片,写入房型对象中
  195. List<FileInfo> fileInfoList = fileService.queryListByLinkId(book.getHouseId());
  196. book.setHouseFileInfoList(fileInfoList);
  197. resultJson.put(B.code, ResultStatusCode.OK.getStatus());
  198. resultJson.put(B.message,ResultStatusCode.OK.getMsg());
  199. resultJson.put(B.data,book);
  200. ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  201. return null;
  202. }
  203. /**
  204. * userId 当前用户id,获取列表
  205. * 进入我的页面,跳转常用旅客列表
  206. */
  207. public void getUserContactList()
  208. {
  209. // 通过用户id查询所有订单列表数据
  210. if (Func.checkNull(userId))
  211. return;
  212. StringBuilder querySql = new StringBuilder("");
  213. if (!Func.checkNull(userId)){
  214. querySql.append(" and contact_id = '").append(userId).append("' ");
  215. }
  216. querySql.append(" and data_type = '").append(DataType.关联数据.toString()).append("' ");
  217. IPage listPage = userService.queryUserPage(querySql.toString(), page, rows); // 查询分页
  218. ResponseUtil.writeJsonIPage(ServletActionContext.getResponse(),listPage);
  219. }
  220. /**
  221. * 用户点击设置按钮,获取数据
  222. * 通过用户id查询用户信息
  223. */
  224. public void queryUsersById()
  225. {
  226. if (Func.checkNull(userId))
  227. return;
  228. Users users = userService.queryByUserId(userId);
  229. JSONObject resultJson = new JSONObject();
  230. resultJson.put(B.code, ResultStatusCode.OK.getStatus());
  231. resultJson.put(B.message,ResultStatusCode.OK.getMsg());
  232. resultJson.put(B.data,users);
  233. ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  234. }
  235. /**
  236. * 通过UserId进行更改或添加数据
  237. */
  238. public void updateContact()
  239. {
  240. if (Func.checkNull(contactId))
  241. return;
  242. JSONObject resultJson = new JSONObject();
  243. Users users = userService.queryByUserId(contactId);
  244. if (users == null) {
  245. resultJson.put(B.code,ResultStatusCode.BAD_REQUEST.getStatus());
  246. resultJson.put(B.message,"无此用户数据,请重新查询");
  247. ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  248. return;
  249. }
  250. users.setUser_name(contactUserName);
  251. // // 验证手机号码
  252. // if ( !Func.checkPhone(contactUserPhone))
  253. // {
  254. // resultJson.put(B.code,ResponseStatusEnum.FAILED.getStatus());
  255. // resultJson.put(B.message,"请确认手机号码");
  256. // ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  257. // return;
  258. // }
  259. // // 验证身份证
  260. // if (!Func.isCard(contactUserIdNum))
  261. // {
  262. // resultJson.put(B.code,ResponseStatusEnum.FAILED.getStatus());
  263. // resultJson.put(B.message,"请确认身份证");
  264. // ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  265. // return;
  266. // }
  267. users.setUser_phone(contactUserPhone);
  268. users.setCard_number(contactUserIdNum);
  269. userService.update(users);
  270. resultJson.put(B.code,ResultStatusCode.OK.getStatus());
  271. resultJson.put(B.message,ResultStatusCode.OK.getMsg());
  272. ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  273. }
  274. /**
  275. * 添加常用联系人数据
  276. */
  277. public void AddContact()
  278. {
  279. if (Func.checkNullOrEmpty(userId))
  280. return;
  281. // 相关联系人
  282. Users users = new Users();
  283. users.setContactId(Func.parseStr(userId));
  284. users.setContactName(userName);
  285. users.setCreate_time(TimeExchange.getDate());
  286. users.setDataType(DataType.关联数据.toString());
  287. users.setUser_name(contactUserName); // 相关联系人的名字
  288. users.setUser_phone(contactUserPhone); // 相关联系人的手机号码
  289. users.setCard_number(contactUserIdNum); // 相关联系人的身份证
  290. userService.insert(users);
  291. JSONObject resultJson = new JSONObject();
  292. resultJson.put(B.code,ResultStatusCode.OK.getStatus());
  293. resultJson.put(B.message,ResultStatusCode.OK.getMsg());
  294. ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  295. }
  296. /**
  297. * 用户点击保存,更新用户信息
  298. */
  299. public void updateUserInfo()
  300. {
  301. if (Func.checkNullOrEmpty(userId))
  302. return;
  303. JSONObject resultJson = new JSONObject();
  304. Users users = userService.queryByUserId(userId);
  305. if (users == null)
  306. {
  307. resultJson.put(B.code,ResultStatusCode.BAD_REQUEST.getStatus());
  308. resultJson.put(B.message,"查无此用户数据,请先授权!");
  309. ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  310. return;
  311. }
  312. users.setHeadPhoto(headPhoto);
  313. users.setUser_name(userName);
  314. users.setDataType(DataType.游客数据.toString());
  315. userService.update(users);
  316. resultJson.put(B.code,ResultStatusCode.OK.getStatus());
  317. resultJson.put(B.message,ResultStatusCode.OK.getMsg());
  318. ResponseUtil.writeJson(ServletActionContext.getResponse(),resultJson.toString());
  319. return;
  320. }
  321. /**
  322. * contactId
  323. * 用户可以删除自己相关联系人
  324. */
  325. public void delContact()
  326. {
  327. if (Func.checkNull(contactId))
  328. return;
  329. JSONObject resultJson = new JSONObject();
  330. userService.del(Func.parseInt(contactId));
  331. resultJson.put(B.code,ResultStatusCode.OK.getStatus());
  332. resultJson.put(B.message,ResultStatusCode.OK.getMsg());
  333. ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  334. }
  335. /**
  336. * 判断是否有当前用户(加访问记录)
  337. */
  338. public String isHaveUser()
  339. {
  340. if (Func.checkNull(this.code))
  341. return null;
  342. String OPEN_ID = "";
  343. JSONObject resultJson = new JSONObject();
  344. // 此处授权后的回调地址,主要获取token和openid
  345. String requestUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="
  346. + WeiXinUtil.appid_c
  347. + "&secret="
  348. + WeiXinUtil.screct_c
  349. + "&code="
  350. + this.getCode() + "&grant_type=authorization_code";
  351. // String json = HttpUtils.get(requestUrl);
  352. String json = HttpsClient.sendPost(requestUrl, "");
  353. Wechat_userinfo result = new Gson().fromJson(json, Wechat_userinfo.class);
  354. OPEN_ID = result.getOpenid();
  355. if (Func.checkNull(OPEN_ID))
  356. {
  357. resultJson.put(B.code,ResultStatusCode.BAD_REQUEST.getStatus());
  358. resultJson.put(B.message,"未获取到OpenId");
  359. ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  360. }
  361. /*
  362. * 手机号前端过来,昵称、省份、性别等其他信息已保存的result中,
  363. * 查询用户openid是否存在,存在就返回信息给前端,不存在就保存到数据库
  364. * */
  365. Users users = userService.queryByOpenid(OPEN_ID);
  366. if (users == null)
  367. {
  368. resultJson.put(B.code,ResultStatusCode.BAD_REQUEST.getStatus());
  369. resultJson.put(B.message," 当前用户未授权");
  370. resultJson.put(B.data,users);
  371. ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  372. return null;
  373. }
  374. resultJson.put(B.code,ResultStatusCode.OK.getStatus());
  375. resultJson.put(B.message," 当前用户已授权");
  376. resultJson.put(B.data,users);
  377. ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  378. return null;
  379. }
  380. /**
  381. * 用户登录小程序授权
  382. */
  383. public void authorizationUser()
  384. {
  385. if (Func.checkNull(this.code))
  386. return;
  387. String OPEN_ID = "";
  388. JSONObject resultJson = new JSONObject();
  389. CodeEntity codeEntity = appService.getCodeInfo(code);
  390. OPEN_ID = codeEntity.getOpenid();
  391. if (Func.checkNull(OPEN_ID))
  392. {
  393. resultJson.put(B.code,ResultStatusCode.BAD_REQUEST.getStatus());
  394. resultJson.put(B.message,"未获取到OpenId");
  395. ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  396. }
  397. /*
  398. * 手机号前端过来,昵称、省份、性别等其他信息已保存的result中,
  399. * 查询用户openid是否存在,存在就返回信息给前端,不存在就保存到数据库
  400. * */
  401. Users users = userService.queryByOpenid(OPEN_ID);
  402. if (users == null)
  403. {
  404. users = new Users();
  405. // 确定默认用户名,默认用户头像
  406. String userName = Func.parseStr(WxUtil.createDefaultUserName());
  407. users.setUser_name(userName);
  408. users.setHeadPhoto(ConstDefault.DefaultHeadPhoto);
  409. users.setOpenid(OPEN_ID);
  410. users.setCreate_time(DateUtil.getFormatPaternDate(new Date()));
  411. users.setDataType(DataType.游客数据.toString());
  412. userService.insert(users); // 写入用户数据
  413. users = userService.queryByOpenid(OPEN_ID);
  414. }
  415. resultJson.put(B.code,ResultStatusCode.OK.getStatus());
  416. resultJson.put(B.message,ResultStatusCode.OK.getMsg());
  417. resultJson.put(B.data,users);
  418. ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString());
  419. return ;
  420. }
  421. public String getUserCode() {
  422. return userCode;
  423. }
  424. public void setUserCode(String userCode) {
  425. this.userCode = userCode;
  426. }
  427. public String getQueryValue() {
  428. return queryValue;
  429. }
  430. public void setQueryValue(String queryValue) {
  431. this.queryValue = queryValue;
  432. }
  433. public String getContactUserName() {
  434. return contactUserName;
  435. }
  436. public void setContactUserName(String contactUserName) {
  437. this.contactUserName = contactUserName;
  438. }
  439. public String getContactUserIdNum() {
  440. return contactUserIdNum;
  441. }
  442. public void setContactUserIdNum(String contactUserIdNum) {
  443. this.contactUserIdNum = contactUserIdNum;
  444. }
  445. public String getContactUserPhone() {
  446. return contactUserPhone;
  447. }
  448. public void setContactUserPhone(String contactUserPhone) {
  449. this.contactUserPhone = contactUserPhone;
  450. }
  451. public String getUserId() {
  452. return userId;
  453. }
  454. public void setUserId(String userId) {
  455. this.userId = userId;
  456. }
  457. public String getUserName() {
  458. return userName;
  459. }
  460. public void setUserName(String userName) {
  461. this.userName = userName;
  462. }
  463. public String getContactId() {
  464. return contactId;
  465. }
  466. public void setContactId(String contactId) {
  467. this.contactId = contactId;
  468. }
  469. public String getHeadPhoto() {
  470. return headPhoto;
  471. }
  472. public void setHeadPhoto(String headPhoto) {
  473. this.headPhoto = headPhoto;
  474. }
  475. public String getCode() {
  476. return code;
  477. }
  478. public void setCode(String code) {
  479. this.code = code;
  480. }
  481. public String getBookingId() {
  482. return bookingId;
  483. }
  484. public void setBookingId(String bookingId) {
  485. this.bookingId = bookingId;
  486. }
  487. }