HotelImplDao.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. package com.happy.dao.impl;
  2. import com.happy.Model.Hotel;
  3. import com.happy.Until.Func;
  4. import com.happy.Until.SqlUtil;
  5. import com.happy.Until.UUIDUtil;
  6. import com.happy.dao.HotelDao;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  9. import org.springframework.jdbc.core.namedparam.EmptySqlParameterSource;
  10. import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
  11. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  12. import org.springframework.stereotype.Repository;
  13. import java.util.List;
  14. @Repository("HotelDao")
  15. public class HotelImplDao implements HotelDao {
  16. @Autowired
  17. private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
  18. public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
  19. return namedParameterJdbcTemplate;
  20. }
  21. public void setNamedParameterJdbcTemplate(NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
  22. this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
  23. }
  24. @Override
  25. public int insertHotel(Hotel hotel) {
  26. String sql = "INSERT INTO hotel (id, manager_id,cover_img, hname, hposition, hposition_wens, htype, hstatus, open_time," +
  27. " fitup_time, live_time, leave_time, room_number, remark, hconfig, is_order, is_checkout, lock_time, is_canorder," +
  28. " create_id, create_date, status ,cancel_time) VALUES (:id,:manager_id,:cover_img,:hname,:hposition,:hposition_wens,:htype," +
  29. ":hstatus,:open_time,:fitup_time,:live_time,:leave_time,:room_number,:remark,:hconfig,:is_order,:is_checkout," +
  30. ":lock_time,:is_canorder, :create_id, :create_date, :status , :cancel_time)";
  31. MapSqlParameterSource sps = new MapSqlParameterSource();
  32. sps.addValue("manager_id",hotel.getManagerId());
  33. sps.addValue("cover_img",hotel.getCoverImg());
  34. sps.addValue("hname",hotel.getHname());
  35. sps.addValue("hposition",hotel.getHposition());
  36. sps.addValue("hposition_wens",hotel.getHpositionWens());
  37. sps.addValue("htype",hotel.getHtype());
  38. sps.addValue("hstatus",hotel.getHstatus());
  39. sps.addValue("open_time",hotel.getOpenTime());
  40. sps.addValue("fitup_time",hotel.getFitupTime());
  41. sps.addValue("live_time",hotel.getLiveTime());
  42. sps.addValue("leave_time",hotel.getLeaveTime());
  43. sps.addValue("room_number",hotel.getRoomNumber());
  44. sps.addValue("remark",hotel.getRemark());
  45. sps.addValue("hconfig",hotel.getHconfig());
  46. sps.addValue("is_order",hotel.getIsOrder());
  47. sps.addValue("is_checkout",hotel.getIsCheckout());
  48. sps.addValue("lock_time",hotel.getLockTime());
  49. sps.addValue("is_canorder",hotel.getIsCheckout());
  50. sps.addValue("create_id", hotel.getCreateId());
  51. sps.addValue("create_date",UUIDUtil.getNewDate());
  52. sps.addValue("status", 1);
  53. sps.addValue("cancel_time", hotel.getCancelTime());
  54. if(hotel.getId()==null){
  55. sps.addValue("id", UUIDUtil.generateID());
  56. }else{
  57. sps.addValue("id", hotel.getId());
  58. }
  59. int num = 0;
  60. try{
  61. num = namedParameterJdbcTemplate.update(sql, sps);
  62. }
  63. catch(Exception e){
  64. e.printStackTrace();
  65. }
  66. return num;
  67. }
  68. @Override
  69. public int updateHotel(Hotel hotel) {
  70. StringBuffer stringBuffer = new StringBuffer(" update `hotel` set ");
  71. MapSqlParameterSource sps = new MapSqlParameterSource();
  72. // 将要修改的数据填充到查询语句中
  73. appendValue(hotel,stringBuffer,sps);
  74. stringBuffer.append(" where id=:id ");
  75. sps.addValue("id", hotel.getId());
  76. int num = 0;
  77. try{
  78. num = namedParameterJdbcTemplate.update(stringBuffer.toString(), sps);
  79. }
  80. catch(Exception e){
  81. e.printStackTrace();
  82. }
  83. return num;
  84. }
  85. @Override
  86. public int delHotel(int id) {
  87. String sql = "update `hotel` set status=0 where id=:id";
  88. MapSqlParameterSource sps = new MapSqlParameterSource();
  89. sps.addValue("id",id);
  90. int num = 0;
  91. try{
  92. num = namedParameterJdbcTemplate.update(sql, sps);
  93. }catch (Exception e){
  94. e.printStackTrace();
  95. }
  96. return num;
  97. }
  98. @Override
  99. public Hotel getById(int id) {
  100. String sql = " SELECT a.*, c.manager_phone, b.hotel_township_name,c.hotel_name,d.hTypeName,f.room_number_calc,c.link_pro_url FROM `hotel` a " +
  101. "left join (select manager_id,min(price) min_price ,sum(number) AS room_number_calc from house where status=1 group by manager_id) f on a.manager_id = f.manager_id " +
  102. " LEFT JOIN (SELECT id, corpn_phone manager_phone, hotel_township,hotel_name,link_pro_url FROM admin_manager ) c ON a.manager_id = c.id " +
  103. " LEFT JOIN ( SELECT id,name as hotel_township_name FROM hotel_dict GROUP BY id) b ON b.id = c.hotel_township "+
  104. " LEFT JOIN ( SELECT id,name as hTypeName FROM hotel_dict GROUP BY id) d ON d.id = a.htype "+
  105. " WHERE a.STATUS = 1 AND a.id = :id ";
  106. // String sql = "SELECT * FROM `hotel` WHERE id = :id ";
  107. MapSqlParameterSource sps = new MapSqlParameterSource();
  108. sps.addValue("id",id);
  109. List<Hotel> list = null;
  110. try{
  111. list = namedParameterJdbcTemplate.query(sql, sps,
  112. new BeanPropertyRowMapper<>(Hotel.class));
  113. }catch (Exception e){
  114. e.printStackTrace();
  115. }
  116. if(list != null && list.size()>0) return list.get(0);
  117. return null;
  118. }
  119. @Override
  120. public Hotel getByManagerId(int id) {
  121. String sql = " SELECT a.*, c.manager_phone, b.hotel_township_name,c.hotel_name,c.link_pro_url FROM `hotel` a " +
  122. " LEFT JOIN (SELECT id, corpn_phone manager_phone, hotel_township,hotel_name,link_pro_url FROM admin_manager ) c ON a.manager_id = c.id " +
  123. " LEFT JOIN ( SELECT id,name as hotel_township_name FROM hotel_dict GROUP BY id) b ON b.id = c.hotel_township "+
  124. " WHERE a.STATUS != 0 AND a.manager_id = :manager_id ";
  125. MapSqlParameterSource sps = new MapSqlParameterSource();
  126. sps.addValue("manager_id",id);
  127. List<Hotel> list = null;
  128. try{
  129. list = namedParameterJdbcTemplate.query(sql, sps,
  130. new BeanPropertyRowMapper<>(Hotel.class));
  131. }catch (Exception e){
  132. e.printStackTrace();
  133. }
  134. if(list != null && list.size()>0) return list.get(0);
  135. return null;
  136. }
  137. @Override
  138. public List<Hotel> queryPage(String sqlx, int page, int rows) {
  139. SqlUtil.filterKeyword(sqlx);
  140. int start = (page - 1) * rows;// 每页的起始下标
  141. String sql = "SELECT * FROM `hotel` WHERE status=1 "+sqlx+" ORDER BY id DESC limit :start,:rows ";
  142. MapSqlParameterSource sps = new MapSqlParameterSource();
  143. sps.addValue("start", start);
  144. sps.addValue("rows", rows);
  145. List<Hotel> list = namedParameterJdbcTemplate.query(sql, sps,
  146. new BeanPropertyRowMapper<>(Hotel.class));
  147. if (list != null && list.size() > 0) return list;
  148. return null;
  149. }
  150. // select a.*,b.min_price from hotel a
  151. // left join (select manager_id,min(price) min_price from house group by manager_id) b on a.manager_id = b.manager_id ORDER BY id DESC limit 1,3
  152. @Override
  153. public List<Hotel> queryPagePrice(String sqlx, int page, int rows) {
  154. SqlUtil.filterKeyword(sqlx);
  155. int start = (page - 1) * rows;// 每页的起始下标
  156. String sql = "SELECT a.*,c.hotel_township,(select Count(*) from booking where hotel_id = a.id and order_status = 5) as booking_num,b.min_price,c.hotel_township,d.hotel_township_name, e.h_type_name,c.hotel_name,c.link_pro_url,(SELECT round( AVG( score ), 1 ) as score FROM `booking_comment` bc where bc.comment_parent_id IS NULL AND bc.hotel_id = a.id AND `status` = 1) as score" +
  157. " FROM `hotel` a " +
  158. "left join (select manager_id,min(price) min_price from house where status=1 group by manager_id) b on a.manager_id = b.manager_id " +
  159. "left join (select id,manager_id,hotel_township,hotel_name,type,status,link_pro_url from admin_manager ) c on a.manager_id = c.id " +
  160. "LEFT JOIN ( SELECT id,name as hotel_township_name,status FROM hotel_dict GROUP BY id) d ON d.id = c.hotel_township " +
  161. "LEFT JOIN ( SELECT id,name as h_type_name FROM hotel_dict GROUP BY id) e ON e.id = a.htype " +
  162. " WHERE hstatus = 1 and a.status=1 and c.status = 1 "+sqlx+" ORDER BY booking_num DESC limit :start,:rows ";
  163. MapSqlParameterSource sps = new MapSqlParameterSource();
  164. sps.addValue("start", start);
  165. sps.addValue("rows", rows);
  166. List<Hotel> list = namedParameterJdbcTemplate.query(sql, sps,
  167. new BeanPropertyRowMapper<>(Hotel.class));
  168. if (list != null && list.size() > 0) return list;
  169. return null;
  170. }
  171. /**
  172. * 优选 按评分倒序排序
  173. * @param sqlx
  174. * @param page
  175. * @param rows
  176. * @return
  177. */
  178. @Override
  179. public List<Hotel> queryPreferredPagePrice(String sqlx, int page, int rows) {
  180. SqlUtil.filterKeyword(sqlx);
  181. int start = (page - 1) * rows;// 每页的起始下标
  182. String sql = "SELECT a.*,(SELECT round( AVG( score ), 1 ) as score FROM booking_comment WHERE comment_parent_id IS NULL AND hotel_id = a.id AND status = 1) as score_num,b.min_price,c.hotel_township,d.hotel_township_name, e.h_type_name,c.hotel_name,c.link_pro_url,(SELECT round( AVG( score ), 1 ) as score FROM `booking_comment` bc where bc.comment_parent_id IS NULL AND bc.hotel_id = a.id AND `status` = 1) as score" +
  183. " FROM `hotel` a " +
  184. "left join (select manager_id,min(price) min_price from house where status=1 group by manager_id) b on a.manager_id = b.manager_id " +
  185. "left join (select id,manager_id,hotel_township,hotel_name,type,status,link_pro_url from admin_manager ) c on a.manager_id = c.id " +
  186. "LEFT JOIN ( SELECT id,name as hotel_township_name,status FROM hotel_dict GROUP BY id) d ON d.id = c.hotel_township " +
  187. "LEFT JOIN ( SELECT id,name as h_type_name FROM hotel_dict GROUP BY id) e ON e.id = a.htype " +
  188. " WHERE hstatus = 1 and a.status=1 and c.status = 1 "+sqlx+" ORDER BY score_num DESC limit :start,:rows ";
  189. MapSqlParameterSource sps = new MapSqlParameterSource();
  190. sps.addValue("start", start);
  191. sps.addValue("rows", rows);
  192. List<Hotel> list = namedParameterJdbcTemplate.query(sql, sps,
  193. new BeanPropertyRowMapper<>(Hotel.class));
  194. if (list != null && list.size() > 0) return list;
  195. return null;
  196. }
  197. /**
  198. * 精选 按销售量倒序排序
  199. * @param sqlx
  200. * @param page
  201. * @param rows
  202. * @return
  203. */
  204. @Override
  205. public List<Hotel> querySelectedPagePrice(String sqlx, int page, int rows) {
  206. SqlUtil.filterKeyword(sqlx);
  207. int start = (page - 1) * rows;// 每页的起始下标
  208. String sql = "SELECT a.*,(select Count(*) from booking where hotel_id = a.id and order_status = 5) as booking_num,b.min_price,c.hotel_township,d.hotel_township_name, e.h_type_name,c.hotel_name,c.link_pro_url,(SELECT round( AVG( score ), 1 ) as score FROM `booking_comment` bc where bc.comment_parent_id IS NULL AND bc.hotel_id = a.id AND `status` = 1) as score" +
  209. " FROM `hotel` a " +
  210. "left join (select manager_id,min(price) min_price from house where status=1 group by manager_id) b on a.manager_id = b.manager_id " +
  211. "left join (select id,manager_id,hotel_township,hotel_name,type,status,link_pro_url from admin_manager ) c on a.manager_id = c.id " +
  212. "LEFT JOIN ( SELECT id,name as hotel_township_name,status FROM hotel_dict GROUP BY id) d ON d.id = c.hotel_township " +
  213. "LEFT JOIN ( SELECT id,name as h_type_name FROM hotel_dict GROUP BY id) e ON e.id = a.htype " +
  214. " WHERE hstatus = 1 and a.status=1 and c.status = 1 and c.type in ('2','3') "+sqlx+" ORDER BY booking_num DESC ";
  215. MapSqlParameterSource sps = new MapSqlParameterSource();
  216. sps.addValue("start", start);
  217. sps.addValue("rows", rows);
  218. List<Hotel> list = namedParameterJdbcTemplate.query(sql, sps,
  219. new BeanPropertyRowMapper<>(Hotel.class));
  220. if (list != null && list.size() > 0) return list;
  221. return null;
  222. }
  223. @Override
  224. public int queryTotalPrice(String sqlx) {
  225. // String sql = "SELECT count(*) FROM`hotel` a " +
  226. // "left join (select manager_id,min(price) min_price from house group by manager_id) b on a.manager_id = b.manager_id " +
  227. // "left join (select manager_id,hotel_township hotel_township from admin_manager group by manager_id) c on a.manager_id = c.manager_id " +
  228. // "where status=1 "+sqlx;
  229. SqlUtil.filterKeyword(sqlx);
  230. String sql = "SELECT count(1) FROM `hotel` a " +
  231. "left join (select manager_id,min(price) min_price from house where status=1 group by manager_id) b on a.manager_id = b.manager_id " +
  232. "left join (select id,manager_id,hotel_township,hotel_name,type,status,link_pro_url from admin_manager ) c on a.manager_id = c.id " +
  233. "LEFT JOIN ( SELECT id,name as hotel_township_name,status FROM hotel_dict GROUP BY id) d ON d.id = c.hotel_township " +
  234. "LEFT JOIN ( SELECT id,name as h_type_name FROM hotel_dict GROUP BY id) e ON e.id = a.htype " +
  235. " WHERE hstatus = 1 and a.status=1 and c.status = 1 and c.type in ('2','3') "+sqlx;
  236. MapSqlParameterSource sps = new MapSqlParameterSource();
  237. return namedParameterJdbcTemplate.queryForInt(sql, sps);
  238. }
  239. @Override
  240. public int queryTotal(String sqlx) {
  241. SqlUtil.filterKeyword(sqlx);
  242. String sql = "SELECT count(*) FROM`hotel` where status=1 "+sqlx;
  243. MapSqlParameterSource sps = new MapSqlParameterSource();
  244. return namedParameterJdbcTemplate.queryForInt(sql, sps);
  245. }
  246. @Override
  247. public List<Hotel> queryList(String sqlx) {
  248. SqlUtil.filterKeyword(sqlx);
  249. String sql = "SELECT * FROM `hotel` WHERE status=1 "+sqlx;
  250. List<Hotel> list = null;
  251. try{
  252. list = namedParameterJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Hotel.class));
  253. }catch (Exception e){
  254. e.printStackTrace();
  255. }
  256. if(list != null && list.size()>0) return list;
  257. return null;
  258. }
  259. public void appendValue(Hotel hotel, StringBuffer stringBuffer, MapSqlParameterSource sps){
  260. if (!Func.checkNull(String.valueOf(hotel.getManagerId()))){
  261. stringBuffer.append(" manager_id=:manager_id ,");
  262. sps.addValue("manager_id",hotel.getManagerId());
  263. }
  264. if (!Func.checkNull(hotel.getHname())){
  265. stringBuffer.append(" hname=:hname ,");
  266. sps.addValue("hname",hotel.getHname());
  267. }
  268. if (!Func.checkNull(hotel.getCoverImg())){
  269. stringBuffer.append(" cover_img=:cover_img ,");
  270. sps.addValue("cover_img",hotel.getCoverImg());
  271. }
  272. if (!Func.checkNull(hotel.getHposition())){
  273. stringBuffer.append(" hposition=:hposition ,");
  274. sps.addValue("hposition",hotel.getHposition());
  275. }
  276. if (!Func.checkNull(hotel.getHpositionWens())){
  277. stringBuffer.append(" hposition_wens=:hposition_wens ,");
  278. sps.addValue("hposition_wens",hotel.getHpositionWens());
  279. }
  280. if (!Func.checkNull(hotel.getHtype())){
  281. stringBuffer.append(" htype=:htype ,");
  282. sps.addValue("htype",hotel.getHtype());
  283. }
  284. if (!Func.checkNull(String.valueOf(hotel.getHstatus()))){
  285. stringBuffer.append(" hstatus=:hstatus ,");
  286. sps.addValue("hstatus",hotel.getHstatus());
  287. }
  288. if (!Func.checkNull(hotel.getOpenTime())){
  289. stringBuffer.append(" open_time=:open_time ,");
  290. sps.addValue("open_time",hotel.getOpenTime());
  291. }
  292. if (!Func.checkNull(hotel.getFitupTime())){
  293. stringBuffer.append(" fitup_time=:fitup_time ,");
  294. sps.addValue("fitup_time",hotel.getFitupTime());
  295. }
  296. if (!Func.checkNull(hotel.getLiveTime())){
  297. stringBuffer.append(" live_time=:live_time ,");
  298. sps.addValue("live_time",hotel.getLiveTime());
  299. }
  300. if (!Func.checkNull(hotel.getLeaveTime())){
  301. stringBuffer.append(" leave_time=:leave_time ,");
  302. sps.addValue("leave_time",hotel.getLeaveTime());
  303. }
  304. if (!Func.checkNull(String.valueOf(hotel.getRoomNumber()))){
  305. stringBuffer.append(" room_number=:room_number ,");
  306. sps.addValue("room_number",hotel.getRoomNumber());
  307. }
  308. if (!Func.checkNull(hotel.getRemark())){
  309. stringBuffer.append(" remark=:remark ,");
  310. sps.addValue("remark",hotel.getRemark());
  311. }
  312. if (!Func.checkNull(hotel.getHconfig())){
  313. stringBuffer.append(" hconfig=:hconfig ,");
  314. sps.addValue("hconfig",hotel.getHconfig());
  315. }
  316. if (!Func.checkNull(String.valueOf(hotel.getIsOrder()))){
  317. stringBuffer.append(" is_order=:is_order ,");
  318. sps.addValue("is_order",hotel.getIsOrder());
  319. }
  320. if (!Func.checkNull(String.valueOf(hotel.getIsCheckout()))){
  321. stringBuffer.append(" is_checkout=:is_checkout ,");
  322. sps.addValue("is_checkout",hotel.getIsCheckout());
  323. }
  324. if (!Func.checkNull(hotel.getLockTime())){
  325. stringBuffer.append(" lock_time=:lock_time ,");
  326. sps.addValue("lock_time",hotel.getLockTime());
  327. }
  328. if (!Func.checkNull(String.valueOf(hotel.getIsCanorder()))){
  329. stringBuffer.append(" is_canorder=:is_canorder ,");
  330. sps.addValue("is_canorder",hotel.getIsCanorder());
  331. }
  332. if (!Func.checkNull(String.valueOf(hotel.getStatus()))){
  333. stringBuffer.append(" status=:status ,");
  334. sps.addValue("status", hotel.getStatus());
  335. }
  336. if (!Func.checkNull(String.valueOf(hotel.getCancelTime()))){
  337. stringBuffer.append(" cancel_time=:cancel_time ,");
  338. sps.addValue("cancel_time", hotel.getCancelTime());
  339. }
  340. stringBuffer.append(" modify_date=:modify_date ");
  341. sps.addValue("modify_date", UUIDUtil.getNewDate());
  342. }
  343. }