Commit cfd02223 by zhangchen

人脸识别controller层对应service

parent 8e029fc4
package com.ctrip.fun.golf.api.user;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.ModelMap;
import org.springframework.web.context.ContextLoader;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ctrip.fun.common.core.util.BeanConverter;
import com.ctrip.fun.common.core.util.DateUtil;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.basic.GenderEnum;
import com.ctrip.fun.common.vo.basic.UserExtFaceQuery;
import com.ctrip.fun.common.vo.basic.UserExtQuery;
import com.ctrip.fun.common.vo.user.BaseBean;
import com.ctrip.fun.common.vo.user.CourseDeviceBean;
import com.ctrip.fun.common.vo.user.FaceListResult;
import com.ctrip.fun.common.vo.user.FaceUserRegistBean;
import com.ctrip.fun.common.vo.user.RegistResult;
import com.ctrip.fun.common.vo.user.UserExtBean;
import com.ctrip.fun.common.vo.user.UserExtBeanFace;
import com.ctrip.fun.common.vo.user.UserFace;
import com.ctrip.fun.common.vo.user.UserFaceBean;
import com.ctrip.fun.common.vo.user.UserFaceResultBean;
import com.ctrip.fun.golf.service.user.UserMService;
/**
* 服务器
*
* @ClassName: WebSocket
* @Description:
* @author lsj
* @Date
*
*/
@ServerEndpoint("/webSocketByFace/{username}")
public class FaceWebSocket {
private FaceListResult faceList = new FaceListResult();
private Logger logger = LoggerFactory.getLogger(FaceWebSocket.class);
@Autowired
private static int onlineCount = 0;
private static Map<String, FaceWebSocket> clients = new ConcurrentHashMap<String, FaceWebSocket>();
private Session session;
private String username;
private CourseDeviceBean courseDeviceBean = new CourseDeviceBean();
@OnOpen
public void onOpen(@PathParam("username") String username, Session session)
throws IOException {
this.username = username;
this.session = session;
addOnlineCount();
clients.put(username, this);
System.out.println("已连接");
}
@OnClose
public void onClose() throws IOException {
clients.remove(username);
subOnlineCount();
}
@OnMessage
public void onMessage(String message) throws IOException {
//List<FaceUserRegistBean> list = new ArrayList<FaceUserRegistBean>();
List<UserFace> userFaceList = new ArrayList<UserFace>();
UserMService bean = ContextLoader.getCurrentWebApplicationContext().getBean(UserMService.class);
RegistResult jsonTo = JSONObject.parseObject(message,RegistResult.class);
logger.info(jsonTo.toString());
RegistResult result = new RegistResult();
JSONObject jsonObj = new JSONObject();
if ("002".equals(jsonTo.getCode())) {
logger.info(jsonTo.getBody().toString());
FaceUserRegistBean body = jsonTo.getBody();
String uid = body.getUid();
UserFaceResultBean face = new UserFaceResultBean();
try{
UserFaceBean userExt = bean.getFaceByUid(uid, uid);
if(!new Date().after(userExt.getCommuneAgainTime())){
face.setUid(uid);
face.setCreateTime(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
face.setDeviceId(username);
bean.saveUserFaceDetail(face);
result.setMessage("欢迎您 "+userExt.getUserName());
result.setSuccess(true);
}else{
result.setMessage("您的会员已过期,过期时间:"+new SimpleDateFormat("yyyy-MM-dd").format(userExt.getCommuneAgainTime())+"账户信息为"+userExt.getUid());
result.setSuccess(false);
}
body.setVipGrade(userExt.getVipGrade());
body.setCommuneTime(new SimpleDateFormat("yyyy-MM-dd").format(userExt.getCommuneAgainTime()));
body.setUserName(userExt.getUserName());
result.setBody(body);
result.setId(jsonTo.getId());
result.setCode(jsonTo.getCode());
result.setPush(false);
sendMessageTo(JSON.toJSONString(result), username);
}catch(Exception e){
e.printStackTrace();
}
} else if ("001".equals(jsonTo.getCode())) {
jsonObj.put("id", jsonTo.getId());
jsonObj.put("code", jsonTo.getCode());
String json = jsonObj.toString();
try{
sendMessageTo(json, username);
}catch(Exception e){
e.printStackTrace();
}
// 设备初始化
} else if ("003".equals(jsonTo.getCode())) {
logger.info(jsonTo.getBody().toString());
try{
courseDeviceBean = bean.findCourseDeviceByDeviceId(jsonTo.getBody().getDeviceId(),jsonTo.getBody().getDeviceId());
if(courseDeviceBean ==null){
courseDeviceBean = new CourseDeviceBean();
courseDeviceBean.setCourseName(jsonTo.getBody().getCourseName());
courseDeviceBean.setDeviceId(jsonTo.getBody().getDeviceId());
bean.saveCourseDevice(courseDeviceBean);
userFaceList = bean.faceList();
}else{
userFaceList = bean.faceList();
}
faceList.setBody(userFaceList);
faceList.setCode(jsonTo.getCode());
faceList.setId(jsonTo.getId());
faceList.setMessage(null);
faceList.setPush(false);
faceList.setSuccess(true);
sendMessageTo(JSON.toJSONString(faceList), username);
}catch(Exception e){
e.printStackTrace();
}
} else if("005".equals(jsonTo.getCode())){
FaceUserRegistBean userBean = jsonTo.getBody();
String uids = userBean.getUserId();
userFaceList = bean.findUserInfoByUid(uids);
faceList.setBody(userFaceList);
faceList.setCode(jsonTo.getCode());
faceList.setId(jsonTo.getId());
faceList.setMessage(jsonTo.getMessage());
faceList.setPush(false);
faceList.setSuccess(true);
sendMessageTo(JSON.toJSONString(faceList), username);
}else {
// 全部通道群发
// sendMessageAll(jsonTo.getString("code"));
// 单通道发送
Map<String, Object> maps = new HashMap<String, Object>();
// JSONObject jsonObj = new JSONObject();
// maps.put("code", jsonTo.getString("code"));
// maps.put("to", jsonTo.getString("to"));
jsonObj.put("code", jsonTo.getCode());
jsonObj.put("id", jsonTo.getId());
String json = jsonObj.toString();
sendMessageTo(json, username);
}
}
@OnError
public void onError(Session session, Throwable error) {
error.printStackTrace();
}
// 回复客户端消息接口,在此封装bscUser对象信息
public void sendMessageTo(String message, String To) throws IOException {
//session.getBasicRemote().sendText(message);
//session.getAsyncRemote().sendText(message);
for (FaceWebSocket item : clients.values()) {
if(item.username.equals(To) ){
item.session.getAsyncRemote().sendText(message);
}
//this.session.getAsyncRemote().sendText(message);
}
}
public void sendMessageAll(String message) throws IOException {
for (FaceWebSocket item : clients.values()) {
item.session.getAsyncRemote().sendText(message);
}
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
FaceWebSocket.onlineCount++;
}
public static synchronized void subOnlineCount() {
FaceWebSocket.onlineCount--;
}
public static synchronized Map<String, FaceWebSocket> getClients() {
return clients;
}
public FaceListResult getFaceList() {
return faceList;
}
public void setFaceList(FaceListResult faceList) {
this.faceList = faceList;
}
public CourseDeviceBean getCourseDeviceBean() {
return courseDeviceBean;
}
public void setCourseDeviceBean(CourseDeviceBean courseDeviceBean) {
this.courseDeviceBean = courseDeviceBean;
}
}
\ No newline at end of file
......@@ -3,18 +3,24 @@
*/
package com.ctrip.fun.golf.api.user;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
......@@ -30,6 +36,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
......@@ -49,7 +56,9 @@ import com.ctrip.fun.common.vo.basic.UserAddressBean;
import com.ctrip.fun.common.vo.basic.UserAddressQuery;
import com.ctrip.fun.common.vo.basic.UserInvoiceTitleBean;
import com.ctrip.fun.common.vo.basic.UserInvoiceTitleQuery;
import com.ctrip.fun.common.vo.user.BaseBean;
import com.ctrip.fun.common.vo.user.ChangePasswordBean;
import com.ctrip.fun.common.vo.user.FaceUserRegistBean;
import com.ctrip.fun.common.vo.user.ImUserBean;
import com.ctrip.fun.common.vo.user.LoginBean;
import com.ctrip.fun.common.vo.user.LoginResultBean;
......@@ -58,6 +67,7 @@ import com.ctrip.fun.common.vo.user.MiniAppLoginResultBean;
import com.ctrip.fun.common.vo.user.RecommendUserBean;
import com.ctrip.fun.common.vo.user.RecommendUserItemBean;
import com.ctrip.fun.common.vo.user.RecommendUserListQuery;
import com.ctrip.fun.common.vo.user.RegistResult;
import com.ctrip.fun.common.vo.user.RegisterBean;
import com.ctrip.fun.common.vo.user.RegisterResultBean;
import com.ctrip.fun.common.vo.user.SearchImUserVO;
......@@ -85,7 +95,8 @@ import com.ctrip.fun.golf.vo.ErrorBean;
@RequestMapping(value = "")
@SuppressWarnings("rawtypes")
public class UserMController {
private Logger logger = LoggerFactory.getLogger(FaceWebSocket.class);
private static FaceWebSocket websocket = new FaceWebSocket();
private String ENTITY_TYPE = "user";
/**
* 用户登录
......@@ -147,8 +158,9 @@ public class UserMController {
CommonsMultipartFile file = (CommonsMultipartFile) request.getFile("file");
EntityImageBean eiBean = entityImageService.upload(ENTITY_TYPE, entityId, null,
file.getBytes());
int retkey = entityImageService.saveOrUploadUserPhoto("", eiBean);
if (retkey == 0) {
int retkey1 = entityImageService.saveOrUploadUserPhoto("", eiBean);
if (retkey1 == 0) {
ErrorBean errorBean = new ErrorBean();
errorBean.setCode(-100);
errorBean.setMessage("图片上传失败");
......@@ -159,6 +171,61 @@ public class UserMController {
return response;
}
/**
* 新增客户人脸底图
* @param token
* @param request
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping(value = "/v1/users/uploadImage/{token}", method = RequestMethod.POST)
@Security
@ResponseBody
public Object uploadImage(@PathVariable String token, MultipartHttpServletRequest request) {
Response<Object> response = new Response<Object>();
String uid = UserContext.getUserId();
Map<Object,Object> map = new HashMap<Object,Object>();
Integer entityId = this.userMService.getUserBean(token).getExtID();
CommonsMultipartFile file = (CommonsMultipartFile) request.getFile("avater");
EntityImageBean eiBean = entityImageService.upload(ENTITY_TYPE, entityId, null,
file.getBytes());
int retkey = entityImageService.uploadUserFaceImage(uid, eiBean);
if (retkey == 0) {
map.put("code","1");
}else{
map.put("code", "0");
Map<String,FaceWebSocket> clients = FaceWebSocket.getClients();
Set<Entry<String,FaceWebSocket>> sets = clients.entrySet();
Iterator<Entry<String, FaceWebSocket>> iterator = sets.iterator();
String faceImage = "http://img.iwanoutdoor.com"+"/"+eiBean.getHash()+"."+eiBean.getExt();
RegistResult res = new RegistResult();
FaceUserRegistBean uu = new FaceUserRegistBean();
while(iterator.hasNext()){
Entry<String, FaceWebSocket> entry = iterator.next();
String key = entry.getKey();
if(!"".equals(key)&&key!=null){
res.setId("0004");
res.setCode("004");
res.setMessage("");
res.setPush(true);
res.setSuccess(true);
uu.setUid(uid);
uu.setFaceImage(faceImage);
res.setBody(uu);
try {
logger.info("推送消息内容"+res.toString());
websocket.sendMessageTo(JSON.toJSONString(res), key);
} catch (IOException e) {
e.printStackTrace();
}
}
}
response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
response.setMessage("success");
return JSON.toJSONString(map);
}
return null;
}
@RequestMapping(value = "/v1/salesperson/payImage/{saleRecordId}", method = RequestMethod.POST)
@ResponseBody
......
package com.ctrip.fun.golf.service.user;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -12,10 +13,13 @@ import org.springframework.http.HttpMethod;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.Request;
import com.ctrip.fun.common.vo.Response;
import com.ctrip.fun.common.vo.ResponseStatusEnum;
import com.ctrip.fun.common.vo.basic.GetCoordinateListResponseDTO;
import com.ctrip.fun.common.vo.basic.GetRecommendListResponseDTO;
import com.ctrip.fun.common.vo.basic.UserExtQuery;
import com.ctrip.fun.common.vo.basic.UserInvoiceTitleQuery;
import com.ctrip.fun.common.vo.user.ChangePasswordBean;
import com.ctrip.fun.common.vo.user.CourseDeviceBean;
import com.ctrip.fun.common.vo.user.ImUserBean;
import com.ctrip.fun.common.vo.user.LoginBean;
import com.ctrip.fun.common.vo.user.LoginResultBean;
......@@ -29,6 +33,10 @@ import com.ctrip.fun.common.vo.user.RegisterResultBean;
import com.ctrip.fun.common.vo.user.SearchImUserVO;
import com.ctrip.fun.common.vo.user.UserBean;
import com.ctrip.fun.common.vo.user.UserExtBean;
import com.ctrip.fun.common.vo.user.UserExtBeanFace;
import com.ctrip.fun.common.vo.user.UserFace;
import com.ctrip.fun.common.vo.user.UserFaceBean;
import com.ctrip.fun.common.vo.user.UserFaceResultBean;
import com.ctrip.fun.common.vo.user.UserQuery;
import com.ctrip.fun.common.vo.user.VerifyCodeBean;
import com.ctrip.fun.common.vo.user.VerifyResultBean;
......@@ -762,8 +770,106 @@ public class UserMService extends BaseService {
}).getBody();
return response;
}
/**
* 人脸识别记录
* @param userDetail
* @return
*/
public Boolean saveUserFaceDetail(UserFaceResultBean userFaceResultBean) {
Request<UserFaceResultBean> request = new Request<UserFaceResultBean>("", userFaceResultBean);
HttpEntity<Request<UserFaceResultBean>> entity = new HttpEntity<Request<UserFaceResultBean>>(request);
Response<RegisterResultBean> response = super.exchange(
this.getServiceUri("uri.User.saveFace"), HttpMethod.POST, entity,
new ParameterizedTypeReference<Response<RegisterResultBean>>() {
}).getBody();
return false;
}
/**
* 球场关联设备记录
* @param userDetail
* @return
*/
public Boolean saveCourseDevice(CourseDeviceBean courseDeviceBean) {
Request<CourseDeviceBean> request = new Request<CourseDeviceBean>("", courseDeviceBean);
HttpEntity<Request<CourseDeviceBean>> entity = new HttpEntity<Request<CourseDeviceBean>>(request);
Response<RegisterResultBean> response = super.exchange(
this.getServiceUri("uri.User.saveCourceDevice"), HttpMethod.POST, entity,
new ParameterizedTypeReference<Response<RegisterResultBean>>() {
}).getBody();
return false;
}
/**
* 球场关联设备记录
* @param userDetail
* @return
*/
public CourseDeviceBean findCourseDeviceByDeviceId(String deviceId, String query) {
String uri = super.getServiceUri("uri.User.findCourseDeviceByDeviceId");
CourseDeviceBean result = null;
Request<String> request = new Request<String>();
request.setUserId(deviceId);
request.setBody(query);
HttpEntity<Request<String>> httpEntity = new HttpEntity<Request<String>>(request);
Response<CourseDeviceBean> response = super.exchange(uri, HttpMethod.POST, httpEntity,
new ParameterizedTypeReference<Response<CourseDeviceBean>>() {
}).getBody();
result = response.getBody();
return result;
}
/*
* 用户face信息
*/
public UserFaceBean getFaceByUid(String userId, String query) {
String uri = super.getServiceUri("uri.User.getFaceByUid");
UserFaceBean result = null;
Request<String> request = new Request<String>();
request.setUserId(userId);
request.setBody(query);
HttpEntity<Request<String>> httpEntity = new HttpEntity<Request<String>>(request);
Response<UserFaceBean> response = super.exchange(uri, HttpMethod.POST, httpEntity,
new ParameterizedTypeReference<Response<UserFaceBean>>() {
}).getBody();
result = response.getBody();
return result;
}
/*
* 人脸识别设备初始化用户列表
*/
public List<UserFace> faceList() {
String uri = super.getServiceUri("uri.User.faceList");
List<UserFace> userList = null;
Request<UserFace> request = new Request<UserFace>();
HttpEntity<Request<UserFace>> httpEntity = new HttpEntity<Request<UserFace>>(request);
Response<List<UserFace>> response = super.exchange(uri, HttpMethod.POST,
httpEntity,
new ParameterizedTypeReference<Response<List<UserFace>>>() {
}).getBody();
userList = response.getBody();
return userList;
}
//获取android下载失败的那些uid信息
public List<UserFace> findUserInfoByUid(String uids){
String uri = super.getServiceUri("uri.User.faceFailList");
List<UserFace> userList = null;
Request<UserFace> request = new Request<UserFace>();
request.setUserId(uids);
HttpEntity<Request<UserFace>> httpEntity = new HttpEntity<Request<UserFace>>(request);
Response<List<UserFace>> response = super.exchange(uri, HttpMethod.POST,
httpEntity,
new ParameterizedTypeReference<Response<List<UserFace>>>() {
}).getBody();
userList = response.getBody();
return userList;
}
public UserExtBean getUserByUmNickName(Request<String> vo) {
HttpEntity<Request<String>> entity = new HttpEntity<Request<String>>(vo);
Response<UserExtBean> response = super.exchange(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment