@源码地址来源: https://minglisoft.cn/honghu/business.html
/**
 * Copyright &copy; 2012-2017 <a href="http://minglisoft.cn">HongHu</a> All rights reserved.
 */
package com.honghu.cloud.controller;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.honghu.cloud.bean.EvaluatePraise;
import com.honghu.cloud.bean.GoodsProperty;
import com.honghu.cloud.bean.HotelSales;
import com.honghu.cloud.bean.Store;
import com.honghu.cloud.bean.SysDict;
import com.honghu.cloud.code.ResponseCode;
import com.honghu.cloud.common.page.Page;
import com.honghu.cloud.dto.AccessoryDto;
import com.honghu.cloud.dto.EvaluateDto;
import com.honghu.cloud.dto.GoodsDto;
import com.honghu.cloud.dto.OrderFormDto;
import com.honghu.cloud.dto.UserDto;
import com.honghu.cloud.feign.AccessoryFeignClient;
import com.honghu.cloud.feign.EvaluateFeignClient;
import com.honghu.cloud.feign.GoodsFeignClient;
import com.honghu.cloud.feign.HandleOrderFormFeignClient;
import com.honghu.cloud.feign.UserFeignClient;
import com.honghu.cloud.service.IEvaluatePraiseService;
import com.honghu.cloud.service.IHotelSalesService;
import com.honghu.cloud.service.IStoreService;
import com.honghu.cloud.service.ISysDictService;
import com.honghu.cloud.tools.QueryTools;
import com.honghu.cloud.tools.SecurityUserHolder;
import com.honghu.cloud.tools.UtilDate;
import com.honghu.cloud.utils.CommUtil;

import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 * 酒店Controller
 * 
 * @author Administrator
 * @param <E>
 *
 */
@Slf4j
@RestController
@RequestMapping(value = "/hotel")
public class HotelController<E> {
	
	@Autowired
	private QueryTools queryTools;
	@Autowired
	private ISysDictService sysDictService;
	@Autowired
	private IStoreService storeService;
	@Autowired
	private GoodsFeignClient goodsFeignClient;
	@Autowired
	private IHotelSalesService hotelSalesService;
	@Autowired
	private UserFeignClient userFeignClient;
	@Autowired
	private HandleOrderFormFeignClient handleOrderFormFeignClient;
	@Autowired
	private EvaluateFeignClient evaluateFeignClient;
	@Autowired
	private IEvaluatePraiseService evaluatePraiseService;
	@Autowired
	private AccessoryFeignClient accessoryFeignClient;
	
