0
点赞
收藏
分享

微信扫一扫

java版 spring boot mybatis 前后端分离 之实现工程管理系统

SDKB英文 2022-04-14 阅读 34
@源码地址来源:http://minglisoft.cn/hhcloud

手机端源码:


/**
 * 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.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@源码地址来源:http://minglisoft.cn/hhcloud
@获取源码+wx: haiwabbc2
 
import javax.servlet.http.HttpServletRequest;
 
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
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.honghu.cloud.bean.SmsCode;
import com.honghu.cloud.bean.SmsConfig;
import com.honghu.cloud.bean.SmsTemplate;
import com.honghu.cloud.bean.User;
import com.honghu.cloud.code.ResponseCode;
import com.honghu.cloud.constant.Globals;
import com.honghu.cloud.dto.AccessoryDto;
import com.honghu.cloud.dto.StoreDto;
import com.honghu.cloud.dto.SysConfigDto;
import com.honghu.cloud.dto.UserDto;
import com.honghu.cloud.feign.AccessoryFeignClient;
import com.honghu.cloud.feign.DistributionUserFeignClient;
import com.honghu.cloud.feign.StoreFeignClient;
import com.honghu.cloud.feign.SysConfigFeignClient;
import com.honghu.cloud.redis.RedisUtil;
import com.honghu.cloud.service.ISmsCodeService;
import com.honghu.cloud.service.ISmsConfigService;
import com.honghu.cloud.service.ISmsTemplateService;
import com.honghu.cloud.service.IUserService;
import com.honghu.cloud.tools.AliSmsUtil;
import com.honghu.cloud.tools.SecurityUserHolder;
import com.honghu.cloud.utils.CommUtil;
import com.honghu.cloud.utils.JWT;
import com.honghu.cloud.utils.tools.Md5Encrypt;
 
import net.sf.json.JSONObject;
 
/**
 * 短信服务
 * @author Administrator
 *
 */
@RestController
@RequestMapping(value = "/mobile")
@CrossOrigin(origins = "*",maxAge = 3600)
public class MobileController {
 
