Commit 466add35 authored by liqin's avatar liqin 💬

Merge branch 'master' of http://111.203.232.171:8888/licc/shop-mall into master

 Conflicts:
	wisenergy-service/src/main/java/cn/wisenergy/service/app/UserService.java
	wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java
	wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UserController.java
	wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/loginController.java
parents 980d15e3 4272103d
......@@ -155,6 +155,12 @@
<artifactId>javacv</artifactId>
<version>0.8</version>
</dependency>
<!--druid数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.5</version>
</dependency>
</dependencies>
</dependencyManagement>
......
package cn.wisenergy.common.utils;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
......@@ -8,6 +9,7 @@ import javax.servlet.http.HttpServletRequest;
/**
* @author 86187
*/
@Component
public class HttpContextUtils {
public static HttpServletRequest getHttpServletRequest() {
......
......@@ -73,6 +73,16 @@ public class R<T> implements Serializable {
return new R<>(data, msg);
}
/**
* 请求成功,返回前端的信息
*
* @param msg 描述
* @return R
*/
public static <T> R<T> ok(String msg, int code) {
return new R<>(code, msg);
}
/**
* 请求成功,返回前端的信息
*
......
package cn.wisenergy.web.sms;
package cn.wisenergy.common.utils;
import cn.wisenergy.common.enums.ResultEnum;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......
package cn.wisenergy.web.sms;
package cn.wisenergy.common.utils;
import cn.wisenergy.common.enums.ResultEnum;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
* 返回信息包装类
* Created by m1991 on 2021/2/28 23:08
*/
@Component
public class Result<T> implements Serializable{
public String code;
......
package cn.wisenergy.web.sms;
package cn.wisenergy.common.utils;
import cn.wisenergy.common.enums.ResultEnum;
/**
* 用于返回Result的工具类
......
This diff is collapsed.
......@@ -10,6 +10,7 @@ public interface RecommendUserMapper extends BaseMapper<RecommendUser> {
RecommendUser getByUserId(String userId);
Integer zcByUserId(String userId);
//根据用户推荐人的userid,查询数据库用户直推表,看推荐人用户是否存在
Integer zcByUserId(String userid);
}
......@@ -5,9 +5,12 @@ import cn.wisenergy.model.app.TeamUserInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* 团队Mapper
* @author zw
*/
public interface TeamUserInfoMapper extends BaseMapper<TeamUserInfo> {
TeamUserInfo getByUserId(String userId);
TeamUserInfo getByUserId(String userid);
//根据userId查询用户是否存在
Integer czByUserId(String userId);
}
......@@ -55,6 +55,20 @@ public interface UsersMapper extends BaseMapper<User> {
*/
User getByUserId(@Param("userId") String userId);
/**
* 获取用户信息
* @param userId 用户id
* @return 用户信息
*/
Integer ByUserId(@Param("userId") String userId);
/**
* 获取用户信息
* @param
* @return 用户信息
*/
Integer beInvitedCode1(@Param("beInvitedCode") String beInvitedCode);
/**
* 获取用户信息
* @param beInvitedCode 用户被邀请码
......@@ -78,6 +92,9 @@ public interface UsersMapper extends BaseMapper<User> {
//根据手机号查询用户Integer
Integer queryUsersByPhone(@Param("userId")String userId);
//根据用户的推荐人邀请码比对推荐人的本人邀请码,查询推荐人的用户ID
Integer inviteCodeBeInvitedCode(@Param("beInvitedCode")Integer beInvitedCode);
/**
* 用户注册
* @param userId
......
......@@ -78,8 +78,9 @@
from
<include refid="table"/>
<where>
user_id=#{userId}
user_id=#{userid}
</where>
</select>
<!--用户信息插入用户直推表-->
</mapper>
\ No newline at end of file
......@@ -71,5 +71,16 @@
user_id=#{userId}
</where>
</select>
<!--根据userid查询用户是否存在-->
<select id="czByUserId" resultType="cn.wisenergy.model.app.TeamUserInfo">
select
id
from
<include refid="table"/>
<where>
user_id=#{userid}
</where>
</select>
</mapper>
\ No newline at end of file
......@@ -109,6 +109,15 @@
user_id=#{userId}
</where>
</select>
<select id="ByUserId" resultType="java.lang.Integer">
select
id
from
<include refid="table"/>
<where>
user_id=#{userId}
</where>
</select>
<!--查询全部-->
<select id="findAll" resultType="cn.wisenergy.model.app.User">
......@@ -162,7 +171,28 @@
user_id=#{userId}
</where>
</select>
<select id="getuserIdById" resultType="java.lang.Integer">
<!--根据用户的推荐人邀请码比对推荐人的本人邀请码,查询推荐人的用户ID-->
<select id="inviteCodeBeInvitedCode" resultType="java.lang.Integer">
select
user_id
from
<include refid="table"/>
<where>
invite_code=#{beInvitedCode}
</where>
</select>
<!--根据用户的推荐人邀请码比对推荐人的本人邀请码,查询推荐人的用户ID-->
<select id="BeInvitedCode1" resultType="java.lang.Integer">
select
id
from
<include refid="table"/>
<where>
invite_code=#{beInvitedCode}
</where>
</select>
<select id="getuserIdById" resultType="cn.wisenergy.model.app.User">
select
id
from
......
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.8" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:22.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.0.18" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.14" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.68" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel:2.2.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.17" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacv:0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:opencv:2.4.9-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:2.2.1-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:flycapture:1.7.17-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libdc1394:2.2.2-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libfreenect:0.4-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:videoinput:0.200-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:artoolkitplus:2.3.0-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:opencv:windows-x86_64:2.4.9-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:windows-x86_64:2.2.1-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:flycapture:windows-x86_64:1.7.17-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libdc1394:windows-x86_64:2.2.2-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libfreenect:windows-x86_64:0.4-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:videoinput:windows-x86_64:0.200-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:artoolkitplus:windows-x86_64:2.3.0-0.8" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -17,14 +17,16 @@ public interface UserService {
* @param userId 用户id
* @return 用户信息
*/
R<User> getById(String userId);
User getById(String userId);
R<Integer> getById1(String userId);
/**
* 获取用户信息
* @param userId 用户id
* @return 用户信息
*/
R<User> getByUserId(String userId);
User getByUserId(String userId);
//根据手机号查询用户
public User queryUsersByPhone(String id);
......@@ -34,7 +36,7 @@ public interface UserService {
/**
*用户注册
*/
Integer userByZx(String userId, String beInvitedCode);
R userByZx(String userId, String beInvitedCode);
// Integer selectbyint(String userId,String beInvitedCode);
//
......
......@@ -3,7 +3,10 @@ package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.common.utils.ShareCodeUtil;
import cn.wisenergy.mapper.RecommendUserMapper;
import cn.wisenergy.mapper.TeamUserInfoMapper;
import cn.wisenergy.mapper.UsersMapper;
import cn.wisenergy.model.app.RecommendUser;
import cn.wisenergy.model.app.TeamUserInfo;
import cn.wisenergy.model.app.User;
import cn.wisenergy.service.app.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -12,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -29,26 +33,37 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
@Autowired
private UsersMapper usersMapper;
//直推表
//直推表userId
@Autowired
private RecommendUserMapper recommendUserMapper;
//团队表
@Autowired
private TeamUserInfoMapper teamUserInfoMapper;
@Override
public R<User> getById(String userId) {
return R.ok(usersMapper.getByUserId(userId));
public User getById(String userId) {
return null;
}
@Override
public R<User> getByUserId(String userId) {
return R.ok(usersMapper.getByUserId(userId));
public R<Integer> getById1(String userId) {
return R.ok(usersMapper.ByUserId(userId));
}
@Override
public User getByUserId(String userId) {
return null;
}
@Override
public User queryUsersByPhone(String phone) {
Map<String, Object> param = new HashMap<String, Object>();
param.put("phone", phone);
List<User> usersList = usersMapper.getUsersListByMap(param);
if (!CollectionUtils.isEmpty(usersList)) {
Map<String,Object> param=new HashMap<String, Object>();
param.put("phone",phone);
List<User> usersList=usersMapper.getUsersListByMap(param);
if(!CollectionUtils.isEmpty(usersList)){
return usersList.get(0);
}
return null;
......@@ -60,33 +75,85 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
}
@Override
public Integer userByZx(String userId, String beInvitedCode) {
public R userByZx(String userId, String beInvitedCode) {
/**
* 判断用户等级是否为空,空的话填写0
* 判断用户推荐人的邀请码是否为空,空的话填写1
*/
if (null == beInvitedCode || "".equals(beInvitedCode)) {
if (null == beInvitedCode || "" == beInvitedCode) {
beInvitedCode = String.valueOf(1);
}
//插入用户手机号与推荐人邀请码
//用户的被邀请码,查询到推荐人用户,根据推荐人用户的邀请码查询/修改
User user=usersMapper.getByBeInvitedCode(beInvitedCode);
int ida = user.getId();
// 邀请人的被邀请码
String byqm= user.getBeInvitedCode();
// 通过被邀请码,比对本人邀请码查询本人id
int idb=usersMapper.beInvitedCode1(beInvitedCode);
//判断被邀请用户的创建时间是否比推荐人的用户时间晚
if(idb<ida){
return R.error(1,"邀请码无效,请重新填写!");
}
// 插入用户手机号与推荐人邀请码
usersMapper.insertbyint(userId, beInvitedCode);
//根据插入的用户手机号,查询用户唯一ID
Integer yqm = usersMapper.ByUserId(userId);
//用户唯一ID调用生成6位邀请码
String inviteCode = ShareCodeUtil.idToCode(usersMapper.getByUserId(userId).getId());
String inviteCode = ShareCodeUtil.idToCode(yqm);
//根据用户手机号,更新用户信息
User user = new User();
user = new User();
user.setInviteCode(inviteCode);
user.setUserLevel(0);
usersMapper.updateById(user);
//插入直推用户表
//插入直推用户表
RecommendUser recommendUser = new RecommendUser();
recommendUser.setUserId(userId);
recommendUserMapper.insert(recommendUser);
//插入用户团队表
TeamUserInfo teamUserInfo = new TeamUserInfo();
teamUserInfo.setUserId(userId);
teamUserInfoMapper.insert(teamUserInfo);
//根据用户的推荐人邀请码比对推荐人的本人邀请码,查询推荐人的用户ID=userid
String userid = String.valueOf(usersMapper.inviteCodeBeInvitedCode(Integer.valueOf(beInvitedCode)));
//根据用户推荐人的userid,查询数据库,看推荐人用户是否存在
Integer a = recommendUserMapper.zcByUserId(userid);
//根据邀请码查询推荐人的普通用户字段+1
Integer a = recommendUserMapper.zcByUserId(userId);
//判断从数据库中是否存在该用户 如果存在,普通用户+1
if (null != a && 0 != a) {
return a;
Integer normalUserNum = recommendUser.getNormalUserNum();
//更新直推表用户中的普通用户字段+1
recommendUser.setNormalUserNum(normalUserNum + 1);
//更新直推表用户数据
recommendUserMapper.updateById(recommendUser);
} else {
return R.error(1, "验证码无效");
}
//根据邀请码递归所有团队成员普通用户+1
return null;
}
//递归向上修改团队用户信息表
teamgg(beInvitedCode);
return R.ok("直推表普通用户数量+1成功!",0);
}
//私有构造方法-传入被邀请码
private R teamgg(String beInvitedCode) {
//用户的被邀请码,查询到推荐人用户,根据推荐人用户的邀请码查询/修改
User user=usersMapper.getByBeInvitedCode(beInvitedCode);
//根据用户的推荐人邀请码比对推荐人的本人邀请码,查询推荐人的用户ID=userid
String userid = String.valueOf(usersMapper.inviteCodeBeInvitedCode(Integer.valueOf(beInvitedCode)));
//根据用户推荐人的userid,查询数据库,看推荐人用户是否存在
Integer c = teamUserInfoMapper.czByUserId(userid);
if (null != c && 0 != c) {
TeamUserInfo teamUserInfo = new TeamUserInfo();
int normalUserNum1 = teamUserInfo.getNormalUserNum();
//更新团队表用户中的普通用户字段+1
teamUserInfo.setNormalUserNum(normalUserNum1 + 1);
//更新团队表用户数据
teamUserInfoMapper.updateById(teamUserInfo);
} else {
return R.error(0, "验证码无效");
}
beInvitedCode=user.getBeInvitedCode();
//递归向上修改团队用户信息表
teamgg(beInvitedCode);
return R.ok("团队表普通用户数量+1成功!",0);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
<facet type="web" name="Web">
<configuration>
<webroots />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="wisenergy-mapper" />
<orderEntry type="module" module-name="wisenergy-model" />
<orderEntry type="module" module-name="wisenergy-common" />
<orderEntry type="library" name="Maven: com.hikvision.ga:artemis-http-client:1.1.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:20.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.3" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5" level="project" />
<orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.11.33.ALL" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.6.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
<orderEntry type="library" name="Maven: com.youzan.cloud:open-sdk-core:1.0.7-RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.youzan.cloud:open-sdk-gen:1.0.7.78771202102051104-RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.youzan.cloud:open-sdk-api:1.0.7-RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.youzan.cloud:open-sdk-common:1.0.7-RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.8" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:22.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.0.18" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.14" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.68" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel:2.2.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.17" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacv:0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco:javacpp:0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:opencv:2.4.9-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:2.2.1-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:flycapture:1.7.17-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libdc1394:2.2.2-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libfreenect:0.4-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:videoinput:0.200-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:artoolkitplus:2.3.0-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:opencv:windows-x86_64:2.4.9-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:windows-x86_64:2.2.1-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:flycapture:windows-x86_64:1.7.17-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libdc1394:windows-x86_64:2.2.2-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libfreenect:windows-x86_64:0.4-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:videoinput:windows-x86_64:0.200-0.8" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:artoolkitplus:windows-x86_64:2.3.0-0.8" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.9" level="project" />
</component>
</module>
\ No newline at end of file
package cn.wisenergy.web.admin.controller.app;
import cn.wisenergy.common.utils.Constants;
import cn.wisenergy.common.utils.RedisUtils;
import cn.wisenergy.common.utils.SmsUtils;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.common.enums.ResultEnum;
import cn.wisenergy.common.utils.*;
import cn.wisenergy.web.sms.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "发送手机验证码 codeType 0注册/登录验证 1修改密码 2订单通知信息")
@Slf4j
@RequestMapping("/api/sms")
@RestController
public class SmsController {
......@@ -33,27 +35,45 @@ public class SmsController {
@ApiOperation(value = "发送验证码", notes = "发送验证码", httpMethod = "POST", produces = "application/json; charset=UTF-8")
@ApiImplicitParams({
@ApiImplicitParam(name = "phone", value = "用户手机号", required = true, dataType = "String"),
@ApiImplicitParam(name = "codeType", value = "验证码", dataType = "Integer")})
@ApiImplicitParam(name = "codeType", value = "验证码类型用途 0注册/登录验证 1修改密码 2订单通知信息", dataType = "Integer")})
@RequestMapping("/verifyCode")
public Result verifyCode(String phone,Integer codeType) throws Exception {
public Result verifyCode(String phone, Integer codeType) throws Exception {
// //判断phone和codeType是否符合输入类型
// if(!phone.matches(Constants.RegConstant.PHONE_REGSTR)){
// throw new BaseException(ResultEnum.PHONE_ERROR);
// }
// if(codeType!=Constants.Sms.CodeType.LOGIN_OR_REGISTER && codeType!=Constants.Sms.CodeType.PASS_UPDATE && codeType!=Constants.Sms.CodeType.ORDER_NOTICE){
// throw new BaseException(ResultEnum.CODETYPE_ERROR);
// }
// String key= StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX,Constants.RedisKey.SMS_PRIFIX,phone,codeType+"");
// //判断是否超过60S
// String oldCode=redisUtils.getValue(key);
// if(!StringUtils.isBlank(oldCode)){
// throw new BaseException(ResultEnum.CODESEND_ERROR);
// }
// //生成随机数
// String code= MathUtils.random();
// //保存至Redis
// redisUtils.set(key,code,Constants.Duration.MINUTE_INT);
//
//
// boolean flag=smsUtils.sendMessage(phone,Constants.Sms.TemplateCode.LOGIN_DL_REGISTER,code);
// return flag? ResultUtils.returnSuccess():ResultUtils.returnFail();
//判断phone和codeType是否符合输入类型
if(!phone.matches(Constants.RegConstant.PHONE_REGSTR)){
throw new BaseException(ResultEnum.PHONE_ERROR);
}
if(!codeType.equals(Constants.Sms.CodeType.LOGIN_OR_REGISTER) && !codeType.equals(Constants.Sms.CodeType.PASS_UPDATE) && !codeType.equals(Constants.Sms.CodeType.ORDER_NOTICE)){
if(codeType!=Constants.Sms.CodeType.LOGIN_OR_REGISTER && codeType!=Constants.Sms.CodeType.PASS_UPDATE && codeType!=Constants.Sms.CodeType.ORDER_NOTICE){
throw new BaseException(ResultEnum.CODETYPE_ERROR);
}
String key= StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX,Constants.RedisKey.SMS_PRIFIX,phone,codeType+"");
//判断是否超过60S
String Codekey=redisUtils.getValue(key);
if(!StringUtils.isBlank(Codekey)){
throw new BaseException(ResultEnum.CODESEND_ERROR);
}
//生成随机数
String code= MathUtils.random();
//保存至Redis
redisUtils.set(Codekey,code,Constants.Duration.MINUTE_INT);
boolean flag=smsUtils.sendMessage(phone,Constants.Sms.TemplateCode.LOGIN_DL_REGISTER,code);
redisUtils.set(key,code,Constants.Duration.MINUTE_INT);
boolean flag=smsUtils.sendMessage(phone,Constants.Sms.TemplateCode.LOGIN_SF_REGISTER,code);
return flag? ResultUtils.returnSuccess():ResultUtils.returnFail();
}
}
\ No newline at end of file
package cn.wisenergy.web.admin.controller.app;
import cn.wisenergy.common.utils.Result;
import cn.wisenergy.common.utils.ResultUtils;
import cn.wisenergy.common.utils.ShareCodeUtil;
import cn.wisenergy.common.utils.SmsUtils;
import cn.wisenergy.web.sms.Result;
import cn.wisenergy.web.sms.ResultUtils;
import cn.wisenergy.web.sms.ShareCodeUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......
......@@ -3,21 +3,15 @@ package cn.wisenergy.web.admin.controller.app;
import cn.wisenergy.common.constant.RedisConsts;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.common.utils.RedisUtils;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.model.app.User;
import cn.wisenergy.model.app.UsersDto;
import cn.wisenergy.service.app.UserService;
import cn.wisenergy.web.common.BaseController;
import cn.wisenergy.web.config.JwtConfig;
import cn.wisenergy.web.shiro.JwtUtil;
import cn.wisenergy.web.sms.*;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -53,7 +47,7 @@ public class UserController extends BaseController {
@ApiOperation(value = "获取用户信息", notes = "获取用户信息", httpMethod = "GET")
@ApiImplicitParam(name = "userId", value = "用户id", dataType = "String")
@GetMapping("/getByUserId")
public R<User> getByUserId(String userId) {
public User getByUserId(String userId){
return userService.getById(userId);
}
......@@ -68,10 +62,12 @@ public class UserController extends BaseController {
if (null == id) {
return R.error("入参为空!");
}
//用户信息
R<User> user = userService.getByUserId(id);
User user = userService.getByUserId(id);
// 创建token
String token = jwtUtil.generateToken(user.getData());
String token = jwtUtil.generateToken(user);
// 保存Redis
redisTemplate.opsForValue().set(RedisConsts.JWT_ACCESS_TOKEN + token, token);
return R.ok(token);
......
package cn.wisenergy.web.admin.controller.app;
import cn.wisenergy.common.utils.Constants;
import cn.wisenergy.common.enums.ResultEnum;
import cn.wisenergy.common.utils.*;
import cn.wisenergy.web.sms.*;
import cn.wisenergy.common.utils.RedisUtils;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.model.app.User;
import cn.wisenergy.model.app.UsersDto;
import cn.wisenergy.service.app.UserService;
......@@ -20,15 +19,14 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
*
* Created by m1991 on 2021/3/2 13:35
*/
@Api(tags = "登录/注册")
@Slf4j
@RequestMapping("/api/user/login/sms")
@RequestMapping("/api/user")
@RestController
public class loginController {
@Autowired
......@@ -48,12 +46,12 @@ public class loginController {
* @throws Exception
*/
@ApiOperation(value = "登录", notes = "登录", httpMethod = "POST", produces = "application/json; charset=UTF-8")
@ApiOperation(value = "登录", notes = "登录", httpMethod = "POST", produces = "application/json;charset=UTF-8")
@ApiImplicitParams({
@ApiImplicitParam(name = "sms", value = "验证码", dataType = "String"),
@ApiImplicitParam(name = "userId", value = "用户手机号", required = true, dataType = "String")})
@RequestMapping("/login/sms")
public Result loginBySms(String userId,String sms)throws Exception{
@RequestMapping("/login")
public Result loginBySms(String userId, String sms)throws Exception{
User users=null;
String key= StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX,Constants.RedisKey.SMS_PRIFIX,userId,Constants.Sms.CodeType.LOGIN_OR_REGISTER+"");
String redisCode=redisUtils.getValue(key);
......@@ -85,7 +83,7 @@ public class loginController {
String tokenKey=StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX,Constants.RedisKey.TOKEN_PRIFIX,token);
UsersDto usersDto=new UsersDto();
BeanUtils.copyProperties(users,usersDto);
redisUtils.set(tokenKey, JSONObject.toJSONString(usersDto), Constants.Duration.HALF_HOUR_INT);
redisUtils.set(tokenKey, JSONObject.toJSONString(usersDto),Constants.Duration.HALF_HOUR_INT);
return token;
}
......
......@@ -60,6 +60,7 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/swagger-ui.html", "anon"); // swagger接口-匿名访问
filterChainDefinitionMap.put("/swagger/**", "anon");
filterChainDefinitionMap.put("/user/**", "anon");
filterChainDefinitionMap.put("/api/user/**", "anon");
filterChainDefinitionMap.put("/webjars/springfox-swagger-ui/**", "anon");
filterChainDefinitionMap.put("/swagger-resources/**", "anon");
filterChainDefinitionMap.put("/v2/api-docs", "anon");
......
package cn.wisenergy.web.sms;
import cn.wisenergy.common.enums.ResultEnum;
/**
*
* 通用异常的处理
......@@ -27,6 +29,8 @@ public class BaseException extends Exception {
// 错误信息
private String errorMessage;
public static long getSerialVersionUID() {
return serialVersionUID;
}
......
package cn.wisenergy.web.sms;
import java.util.zip.CRC32;
/**
*
* @author eaves.zhu
*/
public class DeviceIdUtil {
/**
* @author eaves.zhu
* @param deviceId
* @return int
* CRC32
*/
public static long getCRC32(String deviceId){
CRC32 crc32 = new CRC32();
crc32.update(deviceId.getBytes());
long tmp = crc32.getValue();
return tmp;
}
}
\ No newline at end of file
package cn.wisenergy.web.sms;
import java.math.BigDecimal;
/**
* @Description 数字相关工具类
* @Date 2019-08-22 17:08
* @Author est team
* Version 1.0
**/
public class MathUtils {
/**
* 返回一个4位随机数
* @return
*/
public static String random(){
int random = (int) ((Math.random() * 9 + 1) * 1000);
return random + "";
}
/**
* 格式化BigDecimal,返回保留相应的小数
* @param decimal
* @param num
* @return
*/
public static BigDecimal formatDecimal(BigDecimal decimal, int num){
BigDecimal result = decimal.setScale(num,BigDecimal.ROUND_HALF_UP);
return result;
}
/**
* 格式化BigDecimal,默认保留两位小数
* @param decimal
* @return
*/
public static BigDecimal formatDecimal(BigDecimal decimal){
BigDecimal result = formatDecimal(decimal, Constants.Common.DECIMAL_DIGITS);
return result;
}
}
package cn.wisenergy.web.sms;
/**
* @author zen.wang zenyes@gmail.com
*/
public class ShareCodeUtil {
/**
* 自定义进制(0,1没有加入,容易与o,l混淆)
*/
private static final char[] r = new char[]{'F', 'L', 'G', 'W', '5', 'X', 'C', '3', '9', 'Z', 'M', '6', '7', 'Y', 'R', 'T', '2', 'H', 'S', '8', 'D', 'V', 'E', 'J', '4', 'K', 'Q', 'P', 'U', 'A', 'N', 'B'};
/**
* 进制长度
*/
private static final int binLen = r.length;
private static final long startNumber = 100048576L;
// private static final long startNumber = 0L;
/**
* @param id ID
* @return 随机码
*/
public static String idToCode(long id, long costomStartNumber) {
if (costomStartNumber < 0) {
costomStartNumber = startNumber;
}
id += costomStartNumber;
char[] buf = new char[32];
int charPos = 32;
while ((id / binLen) > 0) {
int ind = (int) (id % binLen);
buf[--charPos] = r[ind];
id /= binLen;
}
buf[--charPos] = r[(int) (id % binLen)];
return new String(buf, charPos, (32 - charPos));
}
public static String idToCode(long idL) {
return idToCode(idL, -1L);
}
public static String idToCode(String id) {
long idL = Long.parseLong(id);
return idToCode(idL, -1L);
}
public static String idToCode(String id, long costomStartNumber) {
long idL = Long.parseLong(id);
return idToCode(idL, costomStartNumber);
}
public static long codeToId(String code) {
code = code.toUpperCase();
char[] chs = code.toCharArray();
long res = 0L;
for (int i = 0; i < chs.length; i++) {
int ind = 0;
for (int j = 0; j < binLen; j++) {
if (chs[i] == r[j]) {
ind = j;
break;
}
}
if (i > 0) {
res = res * binLen + ind;
} else {
res = ind;
}
}
res -= startNumber;
return res;
}
}
\ No newline at end of file
package cn.wisenergy.web.sms.interceptor;
import cn.wisenergy.common.enums.ResultEnum;
import cn.wisenergy.common.utils.ResponseOutput;
import cn.wisenergy.common.utils.Result;
import cn.wisenergy.common.utils.ResultUtils;
import cn.wisenergy.web.sms.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......
package cn.wisenergy.web.sms.interceptor;
import cn.wisenergy.common.enums.ResultEnum;
import cn.wisenergy.common.utils.RedisUtils;
import cn.wisenergy.common.utils.ResponseOutput;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.web.sms.*;
import org.slf4j.Logger;
......@@ -28,7 +30,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
/**
* 直接放行的接口
*/
public static String[] EXCLUDE_URI = new String[]{"/pay/alipay/notify", "/pay/alipay/return", "/user/wechat/callback"};
public static String[] EXCLUDE_URI = new String[]{"/api/user/login", "/pay/alipay/notify", "/pay/alipay/return", "/user/wechat/callback"};
/**
* 需要登录才可以访问的接口
......
package cn.wisenergy.web.sms.interceptor;
import cn.wisenergy.web.sms.ResponseOutput;
import cn.wisenergy.web.sms.ResultEnum;
import cn.wisenergy.common.enums.ResultEnum;
import cn.wisenergy.common.utils.ResponseOutput;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......
This diff is collapsed.
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