	/**
	 * 酒店首页
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/hotel_index", method = RequestMethod.POST)
	public Map<String, Object> hotel_index(HttpServletRequest request,
			HttpServletResponse response, @RequestBody JSONObject json) {
		String currentPage = json.optString("currentPage");
		String mc_id = json.optString("mc_id");
		String lat = json.optString("lat"); //lat=26.68
		String lng = json.optString("lng"); //lng=106.63
		
		if(StringUtils.isBlank(lat) || StringUtils.isBlank(lng)){
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		
		Map<String, Object> result = new HashMap<String, Object>();
		List<SysDict> scList = sysDictService.selectByType("hotel_star_class");
		List<SysDict> psList = sysDictService.selectByType("hotel_prices_section");
		result.put("scList", scList);  //星级
		result.put("psList", psList);  //价格区间
		
		Map<String, Object> maps = queryTools.getParams(currentPage, 12, null, null);
		if(StringUtils.isBlank(mc_id)){
			mc_id = "17";
		}
		maps.put("mc_id",mc_id);
		maps.put("well_evaluate", "well_evaluate");
		
		maps.put("lat", lat);
		maps.put("lng", lng);
		maps.put("group_by", "group_by");
		maps.put("orderBy", "distance");
		maps.put("orderType", "ASC");
		
		Page<Store> pList  = storeService.listPagesNew(maps);
		result.put("pList", pList);
		
		return ResponseCode.buildEnumMap(ResponseCode.SUCCESS, result);
	}
	

	/**
	 * 酒店列表
	 * @param request
	 * @param response
	 * 			key:品牌  酒店名称  位置
	 * @return
	 */
	@RequestMapping(value = "/hotel_list", method = RequestMethod.POST)
	public Map<String, Object> hotel_list(HttpServletRequest request, HttpServletResponse response,
			@RequestBody JSONObject json) {
		
		String key = json.optString("key");
		String currentPage = json.optString("currentPage");
		String beginPrice = json.optString("beginPrice");
		String endPrice = json.optString("endPrice");
		String store_distance = json.optString("store_distance");
		String hscid = json.optString("hscid");
		String orderby = json.optString("orderby");
		String aaid = json.optString("aaid");
		String acid = json.optString("acid");
		String hdid = json.optString("hdid");
		String house_type_id = json.optString("house_type_id");
		String breakfast_calss_id = json.optString("breakfast_calss_id");
		String checkinTime = json.optString("checkinTime");
		String checkoutTime = json.optString("checkoutTime");
		String mc_id = json.optString("mc_id");
		String lat = json.optString("lat");
		String lng = json.optString("lng");
		
		if(StringUtils.isBlank(lat) || StringUtils.isBlank(lng)){
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		
		Map<String, Object> maps = queryTools.getParams(currentPage, 12, null, null);
		//如果没传时间默认是今天的时间
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		if(StringUtils.isBlank(checkinTime) || StringUtils.isBlank(checkoutTime)){
			Date now = new Date();
			checkinTime = sdf.format(now);
			
			Calendar calBegin = Calendar.getInstance();
		     // 使用给定的 Date 设置此 Calendar 的时间
		    calBegin.setTime(now);
			calBegin.add(Calendar.DAY_OF_MONTH, 1);
			checkoutTime = sdf.format(calBegin.getTime());
		}
		if(StringUtils.isBlank(mc_id)){
			mc_id = "17";
		}
		maps.put("mc_id",mc_id);
		maps.put("well_evaluate", "well_evaluate");
		maps.put("lat", lat);
		maps.put("lng", lng);
		maps.put("group_by", "group_by");
		
		if(StringUtils.isNotBlank(key)){  //位置酒店名称品牌筛选
			maps.put("key", key);
		}
		if(StringUtils.isNotBlank(beginPrice)){ //价格阶段筛选
			maps.put("beginPrice", beginPrice);
		}
		if(StringUtils.isNotBlank(endPrice)){
			maps.put("endPrice", endPrice);
		}
		if(StringUtils.isNotBlank(store_distance)){//距离筛选<500米这种
			maps.put("store_distance_where", store_distance);
		}
		if(StringUtils.isNotBlank(hscid)){  //星级筛选
			maps.put("hotel_starclass_id", hscid);
		}
		if(StringUtils.isNotBlank(hdid)){  //酒店类型筛选
			maps.put("hotel_dit_id", hdid);
		}
		if(StringUtils.isNotBlank(house_type_id)){  //房型
			maps.put("house_type_id", house_type_id);
		}
		if(StringUtils.isNotBlank(breakfast_calss_id)){ //早餐
			maps.put("breakfast_calss_id", breakfast_calss_id);
		}
		if(StringUtils.isNotBlank(aaid)){ //天天特惠
			maps.put("aaid", aaid);
		}
		if(StringUtils.isNotBlank(acid)){ //住客印象
			SysDict dict = sysDictService.selectByPrimaryKey(Long.parseLong(acid));
			maps.put("ac_name", dict.getLabel());
		}
		if("evaluate".equals(orderby)){ //好评排序
			maps.put("orderBy", "IFNULL(avg(sp.store_evaluate), 5)");
			maps.put("orderType", "DESC");
		}else if("lowPrice".equals(orderby)){//低价排序
			maps.put("orderBy", "minPrice");
			maps.put("orderType", "ASC");
		}else if("browse_count".equals(orderby)){ //人气优先
			maps.put("orderBy", "obj.favorite_count");
			maps.put("orderType", "DESC");
		}else{  //距离排序  ("distance".equals(orderby))
			maps.put("orderBy", "distance");
			maps.put("orderType", "ASC");
		}
		Map<String, Object> result = new HashMap<String, Object>();
		
		Page<Store> pList  = storeService.listPagesNew(maps);
		result.put("pList", pList);
		
		//筛选基础数据给到
		List<SysDict> scList = sysDictService.selectByType("hotel_star_class");
		List<SysDict> psList = sysDictService.selectByType("hotel_prices_section");
		List<SysDict> atList = sysDictService.selectByType("hotel_attribute_type");
		List<SysDict> abList = sysDictService.selectByType("hotel_attribute_bed");
		List<SysDict> atbList = sysDictService.selectByType("hotel_attribute_breakfast");
		List<SysDict> aaList = sysDictService.selectByType("goods_activity");
		List<SysDict> acList = sysDictService.selectByType("hotel_attribute_comment");
		
		result.put("scList", scList);  //星级
		result.put("psList", psList);  //价格区间
		result.put("atList", atList);  //酒店类型
		result.put("abList", abList);  //房型
		result.put("atbList", atbList);  //早餐
		result.put("aaList", aaList);  //优惠价格
		result.put("acList", acList);  //住客印象
		
		result.put("lat", lat);
		result.put("lng", lng);
		
		result.put("checkinTime", checkinTime);
		result.put("checkoutTime", checkoutTime);
		result.put("currentPage", currentPage);
		
		
		//前端展示日期转换
		List<String> strIn = Arrays.asList(checkinTime.split("-"));
		List<String> strOut = Arrays.asList(checkoutTime.split("-"));
		String shortInTime = Integer.parseInt(strIn.get(1))+"-"+strIn.get(2);
		String shortOutTime = Integer.parseInt(strOut.get(1))+"-"+strOut.get(2);
		result.put("shortInTime", shortInTime);
		result.put("shortOutTime", shortOutTime);
		
		try {
	        int days = UtilDate.daysBetween(sdf.parse(checkinTime), sdf.parse(checkoutTime));
	        result.put("days", days);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		return ResponseCode.buildEnumMap(ResponseCode.SUCCESS, result);
	}
	
	
	//酒店店铺首页
	@RequestMapping(value = "/hotel_store_index", method = RequestMethod.POST)
	public Map<String, Object> hotel_store_index(HttpServletRequest request,
			HttpServletResponse response,@RequestBody JSONObject json){
		
		String key = json.optString("key");
		String currentPage = json.optString("currentPage");
		String store_id = json.optString("store_id");
		String checkinTime = json.optString("checkinTime");
		String checkoutTime = json.optString("checkoutTime");
		String lat = json.optString("lat");
		String lng = json.optString("lng");
		
		if(StringUtils.isBlank(store_id) || StringUtils.isBlank(checkinTime) || StringUtils.isBlank(checkoutTime)){
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		Store store = this.storeService.selectByPrimaryKey(Long.parseLong(store_id)); // 根据店铺ID获取店铺信息
		if (store == null) {
			return ResponseCode.buildCodeMap("20001", "不存在该店铺信息!", null);
		}
		
		if((CommUtil.null2Int(store.getStore_status())==25)||(CommUtil.null2Int(store.getStore_status())==26)){
			return ResponseCode.buildCodeMap("20002", "店铺因为合同到期现已关闭,如有疑问请联系商城客服", null);
		}else if(store.getStore_status()<15){	
			return ResponseCode.buildCodeMap("20003", "店铺未正常营业", null);
		}else if(store.getStore_status()==20){
			return ResponseCode.buildCodeMap("20004", "店铺因为违反商城相关规定现已关闭,如有疑问请联系商城客服", null);
		}
		
		Map<String, Object> result = new HashMap<String, Object>();
		
		//如果没传时间默认是今天的时间
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		if(checkinTime == null || checkoutTime == null){
			Date now = new Date();
			checkinTime = sdf.format(now);
			
			Calendar calBegin = Calendar.getInstance();
		     // 使用给定的 Date 设置此 Calendar 的时间
		    calBegin.setTime(now);
			calBegin.add(Calendar.DAY_OF_MONTH, 1);
			
			checkoutTime = sdf.format(calBegin.getTime());
		}
		//type = "-1";  //住宿   -2 餐饮
		Map<String, Object> maps = Maps.newHashMap();
		maps.put("lat", lat);
		maps.put("lng", lng);
		//maps.put("store_distance", "store_distance");
		maps.put("id", store_id);
		List<Store> storeList = storeService.queryPagesNew(maps);
		if(storeList!=null && storeList.size()>0){
			Map<String, Object> params = queryTools.getParams(currentPage, 12, null, null);
			params.put("goods_store_id", storeList.get(0).getId());
			//params.put("gc_id", type);
			params.put("hotel_store_index", "yes");
			params.put("checkinTime", checkinTime);
			params.put("checkoutTime", checkoutTime);
			params.put("goods_status", 0);
			if(StringUtils.isNotBlank(key)){
				params.put("honghu_goods_name", key);
			}
			//IPageList pList  = goodsService.listPages(params);
			Map<String, Object> pList  =  goodsFeignClient.list(params);
			result.put("goodsList", pList);
			store = storeList.get(0);
			result.put("store", store);
			//评论数量
			params.clear();
			params.put("store_id", store_id);
			int evaluateCount = evaluateFeignClient.selectCount(params);
			result.put("evaluateCount", evaluateCount);
		}
		result.put("checkinTime", checkinTime);
		result.put("checkoutTime", checkoutTime);
		result.put("key", key);
		result.put("store_id", store_id);
		
		//前端展示日期转换
		List<String> strIn = Arrays.asList(checkinTime.split("-"));
		List<String> strOut = Arrays.asList(checkoutTime.split("-"));
		String shortInTime = Integer.parseInt(strIn.get(1))+"-"+strIn.get(2);
		String shortOutTime = Integer.parseInt(strOut.get(1))+"-"+strOut.get(2);
		result.put("shortInTime", shortInTime);
		result.put("shortOutTime", shortOutTime);
		
		try {
	        int days = UtilDate.daysBetween(sdf.parse(checkinTime), sdf.parse(checkoutTime));
	        result.put("days", days);
		} catch (ParseException e) {
		}
		UserDto user = SecurityUserHolder.getCurrentUser(request);
		result.put("user", user);
		
		return ResponseCode.buildEnumMap(ResponseCode.SUCCESS, result);
	}
	
	
	
	/**
	 * 房间详情页(预定)
	 * @param request
	 * @param response
	 * @param goods_id 房间编号
	 * @param checkInTime 入住时间
	 * @param departureTime 离店时间
	 * @return
	 */
	@RequestMapping(value = "/room_info", method = RequestMethod.POST)
	public Map<String,Object> getRoomInfo(HttpServletRequest request,HttpServletResponse response, @RequestBody JSONObject json){
		
		String goods_id = json.optString("goods_id");
		if(StringUtils.isBlank(goods_id)){
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		Map<String, Object> result = new HashMap<String, Object>();
		UserDto user = SecurityUserHolder.getCurrentUser(request);
		if(user != null){
			result.put("code", 200);	//用户登入状态
		}else{
			result.put("code", 201);	//用户未登入状态
		}
		
		if(StringUtils.isNotEmpty(goods_id)){		//非空验证
			//GoodsDto goods = this.goodsFeignClient.getSimpleGoodsByid(CommUtil.null2Long(goods_id)); 		//根据编号查询房间信息
			GoodsDto goods = this.goodsFeignClient.selectByPrimaryKey(CommUtil.null2Long(goods_id)); 		//根据编号查询房间信息
			List<GoodsProperty> lists = Lists.newArrayList();										//房间属性集合
			if(null!=goods){
				JSONArray goodsPropertyArray = JSONArray.fromObject(goods.getGoods_property().trim());	//解析楚房间属性
				for (int i=0; i<goodsPropertyArray.size();i++) {
					JSONObject object = (JSONObject)goodsPropertyArray.get(i);
					//lists.add(object.optString("val"));				//获取房间属性信息
					GoodsProperty gProperty = (GoodsProperty)JSONObject.toBean(object,GoodsProperty.class);
					lists.add(gProperty);								//将房间属性添加到list集合
				}
				result.put("goods_pro", lists);						//返回房间属性信息
				
				// 商品图片
				List<AccessoryDto> goods_photos = accessoryFeignClient.getGoodsPhotosByAccessoryId(goods.getId());
				goods.setGoods_photos(goods_photos);
			}
			result.put("goods",goods);			//返回房间信息
		}
		return ResponseCode.buildEnumMap(ResponseCode.SUCCESS, result);
	}
	
	
	
	/**
	 * 订房(下订单)
	 * @param request
	 * @param response
	 * @param goods_id	房间编号
	 * @param checkInTime 预计入住时间
	 * @param departureTime	预计离店时间
	 * @return
	 */
	@RequestMapping(value = "/reservation", method = RequestMethod.POST)
	public Map<String, Object> reservation(HttpServletRequest request,HttpServletResponse response,@RequestBody JSONObject json){
		
		String goods_id = json.optString("goods_id");
		String checkinTime = json.optString("checkinTime");
		String checkoutTime = json.optString("checkoutTime");
		if(StringUtils.isBlank(goods_id)){
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		Map<String, Object> result = new HashMap<String, Object>();
		
		GoodsDto goods = this.goodsFeignClient.selectByPrimaryKey(CommUtil.null2Long(goods_id)); 			//根据编号查询房间信息
		result.put("goods", goods);
		if(goods == null){
			return ResponseCode.buildCodeMap("20005", "查询不到该商品信息", null);
		}
		// 商品图片
		List<AccessoryDto> goods_photos = accessoryFeignClient.getGoodsPhotosByAccessoryId(goods.getId());
		goods.setGoods_photos(goods_photos);
		
		JSONArray goodsPropertyArray = JSONArray.fromObject(goods.getGoods_property().trim());	//解析楚房间属性
		List<GoodsProperty> lists = Lists.newArrayList();										//房间集合
		for (int i=0; i<goodsPropertyArray.size();i++) {
			JSONObject object = (JSONObject)goodsPropertyArray.get(i);
			GoodsProperty gProperty = (GoodsProperty)JSONObject.toBean(object,GoodsProperty.class);
			lists.add(gProperty);								//将房间属性添加到list集合
		}
		result.put("goods_pro", lists);						//返回房间属性信息
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
	        int days = UtilDate.daysBetween(sdf.parse(checkinTime), sdf.parse(checkoutTime));
	        result.put("days", days);
		} catch (ParseException e) {
		}
		List<String> strIn = Arrays.asList(checkinTime.split("-"));
		List<String> strOut = Arrays.asList(checkoutTime.split("-"));
		String shortInTime = Integer.parseInt(strIn.get(1))+"月"+strIn.get(2)+"日";
		String shortOutTime = Integer.parseInt(strOut.get(1))+"月"+strOut.get(2)+"日";
		result.put("checkinTime", shortInTime);		
		result.put("checkoutTime", shortOutTime);	
				
	   return ResponseCode.buildEnumMap(ResponseCode.SUCCESS, result);
	}
	
	
	//酒店提交定单
	@RequestMapping(value = "/hotel_submit_order", method = RequestMethod.POST)
	public Map<String, Object> hotel_submit_order(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject json){
		
		String checkinTime = json.optString("checkinTime");
		String checkoutTime = json.optString("checkoutTime");
		String goods_id = json.optString("goods_id");
		String count = json.optString("count");
		String name = json.optString("name");
		String phone = json.optString("phone");
		String payType = json.optString("payType");
		String order_types = json.optString("order_types");
		String into_date = json.optString("into_date");   //预计到店的时间
		
		/*goods_id = "609";
		count = "2";
		name = "冯宝宝";
		phone = "13786165231";
		
		//payType = "online";
		checkinTime = "2019-12-07";
		checkoutTime = "2019-12-09";*/
		GoodsDto goods = goodsFeignClient.selectByPrimaryKey(Long.parseLong(goods_id));
		if (goods == null) {
			return ResponseCode.buildCodeMap("20005", "查询不到该房间信息", null);
		}
		if (goods.getGoods_status() != 0) {
			return ResponseCode.buildCodeMap("20010", "酒店房间未上架,不能预订", null);
		}
		//查询是否满房这段时间
		Map<String, Object> params = Maps.newHashMap();
		params.put("checkinTime", checkinTime);
		params.put("checkoutTime", checkoutTime);
		params.put("goods_id", goods_id);
		List<HotelSales> hsList =  hotelSalesService.queryPages(params);
		if(hsList != null && hsList.size() > 0){
			for (HotelSales hotelSales : hsList) {
				if(hotelSales.getSales_num()>=goods.getGoods_inventory()){
					return ResponseCode.buildCodeMap("20006", "订单中房间已满,请重新下单", null);
				}else if(hotelSales.getSales_num()+Integer.parseInt(count) > goods.getGoods_inventory()){
					return ResponseCode.buildCodeMap("20007", "订单中房间库存不足,请重新下单", null);
				}
			}
		}
		if(Integer.parseInt(count) > goods.getGoods_inventory()){
			return ResponseCode.buildCodeMap("20008", "订单数超过酒店房型数量,请重新下单", null);
		}
		UserDto user = SecurityUserHolder.getCurrentUser(request);
		if(user == null){
			return ResponseCode.buildEnumMap(ResponseCode.TOKEN_EXPIRE, null);
		}
		UserDto buyer = this.userFeignClient.selectByPrimaryKey(user.getId());
		if(buyer.getStore_id() != null && buyer.getStore_id().longValue() == goods.getGoods_store_id().longValue()){
			return ResponseCode.buildCodeMap("20009", "不能预订自己店铺的房间", null);
		}
		Map<String, Object> maps = new HashMap<String, Object>();
		maps.put("goods_id", goods_id.toString());
		maps.put("checkinName", name);
		maps.put("mobile", phone);
		maps.put("count", count.toString());
		maps.put("checkinTime", checkinTime);
		maps.put("checkoutTime", checkoutTime);
		maps.put("payType", payType);
		maps.put("buyer_id", user.getId().toString());
		maps.put("order_type", order_types);
		maps.put("into_date", into_date);
		
		OrderFormDto main_order = handleOrderFormFeignClient.hotelSubmitOrderForm(maps);

		//更新库存(酒店换成添加入住记录)
		this.hotelSalesService.addCheckinlog(checkinTime, checkoutTime, Integer.valueOf(count), goods.getId());
		
		Map<String, Object> result = new HashMap<String, Object>();
		
		result.put("all_of_price",main_order.getTotalPrice());
		//result.put("user", user);
		result.put("from", "goodsCart");
		result.put("order", main_order);

		return ResponseCode.buildEnumMap(ResponseCode.SUCCESS, result);
		
	}
	
	
	/**
	 * 酒店评价列表
	 * @param request
	 * @param response
	 * @param store_id 酒店编号
	 * @param currentPage 当前页数
	 * @return
	 */
	@RequestMapping(value = "/hotel_evaluate_list", method = RequestMethod.POST)
	public Map<String, Object> hotel_evaluate_list(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject json ) {
		
		String currentPage = json.optString("currentPage");
		String store_id = json.optString("store_id");
		String type = json.optString("type");
		
		if(StringUtils.isBlank(store_id)){
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		Store store = storeService.selectByPrimaryKey(Long.parseLong(store_id));
		if(store == null){
			return ResponseCode.buildCodeMap("20010", "查询不到店铺信息", null);
		}
		
		UserDto user = SecurityUserHolder.getCurrentUser(request);
		if(user == null){
			return ResponseCode.buildEnumMap(ResponseCode.TOKEN_EXPIRE, null);
		}
		
		Map<String, Object> params = queryTools.getParams(currentPage, 12, "addTime", "desc");
		
		params.put("creater_id", user.getId());	//当前用户编号
		params.put("store_id", store_id);
		params.put("hotel", "hotel");						//行业标识
		if(StringUtils.contains(type, "lately")){
			params.put("lately", "lately");				//最新
		}
		if(StringUtils.contains(type, "lowScore")){
			params.put("lowScore", "lowScore");			//低分
		}
		if(StringUtils.contains(type, "slideShow")){
			params.put("slideShow", "slideShow");		//晒图
		}
		
		Map<String, Object> result = new HashMap<String, Object>();
		//IPageList pList = this.evaluateService.list(params);
		Map<String, Object> pList = evaluateFeignClient.list(params);
		result.put("pList", pList);
		Map<String, Object> maps = Maps.newHashMap();
		maps.put("store_id", store_id);
		EvaluateDto evaluate = this.evaluateFeignClient.getEvaluateAvgScore(maps);			//获取所有评价信息
		if(evaluate == null){
			evaluate = new EvaluateDto();
		}
		evaluate.setAvgEvaluate(new BigDecimal("5.0"));
		if(store.getPoint().getStore_evaluate() != null){
			evaluate.setAvgEvaluate(store.getPoint().getStore_evaluate());
		}
		result.put("evaluate", evaluate);
		//全部
		Integer countAll = this.evaluateFeignClient.getEvaluate(maps);					//所有评价信息
		result.put("countAll", countAll);
		//最新
		maps.put("lately", "lately");
		Integer latelyCount = this.evaluateFeignClient.getEvaluate(maps);					//所有最新评价
		result.put("lately", latelyCount);
		//低分
		maps.put("lately", null);
		maps.put("lowScore", "lowScore");
		Integer lowScore = this.evaluateFeignClient.getEvaluate(maps);					//所有低分评价
		result.put("lowScore", lowScore);
		//晒图
		maps.put("lowScore",null);
		maps.put("slideShow", "slideShow");
		Integer slideShow = this.evaluateFeignClient.getEvaluate(maps);				//所有晒图评价
		result.put("slideShow", slideShow);
		
		params.clear();
		params.put("store_id",CommUtil.null2Long(store_id));
		params.put("hotel_type", "hotel_evaluate_praise");
		List<SysDict> praise = this.sysDictService.getByEvaluateLabelCount(params);
		result.put("praise", praise);	//好评标签
		params.clear();
		params.put("store_id",CommUtil.null2Long(store_id));
		params.put("hotel_type", "hotel_evaluate_bad");
		List<SysDict> bad = this.sysDictService.getByEvaluateLabelCount(params);
		result.put("bad", bad);		//差评标签
		return ResponseCode.buildEnumMap(ResponseCode.SUCCESS, result);
	}

	/**
	 * 评价信息点赞
	 * @param fabulous
	 * @param id
	 */
	@RequestMapping(value = "/ajaxfabulous", method = RequestMethod.POST)
	public Map<String, Object> ajaxFabulous(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject json ){
		String evaluate_id = json.optString("evaluate_id");
		if(StringUtils.isBlank(evaluate_id)){
			return ResponseCode.buildReturnMap(ResponseCode.PARAM_ERROR, null);
		}
		UserDto user = SecurityUserHolder.getCurrentUser(request);
		if(user == null ){
			return ResponseCode.buildReturnMap(ResponseCode.TOKEN_EXPIRE, null);
		}
		
		EvaluateDto evaluate = this.evaluateFeignClient.selectByPrimaryKey(CommUtil.null2Long(evaluate_id));
		if(null == evaluate || null==evaluate.getFabulous()){
			return ResponseCode.buildCodeMap("20009", "评论数据异常", null);
		}
		
		Map<String, Object> params = Maps.newHashMap();
		Integer sumFabulous =evaluate.getFabulous()+CommUtil.null2Int(1);
		params.put("fabulous",sumFabulous);			//点赞数量
		params.put("id", evaluate.getId());			//评价编号
		this.evaluateFeignClient.updateByFabulous(params);
		params.clear();
		params.put("evaluate_id", evaluate.getId());
		params.put("creater_id", user.getId());
		EvaluatePraise evaluateFabulous = this.evaluatePraiseService.getByCreaterIdAndEvaluateId(params);	//根据评价编号
		if(null==evaluateFabulous){
			EvaluatePraise obj = new EvaluatePraise();
			obj.setEvaluate_id(evaluate.getId());	//对应评价编号
			obj.setPraise(1);						//点赞标识
			obj.setCreater_id(SecurityUserHolder.getCurrentUser(request).getId());	//点赞用户
			obj.setAddTime(new Date());	//点赞时间
			this.evaluatePraiseService.saveEntity(obj);
		}
		return ResponseCode.buildEnumMap(ResponseCode.SUCCESS, sumFabulous);
	}
	
}
@源码地址来源: https://minglisoft.cn/honghu/business.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