	@Autowired
	private ISmsConfigService smsConfigService;
	@Autowired
	private ISmsTemplateService smsTemplateService;
	@Autowired
	private ISmsCodeService smsCodeService;
	@Autowired
	private SysConfigFeignClient sysConfigFeignClient;
	@Autowired
	private IUserService userService;
	@Autowired
	private RedisUtil redisUtil;
	@Autowired
	private StoreFeignClient storeFeignClient;
	@Autowired
	private DistributionUserFeignClient disUserFeignClient;
	@Autowired
	private AccessoryFeignClient accessoryFeignClient;
	
	
	// 短信服务类型
	public static List<String> sms_items = Lists.newArrayList();
	static{
		sms_items.add("bind_mobile"); // 绑定手机发送短信
		sms_items.add("register_mobile"); // 手机号码注册发送短信
		sms_items.add("login_mobile"); // 手机登录发送短信
		sms_items.add("update_password"); // 修改密码
		sms_items.add("update_pay_password"); // 修改支付密码
		sms_items.add("forget_password"); // 忘记密码
	}
	
	
	/**
	 * 发送短信服务
	 * @param json(sms_type:bind_mobile,register_mobile,login_mobile)
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/sendCode", method = RequestMethod.POST)
	public Map<String,Object> sendCode(@RequestBody JSONObject json, HttpServletRequest request){
		String sms_type = json.optString("sms_type");
		if(StringUtils.isEmpty(sms_type)){
			return ResponseCode.buildCodeMap("20001", "服务类型不能为空", null);
		}
		if(!sms_items.contains(sms_type)){
			return ResponseCode.buildCodeMap("20002", "服务类型错误", null);
		}
		String mobile = json.optString("mobile");
		if(StringUtils.isEmpty(mobile)){
			return ResponseCode.buildCodeMap("20003", "手机号码不能为空", null);
		}
		
		// 查询短信配置
		SmsConfig smsConfig = smsConfigService.findSmsConfig();
		if(smsConfig == null){
			return ResponseCode.buildCodeMap("20004", "系统未配置短信服务服务", null);
		}
		
		// 根据(英文模板名称)查询短信模板
		SmsTemplate smsTemplate = smsTemplateService.findByCodeEn(sms_type);
		if(smsTemplate == null){
			return ResponseCode.buildCodeMap("20005", "服务模板不存在", null);
		}
		
		String content = "";
		if (StringUtils.equals(sms_type, "bind_mobile") || StringUtils.equals(sms_type, "register_mobile")
				|| StringUtils.equals(sms_type, "login_mobile") || StringUtils.equals(sms_type, "forget_password")
				|| StringUtils.equals(sms_type, "update_password")|| StringUtils.equals(sms_type, "update_pay_password")) {
			// 入库验证码
			SmsCode smsCode = new SmsCode();
			smsCode.setMobile(mobile);
			smsCode.setSend_time(new Date());
			smsCode.setCode(CommUtil.randomInt(4));
			smsCode.setCode_en(sms_type);
			smsCodeService.saveEntity(smsCode);
			content = "{\"code\":\"" + smsCode.getCode() + "\"}";
		}
		
		// 发送短信
		String result = AliSmsUtil.sendByALY(mobile, content, smsConfig, smsTemplate);
		if(StringUtils.isNotEmpty(result)){
			return ResponseCode.buildCodeMap("20006", result, null);
		}
		return ResponseCode.buildSuccessMap("短信发送成功");
	}
	
	
	/**
	 * 手机号注册(登录)
	 * @param json
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/register_mobile", method = RequestMethod.POST)
	public Map<String,Object> register_mobile(@RequestBody JSONObject json, HttpServletRequest request){
		String sms_type = json.optString("sms_type");
		if(StringUtils.isEmpty(sms_type)){
			return ResponseCode.buildCodeMap("20001", "服务类型不能为空", null);
		}
		if(!StringUtils.equals("register_mobile", sms_type)){
			return ResponseCode.buildCodeMap("20002", "服务类型错误", null);
		}
		
		String mobile = json.optString("mobile");
		if(StringUtils.isEmpty(mobile)){
			return ResponseCode.buildCodeMap("20003", "手机号码不能为空", null);
		}
		String code = json.optString("code");
		if(StringUtils.isEmpty(code)){
			return ResponseCode.buildCodeMap("20004", "验证码不能为空", null);
		}
		String password = json.optString("password");
		if(StringUtils.isEmpty(password)){
			return ResponseCode.buildCodeMap("20004", "密码不能为空", null);
		}
		// 查询短信配置
		SmsConfig smsConfig = smsConfigService.findSmsConfig();
		Integer use_minute = 5;
		if(smsConfig != null && smsConfig.getUse_minute() != null){
			use_minute = smsConfig.getUse_minute();
		}
		// 查询手机号有效期内的验证码
		SmsCode smsCode = smsCodeService.findByCode(mobile, sms_type, use_minute);
		if(smsCode == null){
			return ResponseCode.buildCodeMap("20005", "验证码已过期,请重新获取!", null);
		}
		if(!StringUtils.equals(code, smsCode.getCode())){
			return ResponseCode.buildCodeMap("20006", "验证码错误", null);
		}
		
		// 查询手机号码是否注册
		User user = userService.selectByUserName(mobile);
		if(user != null){
			return ResponseCode.buildCodeMap("20007", "手机号已注册", null);
		}
		
		user = new User();
		user.setDeleteStatus(0);
		user.setSex(-1); // 性别 1为男、0为女、-1为保密
		user.setDeleteStatus(0);
		user.setAddTime(new Date());
		user.setMonth_income(0);
		user.setIntegral(0);
		user.setIs_agent(0);
		user.setLoginCount(0);
		user.setAvailableBalance(BigDecimal.ZERO);
		user.setFreezeBlance(BigDecimal.ZERO);
		user.setMobile(mobile);
		user.setUserName(mobile);
		user.setPassword(Md5Encrypt.md5(password).toLowerCase());
		user.setYears(0); // 用户年龄
		user.setIs_live(0);
		user.setUser_type(0); // 用户类别,默认为0个人用户,1为企业用户
		user.setStore_apply_step(0); // 店铺申请进行的步骤,默认为0
		user.setInvoiceType(0); // 发票类型
		user.setLive_code(userService.selectMaxLiveCode() + 1);
		user.setWhether_attention(1); //是否允许关注 0为不允许,1为允许
		userService.saveEntity(user);
		userService.saveDisUser(user, "-1");
		// 修改登录信息
		user.setLoginCount(user.getLoginCount()+1);
		user.setLastLoginDate(new Date());
		user.setLastLoginIp(CommUtil.getIpAddr(request));
		// 生成token,格式:用户id;时间戳  
		String token = JWT.sign(user.getId() + ";" + System.currentTimeMillis()+";"+"app", 0);
		// 将token存到redis中,有效期24小时 
		redisUtil.set(Globals.ANDROID_LOGIN_MARK + user.getId(), token, Globals.USER_INFO_EXPIRE_TIME);
		
		// 返回结果集
		Map<String, Object> resultMap = new HashMap<String, Object>();
		resultMap.put("token", token);
		// 置空用户敏感字段
		user.setPassword("");
		user.setPay_password("");
		resultMap.put("user", user);
		// 置空系统配置敏感字段
		SysConfigDto sysConfig = sysConfigFeignClient.getSysConfig();
		sysConfig.setWeixin_appId("");
		sysConfig.setWeixin_appSecret("");
		sysConfig.setUploadFilePath("");
		sysConfig.setUser_level("");
		resultMap.put("sysConfig", sysConfig);
		
		return ResponseCode.buildSuccessMap(resultMap);
	}
	
	
	/**
	 * 手机号登录
	 * @param json
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/login_mobile", method = RequestMethod.POST)
	public Map<String,Object> login_mobile(@RequestBody JSONObject json, HttpServletRequest request){
		String sms_type = json.optString("sms_type");
		if(StringUtils.isEmpty(sms_type)){
			return ResponseCode.buildCodeMap("20001", "服务类型不能为空", null);
		}
		if(!StringUtils.equals("login_mobile", sms_type)){
			return ResponseCode.buildCodeMap("20002", "服务类型错误", null);
		}
		
		String mobile = json.optString("mobile");
		if(StringUtils.isEmpty(mobile)){
			return ResponseCode.buildCodeMap("20003", "手机号码不能为空", null);
		}
		String code = json.optString("code");
		if(StringUtils.isEmpty(code)){
			return ResponseCode.buildCodeMap("20004", "验证码不能为空", null);
		}
		
		// 查询短信配置
		SmsConfig smsConfig = smsConfigService.findSmsConfig();
		Integer use_minute = 5;
		if(smsConfig != null && smsConfig.getUse_minute() != null){
			use_minute = smsConfig.getUse_minute();
		}
		// 查询手机号有效期内的验证码
		SmsCode smsCode = smsCodeService.findByCode(mobile, sms_type, use_minute);
		if(smsCode == null){
			return ResponseCode.buildCodeMap("20005", "验证码已过期,请重新获取!", null);
		}
		if(!StringUtils.equals(code, smsCode.getCode())){
			return ResponseCode.buildCodeMap("20006", "验证码错误", null);
		}
		
		// 查询手机号码是否注册
		User user = userService.selectByUserName(mobile);
		if(user == null){
			return ResponseCode.buildCodeMap("20007", "该用户不存在", null);
		}
		if(user.getSecurity() == 1){
			return ResponseCode.buildCodeMap("20008", "账户存在安全隐患禁止登录!", null);
		 }
		
		String storestatus="";
		if (user.getStore_id()!=null) {
			StoreDto storeDto = storeFeignClient.selectByPrimaryKey(user.getStore_id());
			if (storeDto!=null) {
				storestatus=storeDto.getStore_status()+"";
			}
		}
		// 修改登录信息
		user.setLoginCount(user.getLoginCount()+1);
		user.setLastLoginDate(new Date());
		user.setLastLoginIp(CommUtil.getIpAddr(request));
		// 生成token,格式:用户id;时间戳  
		String token = JWT.sign(user.getId() + ";" + System.currentTimeMillis()+";"+"app", 0);
		// 将token存到redis中,有效期24小时 
		redisUtil.set(Globals.ANDROID_LOGIN_MARK + user.getId(), token, Globals.USER_INFO_EXPIRE_TIME);
		
		// 返回结果集
		Map<String, Object> resultMap = new HashMap<String, Object>();
		resultMap.put("token", token);
		// 置空用户敏感字段
		user.setPassword("");
		user.setPay_password("");
		if (user.getPhoto_id()!=null) {
			AccessoryDto accessoryDto = accessoryFeignClient.selectByPrimaryKey(user.getPhoto_id());
			if (accessoryDto!=null) user.setPhoto(accessoryDto);
    	}
		resultMap.put("user", user);
		/*// 置空系统配置敏感字段
		SysConfigDto sysConfig = sysConfigFeignClient.getSysConfig();
		sysConfig.setWeixin_appId("");
		sysConfig.setWeixin_appSecret("");
		sysConfig.setUploadFilePath("");
		sysConfig.setUser_level("");
		resultMap.put("sysConfig", sysConfig);*/
		resultMap.put("storestatus", storestatus);
		
