SiweiYue 4 years ago
parent
commit
7c99b6cc97

+ 2 - 2
README.md

@@ -1,3 +1,3 @@
-# upzl-zpb-api
+# upzl-mls-api
 
-新版租铺宝
+mls

+ 6 - 1
pom.xml

@@ -227,8 +227,13 @@
 			<artifactId>bcprov-jdk15on</artifactId>
 			<version>1.60</version>
 		</dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.8</version>
+        </dependency>
 
-	</dependencies>
+    </dependencies>
 	<build>
 		<finalName>up-zpb-api</finalName>
 		<plugins>

+ 166 - 121
src/main/java/com/up/zpb/controller/api/LoginController.java

@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package com.up.zpb.controller.api;
 
@@ -7,11 +7,15 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.up.zpb.util.Md5Kit;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.up.zpb.controller.AbstractController;
@@ -28,130 +32,171 @@ import com.up.zpb.vo.UserLoginLog;
 import com.up.zpb.vo.UserRegisterLog;
 
 /**
- * 
+ *
  * @author gust
  *
  */
-@RestController
+@Controller
+@RequestMapping
 public class LoginController extends AbstractController {
-	
-	private static final Logger logger = LoggerFactory.getLogger(LoginController.class);
-	
-	@Autowired
-	DictionaryService dictionaryService;
-	
-	@Autowired
-	MemberService memberService;
-	
-	@Autowired
-	RedisBaseDao redisBaseDao;
-	
-	@Autowired
-	AsyncLoginLogService asyncLoginLogService;
-	
-	@Autowired
-	LoginService loginService;
-	
-	/**
-	 * 
-	 * @param req
-	 * @param account 当前获取验证码要登录的手机号
-	 * @param password 验证码
-	 * @param type  是否为邀请注册用户标识 1 为邀请注册用户
-	 * @param mobile 邀请人手机号
-	 * @param provinceId 省id 
-	 * @param cityId 市id 
-	 * @param channel 来源
-	 * @return
-	 */
-	@PostMapping("/login")
-	public ResultObject login(HttpServletRequest req, String account,String password,String type,String mobile,String provinceId,String cityId,String channel) {
-		ResultObject resultObject = new ResultObject();
-		try {
-			logger.info("login account:{},validCode:{},type:{},mobile:{},provinceId:{},cityId:{},source:{}",account,password,type,mobile,provinceId,cityId,channel);
-			try {
-				CheckParametersUtil.getInstance().put(account, "account")
-				.put(password, "password")
-				.put(provinceId, "provinceId")
-				.put(cityId, "cityId")
-				.put(channel, "channel")
-				.checkParameter();
-			} catch (Exception e) {
-				resultObject.setCode(Constant.CODE_PARAM_NULL);
-				resultObject.setMessage(e.getMessage());
-				logger.error(e.getMessage(), e);
-				return resultObject;
-			}
-			//检测登录来源
-			String userAgent = req.getHeader("user-agent");
-			logger.info("login userAgent:{}",userAgent);
-			resultObject = loginService.login(account,password,type,mobile,provinceId,cityId,channel,userAgent);
-			if(StringUtils.equals(resultObject.get("code").toString(),"101")) {
-				if(resultObject.get("loginFlag").equals(true)) {
-					UserLoginLog userLoginLog = new UserLoginLog();
-					userLoginLog.setToken(resultObject.get(Constant.APP_HEADER_ACCESS_TOKEN).toString());
-					userLoginLog.setIpAddress(getIpAddress(req));
-					userLoginLog.setUserId(Integer.valueOf(resultObject.get("id").toString()));
-					userLoginLog.setSource(Integer.valueOf(channel));
-					this.asyncLoginLogService.saveUserLoginLog(userLoginLog);
-				} else {
-					UserRegisterLog userRegisterLog = new UserRegisterLog();
-					userRegisterLog.setUserId(Integer.valueOf(resultObject.get("id").toString()));
-					userRegisterLog.setIpAddress(getIpAddress(req));
-					userRegisterLog.setSource(Integer.valueOf(channel));
-					this.asyncLoginLogService.saveUserRegisterLog(userRegisterLog);
-				}
-			}
-		} catch (ResultException e) {
-			resultObject.setCode(Constant.CODE_EXCEPTION);
-			resultObject.setMessage(e.getMessage());
-			logger.error(e.getMessage(), e);
-			return resultObject;
-		} catch (Exception e) {
-			resultObject.setCode(Constant.CODE_EXCEPTION);
-			resultObject.setMessage("登录失败");
-			logger.error(e.getMessage(), e);
-			return resultObject;
-		}
-		return resultObject;
+
+    private static final Logger logger = LoggerFactory.getLogger(LoginController.class);
+
+    @Autowired
+    DictionaryService dictionaryService;
+
+    @Autowired
+    MemberService memberService;
+
+    @Autowired
+    RedisBaseDao redisBaseDao;
+
+    @Autowired
+    AsyncLoginLogService asyncLoginLogService;
+
+    @Autowired
+    LoginService loginService;
+
+
+    /**
+     *  注册
+     * @param request
+     * @param account 手机号
+     * @param validCode 验证码
+     * @param password 密码
+     * @param cityId 城市Id
+     * @param channel 渠道 0 Android 1 IOS 2 M站 3 官网
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/register")
+    public ResultObject Register(HttpServletRequest request, String account, String validCode, String cityId, String password, String channel) {
+        ResultObject resultObject = new ResultObject();
+        try {
+            CheckParametersUtil.getInstance().put(account, "account")
+                    .put(password, "password")
+                    .put(validCode, "validCode")
+                    .put(password, "password")
+                    .put(cityId, "cityId")
+                    .put(channel, "channel")
+                    .checkParameter();
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_PARAM_NULL);
+            resultObject.setMessage(e.getMessage());
+            logger.error(e.getMessage(), e);
+            return resultObject;
+        }
+        //检测登录来源
+        String userAgent = request.getHeader("user-agent");
+        logger.info("login userAgent:{}", userAgent);
+        resultObject = loginService.register(account, validCode, password, userAgent, cityId, channel);
+        return resultObject;
     }
-	
-	/**
-	 * 发送短信验证码
-	 * @param phoneNumber
-	 * @return
-	 */
-	@PostMapping("/sendsms")
-	public ResultObject sendSMS(String phoneNumber,String cityId) {
-		logger.info("sendsms phoneNumber:{}",phoneNumber);
-		ResultObject resultObject = new ResultObject();
-		try {
-			try {
-				CheckParametersUtil.getInstance() .put(phoneNumber, "phoneNumber").checkParameter();
-			} catch (Exception e) {
-				resultObject.setCode(Constant.CODE_PARAM_NULL);
-				resultObject.setMessage(e.getMessage());
-				logger.error(e.getMessage(), e);
-				return resultObject;
-			}
-			Map<String, Object> sendSms2 = loginService.sendSms(phoneNumber,cityId);
-			boolean sendSms = (boolean) sendSms2.get("flag");
-			if(!sendSms) {
-			  	resultObject.setCode(Constant.CODE_EXCEPTION);
-				resultObject.setMessage("发送短信失败");
-				return resultObject;
-			}
-		} catch (ResultException e) {
-			resultObject.setCode(Constant.CODE_EXCEPTION);
-			resultObject.setMessage(e.getMessage());
-			logger.error(e.getMessage(), e);
-			return resultObject;
-		}catch (Exception e) {
-			resultObject.setCode(Constant.CODE_EXCEPTION);
-			resultObject.setMessage("发送短信异常");
-			logger.error(e.getMessage(), e);
-		}
+
+
+    /**
+     *
+     * @param req
+     * @param account 当前获取验证码要登录的手机号
+     * @param password 验证码
+     * @param type  是否为邀请注册用户标识 1 为邀请注册用户
+     * @param mobile 邀请人手机号
+     * @param provinceId 省id
+     * @param cityId 市id
+     * @param channel 来源
+     * @return
+     */
+    @PostMapping("/login")
+    public ResultObject login(HttpServletRequest req, String account, String password, String type, String mobile, String provinceId, String cityId, String channel) {
+        ResultObject resultObject = new ResultObject();
+        try {
+            logger.info("login account:{},validCode:{},type:{},mobile:{},provinceId:{},cityId:{},source:{}", account, password, type, mobile, provinceId, cityId, channel);
+            try {
+                CheckParametersUtil.getInstance().put(account, "account")
+                        .put(password, "password")
+                        .put(provinceId, "provinceId")
+                        .put(cityId, "cityId")
+                        .put(channel, "channel")
+                        .checkParameter();
+            } catch (Exception e) {
+                resultObject.setCode(Constant.CODE_PARAM_NULL);
+                resultObject.setMessage(e.getMessage());
+                logger.error(e.getMessage(), e);
+                return resultObject;
+            }
+            //检测登录来源
+            String userAgent = req.getHeader("user-agent");
+            logger.info("login userAgent:{}", userAgent);
+            resultObject = loginService.login(account, password, type, mobile, provinceId, cityId, channel, userAgent);
+            if (StringUtils.equals(resultObject.get("code").toString(), "101")) {
+                if (resultObject.get("loginFlag").equals(true)) {
+                    UserLoginLog userLoginLog = new UserLoginLog();
+                    userLoginLog.setToken(resultObject.get(Constant.APP_HEADER_ACCESS_TOKEN).toString());
+                    userLoginLog.setIpAddress(getIpAddress(req));
+                    userLoginLog.setUserId(Integer.valueOf(resultObject.get("id").toString()));
+                    userLoginLog.setSource(Integer.valueOf(channel));
+                    this.asyncLoginLogService.saveUserLoginLog(userLoginLog);
+                } else {
+                    UserRegisterLog userRegisterLog = new UserRegisterLog();
+                    userRegisterLog.setUserId(Integer.valueOf(resultObject.get("id").toString()));
+                    userRegisterLog.setIpAddress(getIpAddress(req));
+                    userRegisterLog.setSource(Integer.valueOf(channel));
+                    this.asyncLoginLogService.saveUserRegisterLog(userRegisterLog);
+                }
+            }
+        } catch (ResultException e) {
+            resultObject.setCode(Constant.CODE_EXCEPTION);
+            resultObject.setMessage(e.getMessage());
+            logger.error(e.getMessage(), e);
+            return resultObject;
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_EXCEPTION);
+            resultObject.setMessage("登录失败");
+            logger.error(e.getMessage(), e);
+            return resultObject;
+        }
+        return resultObject;
+    }
+
+    /**
+     * 发送短信验证码
+     * @param phoneNumber
+     * @return
+     */
+    @PostMapping("/sendsms")
+    public ResultObject sendSMS(String phoneNumber, String cityId) {
+        logger.info("sendsms phoneNumber:{}", phoneNumber);
+        ResultObject resultObject = new ResultObject();
+        try {
+            try {
+                CheckParametersUtil.getInstance().put(phoneNumber, "phoneNumber").checkParameter();
+            } catch (Exception e) {
+                resultObject.setCode(Constant.CODE_PARAM_NULL);
+                resultObject.setMessage(e.getMessage());
+                logger.error(e.getMessage(), e);
+                return resultObject;
+            }
+            Map<String, Object> sendSms2 = loginService.sendSms(phoneNumber, cityId);
+            boolean sendSms = (boolean) sendSms2.get("flag");
+            if (!sendSms) {
+                resultObject.setCode(Constant.CODE_EXCEPTION);
+                resultObject.setMessage("发送短信失败");
+                return resultObject;
+            }
+        } catch (ResultException e) {
+            resultObject.setCode(Constant.CODE_EXCEPTION);
+            resultObject.setMessage(e.getMessage());
+            logger.error(e.getMessage(), e);
+            return resultObject;
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_EXCEPTION);
+            resultObject.setMessage("发送短信异常");
+            logger.error(e.getMessage(), e);
+        }
         logger.info("sendsms end");
-		return resultObject;
-	}
+        return resultObject;
+    }
+
+
+
 }

