package com.nationalelectric.greenH5; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.UUID; import javax.annotation.Resource; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; 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.ResponseBody; import com.nationalelectirc.Constant.Constant; import com.nationalelectirc.utils.RestResult; import com.nationalelectric.greenH5.bizc.BaseServiceImpl; import com.nationalelectric.greenH5.bizc.IEvaluateServiceBizc; import com.nationalelectric.greenH5.po.GreenUserInfo; import com.nationalelectric.greenH5.po.TorderEvaluate; import com.sgcc.uap.persistence.IHibernateDao; @Controller @RequestMapping("/evaluate") public class EvaluateController extends GreenBaseController { @Resource private IHibernateDao hibernateDao; @Resource private IEvaluateServiceBizc iEvaluateServiceBizc; @Autowired private BaseServiceImpl baseService; /** * 添加评价 * @param requestBody * @return */ @RequestMapping(value = "/add", method = RequestMethod.POST) @ResponseBody public RestResult add(@RequestBody Object requestBody) { try { TorderEvaluate ev = new ObjectMapper().convertValue(requestBody, new TypeReference(){}); String userId = ev.getUserId(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } //评价和评分不能为空 if(ev.getEvContent() == null || "".equals(ev.getEvContent())){ return new RestResult(Constant.FAILED, "请输入评价内容"); } if(ev.getGrade() == null || "".equals(ev.getGrade())){ return new RestResult(Constant.FAILED, "请选择评分"); } //主键 String uuid = UUID.randomUUID().toString().replaceAll("-",""); ev.setId(uuid); //时间 Timestamp t = new Timestamp(new Date().getTime()); ev.setEvTime(t); ev.setGmtCreated(t); ev.setGmtModified(t); hibernateDao.saveObject(ev); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "提交失败"); } return new RestResult(Constant.SUCCESS, "提交成功"); } /** * 查询评价 * @param requestBody * @return */ @RequestMapping(value = "/query", method = RequestMethod.POST) @ResponseBody public RestResult query(@RequestBody Object requestBody) { try { Map map = new ObjectMapper().convertValue(requestBody, new TypeReference>(){}); Integer pageSize = map.get("pageSize") == null ? 10 : Integer.parseInt(map.get("pageSize").toString()); Integer pageNum = map.get("pageNum") == null ? 1 : Integer.parseInt(map.get("pageNum").toString()); pageNum = (pageNum-1) * pageSize; String type = map.get("type") == null ? "" : map.get("type").toString(); List params = new ArrayList(); StringBuffer sql = new StringBuffer(); sql.append(" select t1.id,CONCAT(SUBSTRING(gu.real_name,1,1),'**') name, t1.ev_content,DATE_FORMAT(t1.ev_time,'%Y-%m-%d %H:%i:%s') ev_time,t1.grade, ") .append(" gu.wx_profile, ") .append(" case ") .append(" when type = 1 then (select GROUP_CONCAT(gv.food_name) from green_food_order_detail gf ") .append(" LEFT JOIN green_foods_kinds gv on gf.goods_id = gv.id where gf.order_id = t1.type_id) ") .append(" when type = 2 then (select GROUP_CONCAT(gr.name) from green_dining_room gr where gr.id = t1.type_id) ") .append(" when type = 3 then (select GROUP_CONCAT(g.food_name) from green_food_feature g where g.id = t1.type_id) ") .append(" else '' end type_name,t1.type,t1.type_id ") .append(" from (select id, type, type_id,user_id,ev_content,ev_time, grade from t_order_evaluate ") .append(" where is_deleted = 'N' " ); //类型:1 订单,2 食堂,3 推荐菜,4理发 if(!"".equals(type)) { sql.append(" and type = ? " ); params.add(type); } sql.append( " order by ev_time desc limit ?,?) t1 ") .append(" LEFT JOIN green_user_info gu on gu.id = t1.user_id "); params.add(pageNum); params.add(pageSize); List> list = hibernateDao.queryForListWithSql(sql.toString() ,params.toArray()); //菜品转换成数组 for(Map m : list){ String[] typeName = m.get("type_name") == null || "".equals(m.get("type_name")) ? new String[]{} : m.get("type_name").toString().split(","); m.put("type_name", typeName); } return new RestResult(Constant.SUCCESS,"成功",list); } catch (Exception e) { return new RestResult(Constant.FAILED, "查询失败"); } } /** * 查询评价 * @param requestBody * @return */ @RequestMapping(value = "/getCommentListByType", method = RequestMethod.POST) @ResponseBody public RestResult getCommentListByType(@RequestBody Map map) { try { Integer pageSize = map.get("pageSize") == null ? 10 : Integer.parseInt(map.get("pageSize").toString()); Integer pageNum = map.get("pageNum") == null ? 1 : Integer.parseInt(map.get("pageNum").toString()); pageNum = (pageNum-1) * pageSize; int limit = ((pageNum > 0 ? pageNum : 1) -1) * pageSize; //1 理发预约评论 2 洗车预约评论 5用车申请评价 6故障报修评价 String type = map.get("type") == null ? "" : map.get("type").toString(); String startDate = map.get("startDate") == null ? "" : map.get("startDate").toString(); String endDate = map.get("endDate") == null ? "" : map.get("endDate").toString(); String satisfiedLevel = map.get("satisfiedLevel") == null ? "" : map.get("satisfiedLevel").toString(); List params = new ArrayList(); StringBuilder sql = new StringBuilder("SELECT mobile as \"mobile\",applicant_name AS \"applicant_name\", " + " satisfied_level as \"satisfied_level\",comment_content as \"comment_content\"," //+ "detail_time as \"detail_time\", " + " gmt_created as \"gmt_created\" FROM (select rn.*, ROWNUM AS rw from (" + " select h.*, "); //type 1:理发 2:洗车 10:就诊 5:用车 6:报修 9:报事 7:咨询 8:投诉 String column = ""; String joinSql = ""; String where = ""; if(!"".equals(type)){ if("1".equals(type)){ column = " (d.apply_date || ' ' || d.apply_time) as detail_time,"; joinSql = " left join green_haircut_info d on h.detail_id = d.id "; } if("2".equals(type)){ column = " (d.apply_date || ' ' || d.apply_time) as detail_time,"; joinSql = " left join green_wash_car_info d on h.detail_id = d.id "; } if("10".equals(type)){ column = " (d.apply_date || ' ' || d.project_info_name) as detail_time,"; joinSql = " left join green_seekmedical_record d on h.detail_id = d.id "; } if("5".equals(type)){ column = " d.starttime as detail_time,"; joinSql = " left join green_usecar_apply d on h.detail_id = d.id "; } if("6".equals(type)){ column = " d.repair_time as detail_time,"; joinSql = " left join green_fault_repair_info d on h.detail_id = d.id "; } if("9".equals(type)){ column = " d.repair_time as detail_time,"; joinSql = " left join green_fault_repair_info d on h.detail_id = d.id "; } if("7".equals(type)){ column = " to_char(d.create_time,'YYYY-MM-DD HH24:MI') as detail_time,"; joinSql = " left join green_report d on h.detail_id = d.id "; } if("8".equals(type)){ column = " to_char(d.create_time,'YYYY-MM-DD HH24:MI') as detail_time,"; joinSql = " left join green_report d on h.detail_id = d.id "; } where = " and h.type = ?"; params.add(type); } sql.append(column +" u.wx_profile,u.mobile from green_haircut_comment h " + " left join green_user_info u on h.creator=u.id " + joinSql +" where h.is_deleted='N' " + where); if(!"".equals(startDate)){ sql.append(" and to_char(h.gmt_created,'YYYY-MM-DD')>=?"); params.add(startDate); } if(!"".equals(endDate)){ sql.append(" and to_char(h.gmt_created,'YYYY-MM-DD')<=?"); params.add(endDate); } if(!"".equals(satisfiedLevel)){ sql.append(" and h.satisfied_level="+satisfiedLevel+" "); } sql.append(" order by h.gmt_created desc " + ") rn ) where rw > ? and rw <= ? "); params.add(limit); params.add(pageSize); @SuppressWarnings("unchecked") List> list = hibernateDao.queryForListWithSql(sql.toString(),params.toArray()); return new RestResult(Constant.SUCCESS,"成功",list); } catch (Exception e) { return new RestResult(Constant.FAILED, "查询失败"); } } }