		return ResponseCode.buildSuccessMap(resultMap);
	}
 
	/**
	 * 手机号绑定
	 * @param json
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/login_bind", method = RequestMethod.POST)
	public Map<String,Object> login_bind(@RequestBody JSONObject json, HttpServletRequest request){
		
		String sms_type = json.optString("sms_type");
		if(StringUtils.isEmpty(sms_type)){
			return ResponseCode.buildCodeMap("20001", "服务类型不能为空", null);
		}
		if(!StringUtils.equals("bind_mobile", sms_type)){
			return ResponseCode.buildCodeMap("20002", "服务类型错误", null);
		}
		
		String mobile = json.optString("mobile");
		if(StringUtils.isEmpty(mobile)){
			return ResponseCode.buildCodeMap("20003", "手机号码不能为空", null);
		}
		String code = json.optString("code");
		if(StringUtils.isEmpty(code)){
			return ResponseCode.buildCodeMap("20004", "验证码不能为空", null);
		}
		String id = json.optString("id");
		if(StringUtils.isEmpty(id)){
			return ResponseCode.buildCodeMap("20008", "id不能为空", null);
		}
		
		// 查询短信配置
		SmsConfig smsConfig = smsConfigService.findSmsConfig();
		Integer use_minute = 5;
		if(smsConfig != null && smsConfig.getUse_minute() != null){
			use_minute = smsConfig.getUse_minute();
		}
		// 查询手机号有效期内的验证码
		SmsCode smsCode = smsCodeService.findByCode(mobile, sms_type, use_minute);
		if(smsCode == null){
			return ResponseCode.buildCodeMap("20005", "验证码已过期,请重新获取!", null);
		}
		if(!StringUtils.equals(code, smsCode.getCode())){
			return ResponseCode.buildCodeMap("20006", "验证码错误", null);
		}
		// 返回结果集
		Map<String, Object> resultMap = new HashMap<String, Object>();
		// 查询手机号码是否注册
		User UserName = userService.selectByUserName(mobile);   //原用户
		User user = userService.selectByPrimaryKey(CommUtil.null2Long(id));    //刚注册的用户
		// 原手机号存在用户, 并且登录用户有微信union    ,需要合并用户    ,          手机号存在, 并且 unionid 为空     
		if (UserName!=null&&StringUtils.isEmpty(UserName.getWeixin_unionID())&&user.getWeixin_unionID()!=null) {
			
			UserName.setWeixin_unionID(user.getWeixin_unionID());    //将新unionid 存入旧数据中
			if (UserName.getLive_code()==null) {
				UserName.setLive_code(userService.selectMaxLiveCode() + 1);
			}
			if (StringUtils.isEmpty(UserName.getNickName())) {
				UserName.setNickName(user.getNickName());
			}
			if (user.getPhoto_id()!=null) {
				UserName.setPhoto_id(user.getPhoto_id());
			}
			if (user.getOpenId()!=null) {
				UserName.setOpenId(user.getOpenId());
			}
			userService.updateById(UserName);
			user.setDeleteStatus(1);
			user.setMobile("del"+CommUtil.null2String(mobile));
			user.setUserName("del"+CommUtil.null2String(mobile));
			user.setWeixin_unionID("del"+UserName.getId()+"");
			userService.updateById(user);
			disUserFeignClient.deleteByUserId(user.getId());   //删除新的 分销关系表
			//redisUtil.remove(Globals.ANDROID_LOGIN_MARK + user.getId());
			//redisUtil.remove(Globals.WECHAT_LOGIN_MARK + user.getId());
			//换用户登录
			// 生成token,格式:用户id;时间戳  
		//	String token = JWT.sign(UserName.getId() + ";" + System.currentTimeMillis()+";"+"app", 0);
			String tokenStr = request.getHeader("token");
			// 将token存到redis中,有效期24小时 
			redisUtil.set(Globals.ANDROID_LOGIN_MARK + UserName.getId(), tokenStr, Globals.USER_INFO_EXPIRE_TIME);
			resultMap.put("token", tokenStr);
			// 覆盖redis用户信息
			UserDto userDto = new UserDto();
			BeanUtils.copyProperties(UserName, userDto);
			redisUtil.set(Globals.USER_INFO_MARK + UserName.getId(), userDto, Globals.USER_INFO_EXPIRE_TIME);
			resultMap.put("user", UserName);
			return ResponseCode.buildSuccessMap(resultMap);
			}else if(UserName!=null){
				return ResponseCode.buildCodeMap("20007", "手机号已存在", null);
			
			}else{
				if (user!=null) {
					user.setMobile(mobile);
					user.setUserName(mobile);
				}
				userService.update(user);
			}
		
		// 修改登录信息
		/*user.setLoginCount(user.getLoginCount()+1);
		user.setLastLoginDate(new Date());
		user.setLastLoginIp(CommUtil.getIpAddr(request));
		
		// 生成token,格式:用户id;时间戳  
		String token = JWT.sign(user.getId() + ";" + System.currentTimeMillis(), 0);
		// 将token存到redis中,有效期24小时 
		redisUtil.set(Globals.WECHAT_LOGIN_MARK + user.getId(), token, Globals.USER_INFO_EXPIRE_TIME);*/
		
	
	//	resultMap.put("token", token);
		// 置空用户敏感字段
		/*user.setPassword("");
		user.setPay_password("");*/
	
		resultMap.put("user", user);
		// 置空系统配置敏感字段
		/*SysConfigDto sysConfig = sysConfigFeignClient.getSysConfig();
		sysConfig.setWeixin_appId("");
		sysConfig.setWeixin_appSecret("");
		sysConfig.setUploadFilePath("");
		sysConfig.setUser_level("");
		resultMap.put("sysConfig", sysConfig);*/
		
		return ResponseCode.buildSuccessMap(resultMap);
	}
	/**
	 * 用户名密码登录
	 * @param json
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/login_user", method = RequestMethod.POST)
	public Map<String,Object> login_user(@RequestBody JSONObject json, HttpServletRequest request){
		String username = json.optString("username");
		if(StringUtils.isEmpty(username)){
			return ResponseCode.buildCodeMap("20001", "用户不能为空", null);
		}
		String password = json.optString("password");
		if(StringUtils.isEmpty(password)){
			return ResponseCode.buildCodeMap("20002", "验证码不能为空", null);
		}
		
		User user = userService.selectByUserName(username);
		if(user == null){
			return ResponseCode.buildCodeMap("20003", "用户不存在", null);
		}
		if(!StringUtils.equals(user.getPassword(), Md5Encrypt.md5(password).toLowerCase())){
			return ResponseCode.buildCodeMap("20006", "密码错误", null);
		}
		if(user.getSecurity() == 1){
			return ResponseCode.buildCodeMap("20008", "账户存在安全隐患禁止登录!", null);
		}
		String storestatus="";
		if (user.getStore_id()!=null) {
			StoreDto storeDto = storeFeignClient.selectByPrimaryKey(user.getStore_id());
			if (storeDto!=null) {
				storestatus=storeDto.getStore_status()+"";
			}
		}
		// 修改登录信息
		user.setLoginCount(user.getLoginCount()+1);
		user.setLastLoginDate(new Date());
		user.setLastLoginIp(CommUtil.getIpAddr(request));
		// 生成token,格式:用户id;时间戳  
		String token = JWT.sign(user.getId() + ";" + System.currentTimeMillis()+";"+"app", 0);
		// 将token存到redis中,有效期24小时 
		redisUtil.set(Globals.ANDROID_LOGIN_MARK + user.getId(), token, Globals.USER_INFO_EXPIRE_TIME);
		
		// 返回结果集
		Map<String, Object> resultMap = new HashMap<String, Object>();
		resultMap.put("token", token);
		// 置空用户敏感字段
		user.setPassword("");
		user.setPay_password("");
		resultMap.put("user", user);
		// 置空系统配置敏感字段
		SysConfigDto sysConfig = sysConfigFeignClient.getSysConfig();
		sysConfig.setWeixin_appId("");
		sysConfig.setWeixin_appSecret("");
		sysConfig.setUploadFilePath("");
		sysConfig.setUser_level("");
		resultMap.put("sysConfig", sysConfig);
		resultMap.put("storestatus", storestatus);
		
		return ResponseCode.buildSuccessMap(resultMap);
	}
	
	/**
	 * 忘记密码保存
	 * @param json
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/forget_password_save", method = RequestMethod.POST)
	public Map<String,Object> forget_password_save(@RequestBody JSONObject json, HttpServletRequest request){
		String sms_type = json.optString("sms_type");
		if(StringUtils.isEmpty(sms_type)){
			return ResponseCode.buildCodeMap("20001", "服务类型不能为空", null);
		}
		if(!StringUtils.equals("forget_password", sms_type)){
			return ResponseCode.buildCodeMap("20002", "服务类型错误", null);
		}
		
		String mobile = json.optString("mobile");
		if(StringUtils.isEmpty(mobile)){
			return ResponseCode.buildCodeMap("20003", "手机号码不能为空", null);
		}
		String code = json.optString("code");
		if(StringUtils.isEmpty(code)){
			return ResponseCode.buildCodeMap("20004", "验证码不能为空", null);
		}
		String password = json.optString("password");
		if(StringUtils.isEmpty(password)){
			return ResponseCode.buildCodeMap("20005", "密码不能为空", null);
		}
		
		// 查询短信配置
		SmsConfig smsConfig = smsConfigService.findSmsConfig();
		Integer use_minute = 5;
		if(smsConfig != null && smsConfig.getUse_minute() != null){
			use_minute = smsConfig.getUse_minute();
		}
		// 查询手机号有效期内的验证码
		SmsCode smsCode = smsCodeService.findByCode(mobile, sms_type, use_minute);
		if(smsCode == null){
			return ResponseCode.buildCodeMap("20006", "验证码已过期,请重新获取!", null);
		}
		if(!StringUtils.equals(code, smsCode.getCode())){
			return ResponseCode.buildCodeMap("20007", "验证码错误", null);
		}
		
		// 查询手机号码是否注册
		User user = userService.selectByUserName(mobile);
		if(user == null){
			return ResponseCode.buildCodeMap("20008", "用户不存在", null);
		}
		
		user.setPassword(Md5Encrypt.md5(password).toLowerCase());
		userService.updateById(user);
		
		return ResponseCode.buildSuccessMap(null);
	}
	
	
	//TODO  鱼易注册
	/**
	 * 手机号注册(登录)
	 * @param json
	 * @param request
	 * @return
	 */
	@RequestMapping(value = "/register_mobile_new", method = RequestMethod.POST)
	public Map<String,Object> register_mobile_new(@RequestBody JSONObject json, HttpServletRequest request){
		String sms_type = json.optString("sms_type");
		String true_name = json.optString("true_name");//真实姓名
		if(StringUtils.isEmpty(true_name)){
			return ResponseCode.buildCodeMap("20007", "真实姓名不能为空", null);
		}
		if(StringUtils.isEmpty(sms_type)){
			return ResponseCode.buildCodeMap("20001", "服务类型不能为空", null);
		}
		if(!StringUtils.equals("register_mobile", sms_type)){
			return ResponseCode.buildCodeMap("20002", "服务类型错误", null);
		}
		
		String mobile = json.optString("mobile");
		if(StringUtils.isEmpty(mobile)){
			return ResponseCode.buildCodeMap("20003", "手机号码不能为空", null);
		}
		String code = json.optString("code");
		if(StringUtils.isEmpty(code)){
			return ResponseCode.buildCodeMap("20004", "验证码不能为空", null);
		}
		String password = json.optString("password");
		if(StringUtils.isEmpty(password)){
			return ResponseCode.buildCodeMap("20004", "密码不能为空", null);
		}
		// 查询短信配置
		SmsConfig smsConfig = smsConfigService.findSmsConfig();
		Integer use_minute = 5;
		if(smsConfig != null && smsConfig.getUse_minute() != null){
			use_minute = smsConfig.getUse_minute();
		}
		// 查询手机号有效期内的验证码
		SmsCode smsCode = smsCodeService.findByCode(mobile, sms_type, use_minute);
		if(smsCode == null){
			return ResponseCode.buildCodeMap("20005", "验证码已过期,请重新获取!", null);
		}
		if(!StringUtils.equals(code, smsCode.getCode())){
			return ResponseCode.buildCodeMap("20006", "验证码错误", null);
		}
		
		// 查询手机号码是否注册
		User user = userService.selectByUserName(mobile);
		if(user != null){
			return ResponseCode.buildCodeMap("20007", "手机号已注册", null);
		}
		
		user = new User();
		user.setDeleteStatus(0);
		user.setSex(-1); // 性别 1为男、0为女、-1为保密
		user.setDeleteStatus(0);
		user.setAddTime(new Date());
		user.setMonth_income(0);
		user.setIntegral(0);
		user.setIs_agent(0);
		user.setTrueName(true_name);
		user.setLoginCount(0);
		user.setAvailableBalance(BigDecimal.ZERO);
		user.setFreezeBlance(BigDecimal.ZERO);
		user.setMobile(mobile);
		user.setUserName(mobile);
		user.setPassword(Md5Encrypt.md5(password).toLowerCase());
		user.setYears(0); // 用户年龄
		user.setIs_live(0);
		user.setUser_type(0); // 用户类别,默认为0个人用户,1为企业用户
		user.setStore_apply_step(0); // 店铺申请进行的步骤,默认为0
		user.setInvoiceType(0); // 发票类型
		user.setLive_code(userService.selectMaxLiveCode() + 1);
		user.setWhether_attention(1); //是否允许关注 0为不允许,1为允许
		userService.saveEntity(user);
		userService.saveDisUser(user, "-1");
		// 修改登录信息
		user.setLoginCount(user.getLoginCount()+1);
		user.setLastLoginDate(new Date());
		user.setLastLoginIp(CommUtil.getIpAddr(request));
		// 生成token,格式:用户id;时间戳  
		String token = JWT.sign(user.getId() + ";" + System.currentTimeMillis()+";"+"app", 0);
		// 将token存到redis中,有效期24小时 
		redisUtil.set(Globals.ANDROID_LOGIN_MARK + user.getId(), token, Globals.USER_INFO_EXPIRE_TIME);
		
		//传同步给鱼易    真实姓名, 手机号 , 密码, 
		//userService.yuyiSaveUser(true_name,mobile,password);
		
		// 返回结果集
		Map<String, Object> resultMap = new HashMap<String, Object>();
		resultMap.put("token", token);
		// 置空用户敏感字段
		user.setPassword("");
		user.setPay_password("");
		resultMap.put("user", user);
		// 置空系统配置敏感字段
		SysConfigDto sysConfig = sysConfigFeignClient.getSysConfig();
		sysConfig.setWeixin_appId("");
		sysConfig.setWeixin_appSecret("");
		sysConfig.setUploadFilePath("");
		sysConfig.setUser_level("");
		resultMap.put("sysConfig", sysConfig);
		
		return ResponseCode.buildSuccessMap(resultMap);
	}
	
}
举报

相关推荐

0 条评论