Commit 65c751cd authored by m1991's avatar m1991

Merge remote-tracking branch 'origin/master'

parents 59c5aca4 22703e21
...@@ -180,7 +180,16 @@ public interface UsersMapper extends BaseMapper<User> { ...@@ -180,7 +180,16 @@ public interface UsersMapper extends BaseMapper<User> {
/** /**
* 获取所有的空投用户 * 获取所有的空投用户
* 且注册时间为一月之前
* @return * @return
*/ */
List<User> getAerialDeliveryUser(); List<User> getAerialDeliveryUserBeforOneMonth(@Param("before") String before,
@Param("now") String now );
/**
* 随机获取一条小于当前id的用户 即: 比当前用户早注册的用户
* @param id
* @return
*/
User randOneGetUserByUserId(Integer id);
} }
...@@ -368,13 +368,23 @@ ...@@ -368,13 +368,23 @@
invite_code = #{outerUserId} invite_code = #{outerUserId}
</select> </select>
<select id="getAerialDeliveryUser" resultType="cn.wisenergy.model.app.User"> <select id="getAerialDeliveryUserBeforOneMonth" resultType="cn.wisenergy.model.app.User">
select select
<include refid="cols_all"/> <include refid="cols_all"/>
from from
<include refid="table"/> <include refid="table"/>
where where
be_invited_code = '1'; be_invited_code = '1'
and DATE_FORMAT(create_time,'%Y-%m-%d')
BETWEEN #{before} AND #{now}
</select>
<select id="randOneGetUserByUserId" resultType="cn.wisenergy.model.app.User" >
SELECT
<include refid="cols_all"/>
FROM <include refid="table"/>
WHERE id &lt; #{id}
ORDER BY RAND() LIMIT 1
</select> </select>
</mapper> </mapper>
...@@ -16,8 +16,12 @@ public class UserLoginVo { ...@@ -16,8 +16,12 @@ public class UserLoginVo {
/** /**
* 用户手机号码 * 用户手机号码
*/ */
@ApiModelProperty(value = "",name = "") @ApiModelProperty(value = "用户手机号码", name = "userId")
private String userId; private String userId;
/**
* 短信验证码
*/
@ApiModelProperty(value = "短信验证码", name = "sms")
private String sms; private String sms;
} }
package cn.wisenergy.service.app; package cn.wisenergy.service.app;
import cn.wisenergy.common.utils.R; import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.vo.UserLoginVo;
import cn.wisenergy.model.vo.UserRegisterVo; import cn.wisenergy.model.vo.UserRegisterVo;
/** /**
...@@ -14,6 +15,4 @@ public interface LoginService { ...@@ -14,6 +15,4 @@ public interface LoginService {
* @return true or false * @return true or false
*/ */
R<Boolean> userRegister(UserRegisterVo userRegisterVo); R<Boolean> userRegister(UserRegisterVo userRegisterVo);
R<String> login();
} }
package cn.wisenergy.service.app; package cn.wisenergy.service.app;
public interface UserLevelService { public interface UserLevelService {
/**
* 用户升级
* 根据用户的userid进行判断看当前用户是否需要进行升级
* @param userId 用户id
*/
void userLevelUpgrade(String userId); void userLevelUpgrade(String userId);
/**
* 用户升级定时任务
*/
void userLevelUp(); void userLevelUp();
} }
...@@ -96,11 +96,4 @@ public interface UserService { ...@@ -96,11 +96,4 @@ public interface UserService {
*/ */
R<Boolean> fillInInviteCode(String userId, String inviteCode); R<Boolean> fillInInviteCode(String userId, String inviteCode);
/**
* 空投池中用户随机分配任意邀请人
* 定时任务(日任务)
* 随机邀请人要求 1:注册时间早于当前用户
* 2;推荐人邀请码不能为1
*/
public void AerialDeliveryUserRand();
} }
package cn.wisenergy.service.app.impl; package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.constant.RedisConsts;
import cn.wisenergy.common.utils.*; import cn.wisenergy.common.utils.*;
import cn.wisenergy.mapper.*; import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.*; import cn.wisenergy.model.app.*;
import cn.wisenergy.model.vo.UserLoginVo;
import cn.wisenergy.model.vo.UserRegisterVo; import cn.wisenergy.model.vo.UserRegisterVo;
import cn.wisenergy.service.Manager.LoginManager; import cn.wisenergy.service.Manager.LoginManager;
import cn.wisenergy.service.app.LoginService; import cn.wisenergy.service.app.LoginService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -48,7 +51,7 @@ public class LoginServiceImpl implements LoginService { ...@@ -48,7 +51,7 @@ public class LoginServiceImpl implements LoginService {
} }
//1、检验验证码是否正确 //1、检验验证码是否正确
String key = ""; String key = StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX, Constants.RedisKey.SMS_PRIFIX, userVo.getUserId(), 0 + "");
String redisCode = redisUtils.getValue(key); String redisCode = redisUtils.getValue(key);
if (StringUtils.isBlank(redisCode) || !userVo.getSms().equals(redisCode)) { if (StringUtils.isBlank(redisCode) || !userVo.getSms().equals(redisCode)) {
return R.error("验证码错误!"); return R.error("验证码错误!");
...@@ -56,7 +59,7 @@ public class LoginServiceImpl implements LoginService { ...@@ -56,7 +59,7 @@ public class LoginServiceImpl implements LoginService {
//2、检验手机号是否已经被注册 //2、检验手机号是否已经被注册
boolean bool = checkPhone(userVo.getUserId()); boolean bool = checkPhone(userVo.getUserId());
if (!bool) { if (bool) {
return R.error("该用户已存在,请直接登录!"); return R.error("该用户已存在,请直接登录!");
} }
...@@ -94,14 +97,10 @@ public class LoginServiceImpl implements LoginService { ...@@ -94,14 +97,10 @@ public class LoginServiceImpl implements LoginService {
return R.ok(1, false); return R.ok(1, false);
} }
} }
redisUtils.delete(key);
return R.ok(0, true); return R.ok(0, true);
} }
@Override
public R<String> login() {
return null;
}
/** /**
* 检查用户手机号是否已注册 * 检查用户手机号是否已注册
* *
...@@ -111,7 +110,7 @@ public class LoginServiceImpl implements LoginService { ...@@ -111,7 +110,7 @@ public class LoginServiceImpl implements LoginService {
private Boolean checkPhone(String userId) { private Boolean checkPhone(String userId) {
//根据userId,获取用户信息 //根据userId,获取用户信息
User user = usersMapper.getByUserId(userId); User user = usersMapper.getByUserId(userId);
return null == user; return null != user;
} }
/** /**
......
...@@ -49,8 +49,6 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper,User> implemen ...@@ -49,8 +49,6 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper,User> implemen
@Autowired @Autowired
private OrderMapper orderMapper; private OrderMapper orderMapper;
// public void
//获取订单 //获取订单
@XxlJob(value = "userLevelUpjobhandler") @XxlJob(value = "userLevelUpjobhandler")
@Override @Override
...@@ -564,13 +562,13 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper,User> implemen ...@@ -564,13 +562,13 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper,User> implemen
/** /**
* 培育奖给到上级用户 * 培育奖给到上级用户
* *
* @param userid 当前用户id * @param userId 当前用户id
* @param inviteUserId 上级用户id * @param inviteUserId 上级用户id
* @param level 当前用户升级后的等级 * @param level 当前用户升级后的等级
*/ */
public void cultivatingPrizeToInvitedUser(String userid, String inviteUserId, int level) { public void cultivatingPrizeToInvitedUser(String userId, String inviteUserId, int level) {
//当前用户的培育奖记录 //当前用户的培育奖记录
CultivatingPrizeInfo cultivatingPrizeInfo = cultivatingPrizeInfoMapper.getOneByUserId(userid); CultivatingPrizeInfo cultivatingPrizeInfo = cultivatingPrizeInfoMapper.getOneByUserId(userId);
if (1 == level) { if (1 == level) {
int seedling = cultivatingPrizeInfo.getSeedling(); int seedling = cultivatingPrizeInfo.getSeedling();
//用户等级对应的培育奖金额 //用户等级对应的培育奖金额
......
...@@ -7,10 +7,12 @@ import cn.wisenergy.model.app.UsersDto; ...@@ -7,10 +7,12 @@ import cn.wisenergy.model.app.UsersDto;
import cn.wisenergy.model.vo.AerialDeliveryVo; import cn.wisenergy.model.vo.AerialDeliveryVo;
import cn.wisenergy.model.vo.UserPoolVo; import cn.wisenergy.model.vo.UserPoolVo;
import cn.wisenergy.service.Manager.RegistUserMoudleInitManager; import cn.wisenergy.service.Manager.RegistUserMoudleInitManager;
import cn.wisenergy.service.app.UserLevelService;
import cn.wisenergy.service.app.UserService; import cn.wisenergy.service.app.UserService;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.weaver.ast.Var; import org.aspectj.weaver.ast.Var;
...@@ -92,11 +94,8 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U ...@@ -92,11 +94,8 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
@Override @Override
public User queryUsersByPhone(String userId) { public User queryUsersByPhone(String userId) {
Map<String, Object> map = new HashMap<String, Object>();
//查询数据库,看看是否存在该用户 //查询数据库,看看是否存在该用户
User ByuserId = usersMapper.getByUserId(userId); return usersMapper.getByUserId(userId);
return ByuserId;
} }
@Override @Override
...@@ -323,6 +322,7 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U ...@@ -323,6 +322,7 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
/** /**
* 用户登出 * 用户登出
*
* @param token * @param token
* @return * @return
*/ */
...@@ -331,28 +331,9 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U ...@@ -331,28 +331,9 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
int succ = 0; int succ = 0;
String key = RedisKeyUtils.formatKeyWithPrefix(Constants.Redis.PREFIX_TOKEN, token); String key = RedisKeyUtils.formatKeyWithPrefix(Constants.Redis.PREFIX_TOKEN, token);
redisUtils.delete(key); redisUtils.delete(key);
if(redisUtils.getValue(key) == null){ if (redisUtils.getValue(key) == null) {
succ = 1; succ = 1;
} }
return succ; return succ;
} }
/**
* 空投池中用户随机分配任意邀请人
* 定时任务(日任务)
* 随机分配条件( 1:当前用户的推荐人邀请码是 “1”
* 2: 且当前用户的注册时间是一个月前)
* 随机邀请人要求 1:注册时间早于当前用户
* 2;推荐人邀请码不能为1
*/
// @XxlJob()
@Override
public void AerialDeliveryUserRand(){
//查询空头池中的所有用户(即推荐人邀请码为 “1” 的用户)
List<User> aerialDeliveryUserList = usersMapper.getAerialDeliveryUser();
for (User user : aerialDeliveryUserList) {
}
}
} }
...@@ -2,13 +2,18 @@ package cn.wisenergy.web.admin.controller.app; ...@@ -2,13 +2,18 @@ package cn.wisenergy.web.admin.controller.app;
import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig; import cn.hutool.extra.qrcode.QrConfig;
import cn.wisenergy.common.constant.RedisConsts;
import cn.wisenergy.common.enums.ResultEnum; import cn.wisenergy.common.enums.ResultEnum;
import cn.wisenergy.common.utils.*; import cn.wisenergy.common.utils.*;
import cn.wisenergy.mapper.UsersMapper;
import cn.wisenergy.model.app.User; import cn.wisenergy.model.app.User;
import cn.wisenergy.model.app.UsersDto; import cn.wisenergy.model.app.UsersDto;
import cn.wisenergy.model.vo.UserLoginVo;
import cn.wisenergy.model.vo.UserRegisterVo; import cn.wisenergy.model.vo.UserRegisterVo;
import cn.wisenergy.service.app.LoginService; import cn.wisenergy.service.app.LoginService;
import cn.wisenergy.service.app.UserService; import cn.wisenergy.service.app.UserService;
import cn.wisenergy.web.config.JwtConfig;
import cn.wisenergy.web.shiro.JwtUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
...@@ -19,6 +24,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -19,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
...@@ -56,6 +62,15 @@ public class LoginController { ...@@ -56,6 +62,15 @@ public class LoginController {
@Autowired @Autowired
private LoginService loginService; private LoginService loginService;
@Autowired
private UsersMapper usersMapper;
@Autowired
private JwtUtil jwtUtil;
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/** /**
* 手机登录接口 * 手机登录接口
* *
...@@ -235,4 +250,42 @@ public class LoginController { ...@@ -235,4 +250,42 @@ public class LoginController {
return loginService.userRegister(userVo); return loginService.userRegister(userVo);
} }
@ApiOperation(value = "用户登录-返回token", notes = "用户登录-返回token", httpMethod = "POST")
@ApiImplicitParam(name = "userVo", value = "用户登录信息", dataType = "UserLoginVo")
@PostMapping("/userLogin")
public R<String> userLogin(@RequestBody UserLoginVo userVo) {
log.info("shop-mall[]LoginController[]userLogin[]input.param.userVo:" + userVo);
if (null == userVo || StringUtils.isBlank(userVo.getUserId()) || StringUtils.isBlank(userVo.getSms())) {
return R.error("入参不能为空!");
}
//判断phone是否符合输入类型
if (!userVo.getUserId().matches(Constants.RegConstant.PHONE_REGSTR)) {
return R.error("手机号码格式不正确!");
}
//1、检验验证码是否正确
String key = StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX, Constants.RedisKey.SMS_PRIFIX,
userVo.getUserId(), Constants.Sms.CodeType.LOGIN_OR_REGISTER + "");
String redisCode = redisUtils.getValue(key);
if (StringUtils.isBlank(redisCode) || !userVo.getSms().equals(redisCode)) {
return R.error("验证码错误!");
}
//2、检验用户手机号是否存在
User user = usersMapper.getByUserId(userVo.getUserId());
if (null == user || StringUtils.isBlank(user.getUserId())) {
return R.error("账户不存在,请注册!");
}
//3、获取token
// 创建token
String token = jwtUtil.generateToken(user);
// 保存Redis
redisTemplate.opsForValue().set(RedisConsts.JWT_ACCESS_TOKEN + token, token);
return R.ok(token);
}
} }
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 to comment