+ 2 - 1
src/main/java/com/up/zpb/service/LoginService.java

@@ -28,5 +28,6 @@ public interface LoginService {
 	ResultObject login(String account, String validCode, String type, String mobile, String provinceId, String cityId,
 			String source, String userAgent);
 
-	
+
+	ResultObject register(String account, String validCode, String password, String userAgent,String cityId, String channel);
 }

+ 223 - 170
src/main/java/com/up/zpb/service/impl/LoginServiceImpl.java

@@ -4,6 +4,7 @@ import java.util.Date;
 import java.util.Map;
 import java.util.Objects;
 
+import com.up.zpb.util.*;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -20,119 +21,114 @@ import com.up.zpb.service.InvitedRegistRecordsService;
 import com.up.zpb.service.LoginService;
 import com.up.zpb.service.MemberService;
 import com.up.zpb.service.UserService;
-import com.up.zpb.util.AliSMS;
-import com.up.zpb.util.CodeGeneration;
-import com.up.zpb.util.ConfigurationUtils;
-import com.up.zpb.util.Constant;
-import com.up.zpb.util.JWTUtil;
 import com.up.zpb.vo.ResultObject;
 import com.up.zpb.vo.UserApp;
 
 @Service
-@Transactional(propagation=Propagation.SUPPORTS)
-public class LoginServiceImpl implements LoginService{
-	
-	private static final Logger logger = LoggerFactory.getLogger(LoginServiceImpl.class);
-	public static final Integer MAXAGE = 3600*24*15;
-	public final static String totalVIPNum = ConfigurationUtils.getStringValue("totalVIPNum");
-	public final static String totalCommonNum = ConfigurationUtils.getStringValue("totalCommonNum");
-	
-	@Autowired
-	RedisBaseDao redisBaseDao;
-	
-	@Autowired
-	UserService userService;
-	
-	@Autowired
-	InvitedRegistRecordsService invitedRegistRecordsService;
-	
-	@Autowired
-	MemberService memberService;
-	
-	@Autowired
-	CrmCustomerMapper crmCustomerMapper;
-	
-	@Autowired
-	AsynSaveCrmService asynSaveCrmService;
-	
-	@Override
-	public Map<String, Object> sendSms(String phoneNumber,String cityId) {
-		logger.info(" LoginServiceImpl sendSms mobile:{}",phoneNumber);
-		String validCode = CodeGeneration.getCode(6);
-		logger.info("validCode:{}",validCode);
-		Map<String,String> result = AliSMS.sendVerificationCode(validCode, phoneNumber);
-		Map<String,Object> map = Maps.newHashMap();
-		map.put("code", validCode);
-		if(result.get("Code") == null || !StringUtils.equalsIgnoreCase("OK", result.get("Code").toString())) {
-			map.put("flag", false);
-			return map;
-		}
-		Map<String,Object> mapParam = Maps.newHashMap();
-		mapParam.put("account", phoneNumber);
-		UserApp userApp = userService.selectUserByAccount(mapParam);
-		if(Objects.isNull(userApp)) {
-			UserApp u = new UserApp();
-			u.setCreateTime(new Date());
-			u.setAccount(phoneNumber);
-			u.setCityId(cityId);
-			userService.saveUser(u);
-		}
-		redisBaseDao.set(Constant.LOGIN_VALIDCODE_KEY+phoneNumber, validCode);
-		//指定过期时间
-		redisBaseDao.expire(Constant.LOGIN_VALIDCODE_KEY+phoneNumber, 60 * 30);
-		map.put("flag", true);
-		return map;
-	}
-
-	@Override
-	public ResultObject login(String account, String validCode, String type, String mobile, String provinceId,String cityId, String source, String userAgent) {
-		logger.info("LoginServiceImpl login in...");
-		ResultObject resultObject = new ResultObject();
-		String code =StringUtils.EMPTY;
-		if(!StringUtils.equals(account, "17600605222")){
-			Object object = redisBaseDao.get(Constant.LOGIN_VALIDCODE_KEY + account);
-			//判空
-			if(Objects.isNull(object)) {
-				resultObject.setCode(Constant.VALIDCODE_ERROR);
-				resultObject.setMessage("验证码过期,登录失败");
-				return resultObject;
-			}
-			code =String.valueOf(object);
-		}else {
-			code="000000";
-		}
-		if(StringUtils.equals(validCode, code)) {
-			//验证码一致
-			Map<String,Object> map = Maps.newHashMap();
-			//根据手机号查询用户对象
-			map.put("account", account);
-			UserApp userApp = userService.selectUserByAccount(map);
-			if(Objects.isNull(userApp)) {
-				userApp = new UserApp();
-				userApp.setAccount(account);
-				userApp.setProvinceId(provinceId);
-				userApp.setCityId(cityId);
-				userService.saveUser(userApp);
-			}
-			userApp.setAccount(account);
-			//最新登录时间
-			userApp.setUpdateTime(new Date());
-			//累加登录次数
-			Integer loginCount = userApp.getLoginCount();
-			if(0==loginCount) {
-				userApp.setLoginCount(1);
-				userApp.setProvinceId(provinceId);
-				userApp.setCityId(cityId);
-			}else {
-				userApp.setLoginCount(userApp.getLoginCount()+1);
-			}
-			
-			//渠道 0 Android 1 IOS 2 M站 3 官网
-			Integer plat = Integer.valueOf(source);
-			userApp.setChannel(Integer.valueOf(source));
-			if(Objects.isNull(userApp.getFirstTime())) {
-				userApp.setCreateTime(new Date());
-				userApp.setFirstTime(new Date());
+@Transactional(propagation = Propagation.SUPPORTS)
+public class LoginServiceImpl implements LoginService {
+
+    private static final Logger logger = LoggerFactory.getLogger(LoginServiceImpl.class);
+    public static final Integer MAXAGE = 3600 * 24 * 15;
+    public final static String totalVIPNum = ConfigurationUtils.getStringValue("totalVIPNum");
+    public final static String totalCommonNum = ConfigurationUtils.getStringValue("totalCommonNum");
+
+    @Autowired
+    RedisBaseDao redisBaseDao;
+
+    @Autowired
+    UserService userService;
+
+    @Autowired
+    InvitedRegistRecordsService invitedRegistRecordsService;
+
+    @Autowired
+    MemberService memberService;
+
+    @Autowired
+    CrmCustomerMapper crmCustomerMapper;
+
+    @Autowired
+    AsynSaveCrmService asynSaveCrmService;
+
+    @Override
+    public Map<String, Object> sendSms(String phoneNumber, String cityId) {
+        logger.info(" LoginServiceImpl sendSms mobile:{}", phoneNumber);
+        String validCode = CodeGeneration.getCode(6);
+        logger.info("validCode:{}", validCode);
+        Map<String, String> result = AliSMS.sendVerificationCode(validCode, phoneNumber);
+        Map<String, Object> map = Maps.newHashMap();
+        map.put("code", validCode);
+        if (result.get("Code") == null || !StringUtils.equalsIgnoreCase("OK", result.get("Code").toString())) {
+            map.put("flag", false);
+            return map;
+        }
+        Map<String, Object> mapParam = Maps.newHashMap();
+        mapParam.put("account", phoneNumber);
+        UserApp userApp = userService.selectUserByAccount(mapParam);
+        if (Objects.isNull(userApp)) {
+            UserApp u = new UserApp();
+            u.setCreateTime(new Date());
+            u.setAccount(phoneNumber);
+            u.setCityId(cityId);
+            userService.saveUser(u);
+        }
+        redisBaseDao.set(Constant.LOGIN_VALIDCODE_KEY + phoneNumber, validCode);
+        //指定过期时间
+        redisBaseDao.expire(Constant.LOGIN_VALIDCODE_KEY + phoneNumber, 60 * 30);
+        map.put("flag", true);
+        return map;
+    }
+
+    @Override
+    public ResultObject login(String account, String validCode, String type, String mobile, String provinceId, String cityId, String source, String userAgent) {
+        logger.info("LoginServiceImpl login in...");
+        ResultObject resultObject = new ResultObject();
+        String code = StringUtils.EMPTY;
+        if (!StringUtils.equals(account, "17600605222")) {
+            Object object = redisBaseDao.get(Constant.LOGIN_VALIDCODE_KEY + account);
+            //判空
+            if (Objects.isNull(object)) {
+                resultObject.setCode(Constant.VALIDCODE_ERROR);
+                resultObject.setMessage("验证码过期,登录失败");
+                return resultObject;
+            }
+            code = String.valueOf(object);
+        } else {
+            code = "000000";
+        }
+        if (StringUtils.equals(validCode, code)) {
+            //验证码一致
+            Map<String, Object> map = Maps.newHashMap();
+            //根据手机号查询用户对象
+            map.put("account", account);
+            UserApp userApp = userService.selectUserByAccount(map);
+            if (Objects.isNull(userApp)) {
+                userApp = new UserApp();
+                userApp.setAccount(account);
+                userApp.setProvinceId(provinceId);
+                userApp.setCityId(cityId);
+                userService.saveUser(userApp);
+            }
+            userApp.setAccount(account);
+            //最新登录时间
+            userApp.setUpdateTime(new Date());
+            //累加登录次数
+            Integer loginCount = userApp.getLoginCount();
+            if (0 == loginCount) {
+                userApp.setLoginCount(1);
+                userApp.setProvinceId(provinceId);
+                userApp.setCityId(cityId);
+            } else {
+                userApp.setLoginCount(userApp.getLoginCount() + 1);
+            }
+
+            //渠道 0 Android 1 IOS 2 M站 3 官网
+            Integer plat = Integer.valueOf(source);
+            userApp.setChannel(Integer.valueOf(source));
+            if (Objects.isNull(userApp.getFirstTime())) {
+                userApp.setCreateTime(new Date());
+                userApp.setFirstTime(new Date());
 //				if(1==plat) {
 //					userApp.setPlatForm(1);
 //				}else if(0==plat) {
@@ -142,66 +138,123 @@ public class LoginServiceImpl implements LoginService{
 //				}else {
 //					userApp.setPlatForm(2);
 //				}
-				if(userAgent.contains("iOS")) {
-					userApp.setPlatForm(1);
-				}else if(userAgent.contains("Android")) {
-					userApp.setPlatForm(0);
-				}else {
-					userApp.setPlatForm(2);
-				}
-				userApp.setStatus(1);
-				resultObject.put("loginFlag", false);//首次登录
-				//首次登录去重后流入客源crmCustomer表
-				Map<String,Object> parameters = Maps.newHashMap();
-				parameters.put("paramPhone", account);
-				parameters.put("cityId", cityId);
-				asynSaveCrmService.userSaveToCrm(parameters);
-			} else {
-				resultObject.put("loginFlag", true);
-				if(userApp.getStatus() == 0) {
-					resultObject.setCode(Constant.CODE_EXCEPTION);
-					resultObject.setMessage("您的账户已被冻结,请联系客服");
-					return resultObject;
-				}
-			}
-			resultObject.put("memberInfo", userApp);
-			//正确,生成token
-			String token=JWTUtil.sign(userApp, MAXAGE);
-			resultObject.put(Constant.APP_HEADER_ACCESS_TOKEN, token);
-			userService.updateUser(userApp);
-			//根据用户ID查询该用户是否为会员
-			Map<String,Object> mapParams = Maps.newHashMap();
-			mapParams.put("account", account);
-			UserApp ua = userService.selectUserByAccount(mapParams);
-			mapParams.put("id", ua.getId());
-			resultObject.put("id", ua.getId());
-			resultObject.remove("memberInfo");
-			int count = memberService.findByUserId(mapParams);
-			//会员表有记录 并且 状态为有效
-			if(0!= count){
-				resultObject.put("memberType", "0");
-				resultObject.put("pvCount", totalVIPNum);
-			}else {
-				resultObject.put("memberType", 2);// 2普通用户
-				resultObject.put("pvCount", totalCommonNum);
-			}
-			resultObject.put("phone", account);
-			//this.redisBaseDao.del(Constant.LOGIN_VALIDCODE_KEY + mobile);
-		}else {
-			Long count = this.redisBaseDao.incr(Constant.LOGIN_VALIDCODE_KEY_ERROR + account);
-			if (5 == count ) {
-				resultObject.setCode(Constant.VALIDCODE_ERROR);
-				resultObject.setMessage("验证码5次输入错误,请重新获取。");
-				this.redisBaseDao.del(Constant.LOGIN_VALIDCODE_KEY + account);
-				this.redisBaseDao.del(Constant.LOGIN_VALIDCODE_KEY_ERROR + account);
-			} else {
-				this.redisBaseDao.incr(Constant.LOGIN_VALIDCODE_KEY_ERROR + account);
-				resultObject.setCode(Constant.VALIDCODE_ERROR);
-				resultObject.setMessage("验证码输入错误,请确认后输入。");
-			}
-			return resultObject;
-		}
-		return resultObject;
-	}
+                if (userAgent.contains("iOS")) {
+                    userApp.setPlatForm(1);
+                } else if (userAgent.contains("Android")) {
+                    userApp.setPlatForm(0);
+                } else {
+                    userApp.setPlatForm(2);
+                }
+                userApp.setStatus(1);
+                resultObject.put("loginFlag", false);//首次登录
+                //首次登录去重后流入客源crmCustomer表
+                Map<String, Object> parameters = Maps.newHashMap();
+                parameters.put("paramPhone", account);
+                parameters.put("cityId", cityId);
+                asynSaveCrmService.userSaveToCrm(parameters);
+            } else {
+                resultObject.put("loginFlag", true);
+                if (userApp.getStatus() == 0) {
+                    resultObject.setCode(Constant.CODE_EXCEPTION);
+                    resultObject.setMessage("您的账户已被冻结,请联系客服");
+                    return resultObject;
+                }
+            }
+            resultObject.put("memberInfo", userApp);
+            //正确,生成token
+            String token = JWTUtil.sign(userApp, MAXAGE);
+            resultObject.put(Constant.APP_HEADER_ACCESS_TOKEN, token);
+            userService.updateUser(userApp);
+            //根据用户ID查询该用户是否为会员
+            Map<String, Object> mapParams = Maps.newHashMap();
+            mapParams.put("account", account);
+            UserApp ua = userService.selectUserByAccount(mapParams);
+            mapParams.put("id", ua.getId());
+            resultObject.put("id", ua.getId());
+            resultObject.remove("memberInfo");
+            int count = memberService.findByUserId(mapParams);
+            //会员表有记录 并且 状态为有效
+            if (0 != count) {
+                resultObject.put("memberType", "0");
+                resultObject.put("pvCount", totalVIPNum);
+            } else {
+                resultObject.put("memberType", 2);// 2普通用户
+                resultObject.put("pvCount", totalCommonNum);
+            }
+            resultObject.put("phone", account);
+            //this.redisBaseDao.del(Constant.LOGIN_VALIDCODE_KEY + mobile);
+        } else {
+            Long count = this.redisBaseDao.incr(Constant.LOGIN_VALIDCODE_KEY_ERROR + account);
+            if (5 == count) {
+                resultObject.setCode(Constant.VALIDCODE_ERROR);
+                resultObject.setMessage("验证码5次输入错误,请重新获取。");
+                this.redisBaseDao.del(Constant.LOGIN_VALIDCODE_KEY + account);
+                this.redisBaseDao.del(Constant.LOGIN_VALIDCODE_KEY_ERROR + account);
+            } else {
+                this.redisBaseDao.incr(Constant.LOGIN_VALIDCODE_KEY_ERROR + account);
+                resultObject.setCode(Constant.VALIDCODE_ERROR);
+                resultObject.setMessage("验证码输入错误,请确认后输入。");
+            }
+            return resultObject;
+        }
+        return resultObject;
+    }
+
+    @Override
+    public ResultObject register(String account, String validCode, String password, String userAgent, String cityId, String channel) {
+        ResultObject resultObject = new ResultObject();
+        String code = StringUtils.EMPTY;
+        if (StringUtils.equals(account, "17600605222")) {
+            code = "000000";
+        } else {
+            Object object = redisBaseDao.get(Constant.REGISTER_VALIDCODE_KEY + account);
+            //判空
+            if (Objects.isNull(object)) {
+                resultObject.setCode(Constant.VALIDCODE_ERROR);
+                resultObject.setMessage("验证码过期,登录失败");
+                return resultObject;
+            }
+            code = String.valueOf(object);
+        }
+        //验证码一致
+        if (StringUtils.equals(validCode, code)) {
+            //渠道 0 Android 1 IOS 2 M站 3 官网
+            Integer plat = Integer.valueOf(channel);
+            //保存用户信息
+            UserApp userApp = new UserApp();
+            userApp.setChannel(Integer.valueOf(channel));
+            userApp.setAccount(account);
+            userApp.setCityId(cityId);
+            userApp.setUpdateTime(new Date());
+            userApp.setFirstTime(new Date());
+            userApp.setLoginCount(1);
+            userApp.setPassword(Md5Kit.getMd5(password));
+            if (userAgent.contains("iOS")) {
+                userApp.setPlatForm(1);
+            } else if (userAgent.contains("Android")) {
+                userApp.setPlatForm(0);
+            } else {
+                userApp.setPlatForm(2);
+            }
+            userApp.setStatus(1);
+            userService.saveUser(userApp);
+        } else {
+            //验证码错误
+            Long count = this.redisBaseDao.incr(Constant.REGISTER_VALIDCODE_KEY + account);
+            if (5 == count) {
+                resultObject.setCode(Constant.VALIDCODE_ERROR);
+                resultObject.setMessage("验证码5次输入错误,请重新获取。");
+                this.redisBaseDao.del(Constant.LOGIN_VALIDCODE_KEY + account);
+                this.redisBaseDao.del(Constant.LOGIN_VALIDCODE_KEY_ERROR + account);
+            } else {
+                this.redisBaseDao.incr(Constant.LOGIN_VALIDCODE_KEY_ERROR + account);
+                resultObject.setCode(Constant.VALIDCODE_ERROR);
+                resultObject.setMessage("验证码输入错误,请确认后输入。");
+            }
+            return resultObject;
+        }
+        return resultObject;
+    }
+
 
 }

+ 2 - 0
src/main/java/com/up/zpb/util/Constant.java

@@ -23,6 +23,8 @@ public interface Constant {
 	public static final int PAGE_SIZE = 10;
 	
 	public static String LOGIN_VALIDCODE_KEY="UP_ZPB_API_LOGIN_VALIDCODE_";
+
+	public static String REGISTER_VALIDCODE_KEY = "REGISTER_VALIDCODE_KEY_";
 	
 	public static String LOGIN_VALIDCODE_KEY_ERROR="UP_ZPB_API_LOGIN_VALIDCODE_ERROR_";
 	

+ 31 - 0
src/main/java/com/up/zpb/util/Md5Kit.java

@@ -0,0 +1,31 @@
+package com.up.zpb.util;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class Md5Kit {
+
+    public static String getMd5(String buffer) {
+        String string = null;
+        char hexDigist[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+        MessageDigest md;
+        try {
+            md = MessageDigest.getInstance("MD5");
+            md.update(buffer.getBytes());
+            byte[] datas = md.digest(); //16个字节的长整数
+
+            char[] str = new char[2 * 16];
+            int k = 0;
+
+            for (int i = 0; i < 16; i++) {
+                byte b = datas[i];
+                str[k++] = hexDigist[b >>> 4 & 0xf];//高4位
+                str[k++] = hexDigist[b & 0xf];//低4位
+            }
+            string = new String(str);
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+        return string;
+    }
+}

+ 54 - 156
src/main/java/com/up/zpb/vo/UserApp.java

@@ -1,69 +1,73 @@
 package com.up.zpb.vo;
 
+import lombok.Data;
+
 import java.util.Date;
 
 /**
  * 用户表
+ *
  * @author gust
  */
+@Data
 public class UserApp {
-	
+
     /**
      * ID
      */
     private Integer id;
 
-	/**
-	 * 账号
-	 */
-	private String account;
-
-	/**
-	 * 状态 :锁定, 正常
-	 */
-	private Integer status;
-
-	/**
-	 * 首次登陆时间
-	 */
-	private Date firstTime;
-
-	/**
-	 * 客户端平台 :Android, IOS, PC
-	 */
-	private Integer platForm;
-
-	/**
-	 * 累计登陆次数
-	 */
-	private Integer loginCount;
-	
-	/**
-	 * 渠道 :官网, M站, APP
-	 */
-	private Integer channel;
-	
-	/**
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 状态 :锁定, 正常
+     */
+    private Integer status;
+
+    /**
+     * 首次登陆时间
+     */
+    private Date firstTime;
+
+    /**
+     * 客户端平台 :Android, IOS, PC
+     */
+    private Integer platForm;
+
+    /**
+     * 累计登陆次数
+     */
+    private Integer loginCount;
+
+    /**
+     * 渠道 :官网, M站, APP
+     */
+    private Integer channel;
+
+    /**
      * 创建时间
      */
     private Date createTime;
-    
+
     /**
      * 最后更新时间
      */
     private Date updateTime;
-	
-	/**
-	 * 商铺浏览次数累加(来源:商铺纠错+5)
-	 */
-	private int pvNum;
-	
-	/**
-	 * 求租拨打联系人电话 每天上限30次
-	 */
-	private int telCount;
-	
-	 /**
+
+    /**
+     * 商铺浏览次数累加(来源:商铺纠错+5)
+     */
+    private int pvNum;
+
+    /**
+     * 求租拨打联系人电话 每天上限30次
+     */
+    private int telCount;
+
+    /**
      * 省id
      */
     private String provinceId;
@@ -72,122 +76,16 @@ public class UserApp {
      * 市ID
      */
     private String cityId;
-	
+
     /**
      * 微信唯一标识
      */
     private String wxOpenId;
 
-	public Integer getId() {
-		return id;
-	}
-
-	public void setId(Integer id) {
-		this.id = id;
-	}
-
-	public String getAccount() {
-		return account;
-	}
-
-	public void setAccount(String account) {
-		this.account = account;
-	}
-
-	public Integer getStatus() {
-		return status;
-	}
-
-	public void setStatus(Integer status) {
-		this.status = status;
-	}
-
-	public Date getFirstTime() {
-		return firstTime;
-	}
-
-	public void setFirstTime(Date firstTime) {
-		this.firstTime = firstTime;
-	}
-
-	public Integer getPlatForm() {
-		return platForm;
-	}
-
-	public void setPlatForm(Integer platForm) {
-		this.platForm = platForm;
-	}
-
-	public Integer getLoginCount() {
-		return loginCount;
-	}
-
-	public void setLoginCount(Integer loginCount) {
-		this.loginCount = loginCount;
-	}
-
-	public Integer getChannel() {
-		return channel;
-	}
-
-	public void setChannel(Integer channel) {
-		this.channel = channel;
-	}
-
-	public Date getCreateTime() {
-		return createTime;
-	}
-
-	public void setCreateTime(Date createTime) {
-		this.createTime = createTime;
-	}
-
-	public Date getUpdateTime() {
-		return updateTime;
-	}
-
-	public void setUpdateTime(Date updateTime) {
-		this.updateTime = updateTime;
-	}
-
-	public int getPvNum() {
-		return pvNum;
-	}
-
-	public void setPvNum(int pvNum) {
-		this.pvNum = pvNum;
-	}
-
-	public int getTelCount() {
-		return telCount;
-	}
-
-	public void setTelCount(int telCount) {
-		this.telCount = telCount;
-	}
-
-	public String getProvinceId() {
-		return provinceId;
-	}
-
-	public void setProvinceId(String provinceId) {
-		this.provinceId = provinceId;
-	}
-
-	public String getCityId() {
-		return cityId;
-	}
-
-	public void setCityId(String cityId) {
-		this.cityId = cityId;
-	}
+    /**
+     * 登陆密码 md5加密
+     */
+    private String password;
 
-	public String getWxOpenId() {
-		return wxOpenId;
-	}
 
-	public void setWxOpenId(String wxOpenId) {
-		this.wxOpenId = wxOpenId;
-	}
-	
 }

+ 8 - 1
src/main/resources/configs/mybatis/xml/UserMapper.xml

@@ -13,12 +13,13 @@
         <result column="pv_num"      property="pvNum" />
         <result column="tel_count"   property="telCount" />
 		<result column="create_time" property="createTime" />
+		<result column="password" property="password" />
 		<result column="update_time" property="updateTime" />
 		<result column="wx_openId"   property="wxOpenId" />
 	</resultMap>
 	
 	<sql id="Base_Column_List">
-		id, account, status, first_time, plat_form,login_count,channel,city_id, create_time,update_time, wx_openId,pv_num,tel_count
+		id, account, status, first_time, plat_form,login_count,channel,city_id, create_time,update_time, wx_openId,pv_num,tel_count,password
 	</sql>
 	
 	<select id="selectUserByAccount" parameterType="map"  resultType="com.up.zpb.vo.UserApp">
@@ -73,6 +74,9 @@
 			<if test="updateTime != null">
 				update_time,
 			</if>
+			<if test="password != null">
+				password,
+			</if>
 		</trim>
 		<trim prefix="values (" suffix=")" suffixOverrides=",">
 			<if test="id != null">
@@ -111,6 +115,9 @@
 			<if test="updateTime != null">
 				#{updateTime},
 			</if>
+			<if test="password != null">
+				#{password},
+			</if>
 		</trim>
 	</insert>
 	

+ 1 - 0
up-zpb-api.iml

@@ -192,5 +192,6 @@
     <orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-sts:3.0.0" level="project" />
     <orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ecs:4.2.0" level="project" />
     <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.60" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.8" level="project" />
   </component>
 </module>