package com.nationalelectric.greenH5; import java.sql.Timestamp; import java.text.SimpleDateFormat; 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 javax.servlet.http.HttpServletRequest; 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.jysoft.unipush.AliasManage; import com.nationalelectirc.Constant.Constant; import com.nationalelectirc.utils.RestResult; import com.nationalelectric.greenH5.bizc.BaseServiceImpl; import com.nationalelectric.greenH5.bizc.IFeatureBizc; import com.nationalelectric.greenH5.po.GreenFoodFeature; import com.nationalelectric.greenH5.po.GreenFoodVote; import com.nationalelectric.greenH5.po.GreenUserInfo; import com.sgcc.uap.persistence.IHibernateDao; /** * 推荐菜 * @author Administrator * */ @Controller @RequestMapping("/feature") public class FeatureController extends GreenBaseController { /** * HibernateDao逻辑构件 */ @Autowired IHibernateDao hibernateDao; @Resource private IFeatureBizc iFeatureBizc; @Autowired private BaseServiceImpl baseService; /** * 保存图片controller */ @Resource private GreenImageInfoController greenImageInfoController; @Resource private AliasManageController aliasManageController; /** * 添加推荐菜 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/add", method = RequestMethod.POST) public @ResponseBody RestResult add(@RequestBody Object requestBody) { try { GreenFoodFeature feature = new ObjectMapper().convertValue(requestBody, new TypeReference(){}); String userId = feature.getCreator(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } //查询新品推荐时间 StringBuffer timeSql = new StringBuffer(); timeSql.append(" select max(activity_no) activity_no, ") .append(" start_time1,end_time1 from t_activity where activity_code = 'dining_new_products' and is_deleted = 'N' "); List timeList = hibernateDao.executeSqlQuery(timeSql.toString()); //时间 Timestamp ts = new Timestamp(new Date().getTime()); if(timeList != null && timeList.get(0)[1] != null && timeList.get(0)[2] != null && (ts.getTime() <= Timestamp.valueOf(timeList.get(0)[1].toString()).getTime() || ts.getTime() >= Timestamp.valueOf(timeList.get(0)[2].toString()).getTime())){ return new RestResult(Constant.FAILED, "提交失败,不在推荐时间内"); } //主键 String featureId = UUID.randomUUID().toString().replaceAll("-",""); feature.setId(featureId); feature.setModifier(userId); feature.setGmtCreated(ts);//创建时间 feature.setGmtModified(ts);//修改时间 //单张图片 String picture64 = feature.getPicture() == null ? "" : feature.getPicture(); boolean flag=true; String picture = ""; String pictureData = ""; if(!"".equals(picture64)){ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String date = sdf.format(new Date()) + "/"; String uuid = date + UUID.randomUUID().toString().replaceAll("-",""); flag = baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, picture64); picture = uuid+Constant.IMG_SUFFIX; pictureData = uuid; } //清除图片地址信息 baseService.initImage(); //多张图片 // String[] pictures = feature.getPicture() == null ? new String[]{} : feature.getPicture().split("~"); // if(pictures.length > 3){ // return new RestResult(Constant.FAILED, "图上只能上传3张"); // } // // boolean flag=true; // String picture = ""; // String pictureData = ""; // for(int i = 0; i < pictures.length; i++){ // //存入数据 库 //// String uuid = greenImageInfoController.saveImage(pictures[i], userId); // String uuid = UUID.randomUUID().toString().replaceAll("-",""); // flag = baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, pictures[i]); // if(i != 0){ // picture += ","; // pictureData += ","; // } // picture += uuid+Constant.IMG_SUFFIX; // pictureData += uuid; // } feature.setPicture(picture); feature.setPictureData(pictureData); //成功则为1 否则为0靠定时重新保存 feature.setImgStatus(flag ? 1 : 0); //时间 SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd hh:mm:dd"); String uploadDate = sdf.format(new Date()); feature.setUploadDate(uploadDate); //查询活动次数 String sql = " select max(activity_no) from t_activity where activity_code = 'dining_new_products' and is_deleted = 'N' "; List list = hibernateDao.executeSqlQuery(sql); int activityNo = list == null ? 1 : Integer.parseInt(list.get(0).toString()); feature.setActivityNo(activityNo); hibernateDao.saveObject(feature); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "提交失败"); } return new RestResult(Constant.SUCCESS,"提交成功"); } /** * 推荐菜投票 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/vote", method = RequestMethod.POST) public @ResponseBody RestResult vote(@RequestBody Object requestBody) { try { GreenFoodVote vote = new ObjectMapper().convertValue(requestBody, new TypeReference(){}); String userId = vote.getVoteUser(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } if(vote.getFeatureId() == null || "".equals(vote.getFeatureId())){ return new RestResult(Constant.FAILED, "投票失败"); } //查询新品投票时间 StringBuffer timeSql = new StringBuffer(); timeSql.append(" select max(activity_no) activity_no, ") .append(" start_time2,end_time2 from t_activity where activity_code = 'dining_new_products' and is_deleted = 'N' "); List timeList = hibernateDao.executeSqlQuery(timeSql.toString()); //时间 Timestamp ts = new Timestamp(new Date().getTime()); if(timeList != null && timeList.get(0)[1] != null && timeList.get(0)[2] != null && (ts.getTime() <= Timestamp.valueOf(timeList.get(0)[1].toString()).getTime() || ts.getTime() >= Timestamp.valueOf(timeList.get(0)[2].toString()).getTime())){ return new RestResult(Constant.FAILED, "不在投票时间内"); } String sql = " select id from green_food_vote where vote_user = ? and activity_no = " + " (select max(activity_no) from t_activity where activity_code = 'dining_new_products' and is_deleted = 'N' ) "; List list = hibernateDao.executeSqlQuery(sql, new String[]{userId}); if(list != null && list.size() > 0){ return new RestResult(Constant.FAILED, "您已经投票过,不能再投票"); } //主键 String voteId = UUID.randomUUID().toString().replaceAll("-",""); vote.setId(voteId); //时间 vote.setGmtCreated(ts);//创建时间 vote.setGmtModified(ts);//修改时间 //活动次数 vote.setActivityNo(Integer.valueOf(timeList.get(0)[0].toString())); hibernateDao.saveObject(vote); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "提交失败"); } return new RestResult(Constant.SUCCESS,"提交成功"); } /** * 推荐菜查询-投票 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/query", method = RequestMethod.POST) public @ResponseBody RestResult query(@RequestBody Object requestBody) { try { Map map = new ObjectMapper().convertValue(requestBody, new TypeReference>(){}); String userId = map.get("userId") == null || "".equals(map.get("userId")) ? null : map.get("userId").toString(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } //分页 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; //活动次数 Integer activityNo = map.get("activityNo") == null || "".equals(map.get("activityNo")) ? null : Integer.parseInt(map.get("activityNo").toString()); StringBuffer sql = new StringBuffer(); List params = new ArrayList(); sql.append(" select gf.id,gf.kinds,gf.food_name,gf.picture,gf.creator, ") .append(" DATE_FORMAT(gf.gmt_created,'%Y-%m-%d %H:%i:%s') time, ") .append(" gf.material,gf.reason,gf.activity_no, "); //是否已经投票 0 可以投票 1,已经投票,2投过标,不能再投其他的票 sql.append(" case if((select count(gv.id) from green_food_vote gv where gv.feature_id = gf.id and gv.activity_no = gf.activity_no and gv.vote_user = ? ), 1, 0) "); sql.append(" when 0 then if((select count(gv.id) from green_food_vote gv where gv.activity_no = gf.activity_no and gv.vote_user = ? ), 2, 0) "); sql.append(" else if((select count(gv.id) from green_food_vote gv where gv.feature_id = gf.id and gv.activity_no = gf.activity_no and gv.vote_user = ? ), 1, 0) end is_vote, "); params.add(userId); params.add(userId); params.add(userId); //投票数量 sql.append(" ifnull((select count(gv.id) from green_food_vote gv where gv.feature_id = gf.id ), 0) vote_no "); sql.append(" from green_food_feature gf where is_deleted = 'N' "); if(activityNo != null){ sql.append(" and activity_no = ?"); params.add(activityNo); }else { sql.append(" and activity_no = (select max(activity_no) from t_activity where activity_code = 'dining_new_products' and is_deleted = 'N')"); } sql.append(" order by gf.gmt_created desc limit ?,? "); params.add(pageNum); params.add(pageSize); List> list = hibernateDao.queryForListWithSql(sql.toString(), params.toArray()); //获取图片地址 for(Map m : list){ String picture=(String)m.get("picture"); m.put("picture", baseService.getImageBase64(picture)); // List imageUrl = new ArrayList(); // String[] arr = picture.split(","); // for (int i = 0; i < arr.length; i++){ // imageUrl.add(baseService.getImageBase64(arr[i])); // } // m.put("picture", imageUrl); } //清除图片地址信息 baseService.initImage(); return new RestResult(Constant.SUCCESS,"成功", list); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "提交失败"); } } /** * 推荐菜查询 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/queryMyFood", method = RequestMethod.POST) public @ResponseBody RestResult queryMyFood(@RequestBody Object requestBody) { try { Map map = new ObjectMapper().convertValue(requestBody, new TypeReference>(){}); String userId = map.get("userId") == null || "".equals(map.get("userId")) ? null : map.get("userId").toString(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } 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; StringBuffer sql = new StringBuffer(); List params = new ArrayList(); sql.append(" select DATE_FORMAT(activity.start_time3,'%Y-%m-%d %H:%i:%s') start_time3,DATE_FORMAT(activity.end_time3,'%Y-%m-%d %H:%i:%s') end_time3, " + " gf.* from green_food_lottery lo left JOIN green_food_feature gf on lo.feature_id=gf.id LEFT JOIN ") .append(" (select activity_no,start_time3,end_time3 from t_activity where activity_code = 'dining_new_products' and is_deleted = 'N' ) activity ") .append(" on activity.activity_no = gf.activity_no where gf.vote_no is not null and gf.is_deleted = 'N' ") .append(" order by activity.activity_no desc, gf.gmt_created desc limit ?,? "); params.add(pageNum); params.add(pageSize); List> list = hibernateDao.queryForListWithSql(sql.toString(), params.toArray()); //获取图片地址 for(Map m : list){ String picture=(String)m.get("picture"); m.put("picture", baseService.getImageBase64(picture)); } //清除图片地址信息 baseService.initImage(); return new RestResult(Constant.SUCCESS,"成功", list); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "提交失败"); } } /** * 推荐菜查询 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/submitRecommendFood", method = RequestMethod.POST) public @ResponseBody RestResult submitRecommendFood(@RequestBody GreenFoodFeature feature) { try { Timestamp ts = new Timestamp(new Date().getTime()); String featureId = UUID.randomUUID().toString().replaceAll("-",""); feature.setId(featureId); feature.setModifier(feature.getCreator()); feature.setGmtCreated(ts);//创建时间 feature.setGmtModified(ts);//修改时间 //单张图片 String picture64 = feature.getPicture() == null ? "" : feature.getPicture(); // boolean flag=true; // String picture = ""; // String pictureData = ""; // if(!"".equals(picture64)){ // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // String date = sdf.format(new Date()) + "/"; // String uuid = date + UUID.randomUUID().toString().replaceAll("-",""); // flag = baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, picture64); // picture = uuid+Constant.IMG_SUFFIX; // pictureData = uuid; // } // //清除图片地址信息 // baseService.initImage(); // feature.setPicture(picture); feature.setPictureData(picture64); //成功则为1 否则为0靠定时重新保存 feature.setImgStatus(1); // feature.setImgStatus(flag ? 1 : 0); //时间 SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd hh:mm:dd"); String uploadDate = sdf.format(new Date()); feature.setUploadDate(uploadDate); hibernateDao.saveObject(feature); Integer isRelease = feature.getIsRelease(); String title = ""; String text = ""; String url = ""; if(isRelease==0){ title = "菜品推荐"; text = "您好,您的推荐菜品已提交,请点击查看。"; url = "/pages/feature/feature?type=2¤tTabIndex=2"; aliasManageController.pushToSingle(feature.getCreator(), title, text, url); }else{ title = "菜品发布"; text = "您好,您已发布新菜品,请点击查看。"; url = "/pages/feature/feature?type=1"; aliasManageController.pushToSingle(feature.getCreator(), title, text, url); String role = "15002";//咨询受理权限 String getUserSql = "SELECT u.id,u.ISC_ID FROM green_user_info u " + " LEFT JOIN green_user_role_rel r ON u.id = r.user_id " + " LEFT JOIN green_role_permission p ON p.role_id = r.role_id " + " WHERE p.permission_id = ? "; List> userList2 = hibernateDao.queryForListWithSql(getUserSql, new Object[]{role}); title = "菜品推荐"; text = "您好,餐厅有新品发布,请点击查看。"; url = "/pages/feature/feature?type=2"; aliasManageController.pushToSingleBatch(userList2, title, text, url); } return new RestResult(Constant.SUCCESS,"提交成功"); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "提交失败"); } } /** * 推荐菜查询 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/getMySubmitFeatureFood", method = RequestMethod.POST) public @ResponseBody RestResult getMySubmitFeatureFood(@RequestBody GreenFoodFeature feature) { try { String creator = feature.getCreator(); int pageSize = feature.getPageSize(); int page = feature.getPageNum(); page = (page-1) * pageSize; int limit = ((page > 0 ? page : 1) -1) * pageSize; String sql = "SELECT * FROM(SELECT RN.*,ROWNUM rw FROM( " + "select f.id as \"id\",f.kinds as \"kinds\",f.food_name as \"food_name\",f.picture as \"picture\"," + "f.picture_data as \"picture_data\",f.price as \"price\",f.unit as \"unit\",f.upload_date as \"upload_date\"," + "f.img_status as \"img_status\",f.creator as \"creator\",f.modifier as \"modifier\",f.gmt_created as \"gmt_created\"," + "f.gmt_modified as \"gmt_modified\",f.material as \"material\",f.reason as \"reason\",f.activity_no as \"activity_no\"," + "f.is_deleted as \"is_deleted\",f.vote_no as \"vote_no\",f.is_release as \"is_release\" from green_food_feature f where f.is_deleted='N' and f.creator = '"+creator+"' " + "order by f.gmt_created desc " + " )rn ) WHERE rw > ? AND rw <= ? "; List> list = hibernateDao.queryForListWithSql(sql,new Object[]{ limit, pageSize}); for(Map m : list){ String picture=(String)m.get("picture"); m.put("picture", baseService.getImageBase64(picture)); } //清除图片地址信息 baseService.initImage(); return new RestResult(Constant.SUCCESS,"成功",list); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "失败"); } } /** * 推荐菜查询 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/getPublicFeatureFood", method = RequestMethod.POST) public @ResponseBody RestResult getPublicFeatureFood(@RequestBody GreenFoodFeature feature) { try { String creator = feature.getCreator(); int pageSize = feature.getPageSize(); int page = feature.getPageNum(); page = (page-1) * pageSize; int limit = ((page > 0 ? page : 1) -1) * pageSize; String sql = "SELECT * FROM(SELECT RN.*,ROWNUM rw FROM( " + "SELECT f.id as \"id\",f.kinds as \"kinds\",f.food_name as \"food_name\",f.picture as \"picture\"," + "f.picture_data as \"picture_data\",f.price as \"price\",f.unit as \"unit\",f.upload_date as \"upload_date\"," + "f.img_status as \"img_status\",f.creator as \"creator\",f.modifier as \"modifier\",f.gmt_created as \"gmt_created\"," + "f.gmt_modified as \"gmt_modified\",f.material as \"material\",f.reason as \"reason\",f.activity_no as \"activity_no\"," + "f.is_deleted as \"is_deleted\",f.vote_no as \"vote_no\",f.is_release as \"is_release\", " + " v.is_vote AS \"is_vote\" FROM green_food_feature f " + " LEFT JOIN ( SELECT count(feature_id) AS is_vote, feature_id FROM green_food_vote " + " WHERE is_deleted = 'N' AND vote_user = '"+creator+"' GROUP BY feature_id ) " + " v ON f.id = v.feature_id WHERE f.is_deleted = 'N' AND f.is_RELEASE = 0 " + " order by f.gmt_created desc " + " )rn ) WHERE rw > ? AND rw <= ? "; List> list = hibernateDao.queryForListWithSql(sql,new Object[]{ limit, pageSize}); for(Map m : list){ String picture=(String)m.get("picture"); m.put("picture", baseService.getImageBase64(picture)); } //清除图片地址信息 baseService.initImage(); return new RestResult(Constant.SUCCESS,"成功",list); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "失败"); } } /** * 推荐菜投票 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/recommendFoodVoteNew", method = RequestMethod.POST) public @ResponseBody RestResult recommendFoodVoteNew(@RequestBody Object requestBody) { try { GreenFoodVote vote = new ObjectMapper().convertValue(requestBody, new TypeReference(){}); String userId = vote.getVoteUser(); GreenUserInfo info = getUserInfo(userId); if (info == null) { return new RestResult(Constant.FAILED, "非法用户"); } if(vote.getFeatureId() == null || "".equals(vote.getFeatureId())){ return new RestResult(Constant.FAILED, "投票失败"); } String sql = " select id as \"id\" from green_food_vote where vote_user = ? and activity_no = 1 "; /*+ " (select max(activity_no) from t_activity where activity_code = 'dining_new_products' and is_deleted = 'N' ) "*/ List list = hibernateDao.queryForListWithSql(sql, new String[]{userId}); if(list != null && list.size() > 0){ return new RestResult(Constant.FAILED, "您已经投票过,不能再投票"); } Timestamp ts = new Timestamp(new Date().getTime()); //主键 String voteId = UUID.randomUUID().toString().replaceAll("-",""); vote.setId(voteId); //时间 vote.setGmtCreated(ts);//创建时间 vote.setGmtModified(ts);//修改时间 //活动次数 //vote.setActivityNo(Integer.valueOf(timeList.get(0)[0].toString())); hibernateDao.saveObject(vote); GreenFoodFeature feature = iFeatureBizc.get(vote.getFeatureId()); Integer voteNo = feature.getVoteNo()==null?0:feature.getVoteNo(); String updateSql = "update green_food_feature set vote_no=? where id=?"; hibernateDao.executeSqlUpdate(updateSql, new Object[]{voteNo+1,vote.getFeatureId()}); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "提交失败"); } return new RestResult(Constant.SUCCESS,"提交成功"); } /** * 推荐菜投票 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/submitRelease", method = RequestMethod.POST) public @ResponseBody RestResult submitRelease(@RequestBody GreenFoodFeature feature) { try { String id = feature.getId(); String[] ids = id.split(","); String updateSql = ""; for(String str:ids){ updateSql = "update green_food_feature set is_release=1 where id='"+str+"'"; hibernateDao.executeSqlUpdate(updateSql); } String role = "15002";//咨询受理权限 String getUserSql = "SELECT u.id,u.ISC_ID FROM green_user_info u " + " LEFT JOIN green_user_role_rel r ON u.id = r.user_id " + " LEFT JOIN green_role_permission p ON p.role_id = r.role_id " + " WHERE p.permission_id = ? "; List> userList2 = hibernateDao.queryForListWithSql(getUserSql, new Object[]{role}); String title = "菜品推荐"; String text = "您好,餐厅有新品发布,请点击查看。"; String url = "/pages/feature/feature?type=2"; aliasManageController.pushToSingleBatch(userList2, title, text, url); return new RestResult(Constant.SUCCESS,"发布成功"); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "发布失败"); } } /** * 推荐菜查询 * @return */ @SuppressWarnings("unchecked") @RequestMapping(value = "/getReleasefeatureList", method = RequestMethod.POST) public @ResponseBody RestResult getReleasefeatureList(@RequestBody GreenFoodFeature feature) { try { //String creator = feature.getCreator(); int pageSize = feature.getPageSize(); int page = feature.getPageNum(); page = (page-1) * pageSize; int limit = ((page > 0 ? page : 1) -1) * pageSize; String sql = " SELECT * FROM(SELECT RN.*,ROWNUM rw FROM( " + "select f.id as \"id\",f.kinds as \"kinds\",f.food_name as \"food_name\",f.picture as \"picture\"," + "f.picture_data as \"picture_data\",f.price as \"price\",f.unit as \"unit\",f.upload_date as \"upload_date\"," + "f.img_status as \"img_status\",f.creator as \"creator\",f.modifier as \"modifier\",f.gmt_created as \"gmt_created\"," + "f.gmt_modified as \"gmt_modified\",f.material as \"material\",f.reason as \"reason\",f.activity_no as \"activity_no\"," + "f.is_deleted as \"is_deleted\",f.vote_no as \"vote_no\",f.is_release as \"is_release\", u .real_name as \"real_name\" " + "from green_food_feature f left join green_user_info u on f.creator = u.id where f.is_deleted='N' and f.is_release = 1 " + "order by f.gmt_created desc" + " )rn ) WHERE rw > ? AND rw <= ? "; List> list = hibernateDao.queryForListWithSql(sql,new Object[]{ limit, pageSize}); for(Map m : list){ String picture=(String)m.get("picture"); m.put("picture", baseService.getImageBase64(picture)); } //清除图片地址信息 baseService.initImage(); return new RestResult(Constant.SUCCESS,"成功",list); } catch (Exception e) { System.out.print(e.getMessage()); return new RestResult(Constant.FAILED, "失败"); } } }