localizer
parent
8000a4bd3e
commit
44e0c71ce5
|
|
@ -23,7 +23,11 @@
|
|||
<artifactId>njzscloud-common-core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.njzscloud</groupId>
|
||||
<artifactId>njzscloud-common-wechat</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- <dependency>
|
||||
<groupId>com.njzscloud</groupId>
|
||||
<artifactId>njzscloud-common-redis</artifactId>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ import com.njzscloud.common.security.module.code.CodeAuthenticationProvider;
|
|||
import com.njzscloud.common.security.module.code.CodeLoginPreparer;
|
||||
import com.njzscloud.common.security.module.password.PasswordAuthenticationProvider;
|
||||
import com.njzscloud.common.security.module.password.PasswordLoginPreparer;
|
||||
import com.njzscloud.common.security.module.wechat.mini.WechatMiniAuthenticationProvider;
|
||||
import com.njzscloud.common.security.module.wechat.mini.WechatMiniLoginPreparer;
|
||||
import com.njzscloud.common.security.permission.DefaultPermissionManager;
|
||||
import com.njzscloud.common.security.permission.PermissionManager;
|
||||
import com.njzscloud.common.security.permission.PermissionSecurityMetaDataSource;
|
||||
|
|
@ -58,32 +60,44 @@ public class WebSecurityAutoConfiguration {
|
|||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean({IUserService.class, IRoleService.class, IResourceService.class})
|
||||
@ConditionalOnMissingBean({IUserService.class, IRoleService.class})
|
||||
public DefaultAuthenticationProvider defaultAuthenticationProvider() {
|
||||
return new DefaultAuthenticationProvider();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean({IUserService.class, IRoleService.class, IResourceService.class})
|
||||
public PasswordAuthenticationProvider passwordAuthenticationProvider(IUserService iUserService, IRoleService iRoleService, IResourceService iResourceService) {
|
||||
return new PasswordAuthenticationProvider(iUserService, iRoleService, iResourceService);
|
||||
@ConditionalOnBean({IUserService.class, IRoleService.class})
|
||||
public PasswordAuthenticationProvider passwordAuthenticationProvider(IUserService iUserService, IRoleService iRoleService) {
|
||||
return new PasswordAuthenticationProvider(iUserService, iRoleService);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean({IUserService.class, IRoleService.class, IResourceService.class})
|
||||
@ConditionalOnBean({IUserService.class, IRoleService.class})
|
||||
public PasswordLoginPreparer passwordLoginPreparer() {
|
||||
return new PasswordLoginPreparer();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean({IUserService.class, IRoleService.class})
|
||||
public WechatMiniAuthenticationProvider wechatMiniAuthenticationProvider(IUserService iUserService, IRoleService iRoleService) {
|
||||
return new WechatMiniAuthenticationProvider(iUserService, iRoleService);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean({IUserService.class, IRoleService.class})
|
||||
public WechatMiniLoginPreparer wechatMiniLoginPreparer() {
|
||||
return new WechatMiniLoginPreparer();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public VerificationCodeService verificationCodeService() {
|
||||
return new VerificationCodeService(true);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean({IUserService.class, IRoleService.class, IResourceService.class, VerificationCodeService.class})
|
||||
public CodeAuthenticationProvider codeAuthenticationProvider(IUserService iUserService, IRoleService iRoleService, IResourceService iResourceService, VerificationCodeService verificationCodeService) {
|
||||
return new CodeAuthenticationProvider(iUserService, iRoleService, iResourceService, verificationCodeService);
|
||||
@ConditionalOnBean({IUserService.class, IRoleService.class, VerificationCodeService.class})
|
||||
public CodeAuthenticationProvider codeAuthenticationProvider(IUserService iUserService, IRoleService iRoleService, VerificationCodeService verificationCodeService) {
|
||||
return new CodeAuthenticationProvider(iUserService, iRoleService, verificationCodeService);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import java.util.Set;
|
|||
public class CodeAuthenticationProvider extends AbstractAuthenticationProvider {
|
||||
private final IUserService iUserService;
|
||||
private final IRoleService iRoleService;
|
||||
private final IResourceService iResourceService;
|
||||
private final VerificationCodeService verificationCodeService;
|
||||
|
||||
/**
|
||||
|
|
@ -30,15 +29,13 @@ public class CodeAuthenticationProvider extends AbstractAuthenticationProvider {
|
|||
protected UserDetail retrieveUser(LoginForm loginForm) throws UserLoginException {
|
||||
CodeLoginForm codeLoginForm = (CodeLoginForm) loginForm;
|
||||
String phone = codeLoginForm.getPhone();
|
||||
UserDetail userDetail = iUserService.selectUser(phone, codeLoginForm.getAuthWay());
|
||||
UserDetail userDetail = iUserService.selectUser(codeLoginForm);
|
||||
if (userDetail == null) throw new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "账号不存在");
|
||||
Long userId = userDetail.getUserId();
|
||||
Set<String> roles = iRoleService.selectRoleByUserId(userId);
|
||||
Resource resource = iResourceService.selectResourceByUserId(userId);
|
||||
return userDetail
|
||||
.setAuthWay(AuthWay.PASSWORD)
|
||||
.setRoles(roles)
|
||||
.setResource(resource)
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.njzscloud.common.security.module.password;
|
|||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.njzscloud.common.core.ex.ExceptionMsg;
|
||||
import com.njzscloud.common.core.ex.SysThrowable;
|
||||
import com.njzscloud.common.security.contant.AuthWay;
|
||||
import com.njzscloud.common.security.ex.UserLoginException;
|
||||
import com.njzscloud.common.security.support.*;
|
||||
|
|
@ -17,7 +18,6 @@ import java.util.Set;
|
|||
public class PasswordAuthenticationProvider extends AbstractAuthenticationProvider {
|
||||
private final IUserService iUserService;
|
||||
private final IRoleService iRoleService;
|
||||
private final IResourceService iResourceService;
|
||||
|
||||
/**
|
||||
* 读取用户信息
|
||||
|
|
@ -28,16 +28,18 @@ public class PasswordAuthenticationProvider extends AbstractAuthenticationProvid
|
|||
@Override
|
||||
protected UserDetail retrieveUser(LoginForm loginForm) throws UserLoginException {
|
||||
PasswordLoginForm passwordLoginForm = (PasswordLoginForm) loginForm;
|
||||
String account = passwordLoginForm.getAccount();
|
||||
UserDetail userDetail = iUserService.selectUser(account, passwordLoginForm.getAuthWay());
|
||||
UserDetail userDetail;
|
||||
try {
|
||||
userDetail = iUserService.selectUser(passwordLoginForm);
|
||||
} catch (SysThrowable e) {
|
||||
throw new UserLoginException(e.msg, e.message.toString());
|
||||
}
|
||||
if (userDetail == null) throw new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "账号或密码错误");
|
||||
Long userId = userDetail.getUserId();
|
||||
Set<String> roles = iRoleService.selectRoleByUserId(userId);
|
||||
Resource resource = iResourceService.selectResourceByUserId(userId);
|
||||
return userDetail
|
||||
.setAuthWay(AuthWay.PASSWORD)
|
||||
.setRoles(roles)
|
||||
.setResource(resource)
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.njzscloud.common.core.jackson.Jackson;
|
|||
import com.njzscloud.common.security.ex.UserLoginException;
|
||||
import com.njzscloud.common.security.support.LoginForm;
|
||||
import com.njzscloud.common.security.support.LoginPreparer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
||||
|
||||
import javax.servlet.ServletInputStream;
|
||||
|
|
@ -15,6 +16,7 @@ import static com.njzscloud.common.security.contant.Constants.LOGIN_URL;
|
|||
/**
|
||||
* 账号密码登录,登录参数处理器
|
||||
*/
|
||||
@Slf4j
|
||||
public class PasswordLoginPreparer implements LoginPreparer {
|
||||
private static final AntPathRequestMatcher matcher = new AntPathRequestMatcher(LOGIN_URL, "POST");
|
||||
|
||||
|
|
@ -27,7 +29,9 @@ public class PasswordLoginPreparer implements LoginPreparer {
|
|||
@Override
|
||||
public LoginForm createLoginForm(HttpServletRequest request) {
|
||||
try (ServletInputStream inputStream = request.getInputStream()) {
|
||||
return Jackson.toBean(inputStream, PasswordLoginForm.class);
|
||||
LoginForm loginForm = Jackson.toBean(inputStream, PasswordLoginForm.class);
|
||||
log.info("账号密码登录表单:{}", Jackson.toJsonStr(loginForm));
|
||||
return loginForm;
|
||||
} catch (Exception e) {
|
||||
throw new UserLoginException(e, ExceptionMsg.SYS_ERR_MSG, "登录表单解析失败");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
package com.njzscloud.common.security.module.wechat.mini;
|
||||
|
||||
import com.njzscloud.common.core.ex.ExceptionMsg;
|
||||
import com.njzscloud.common.core.ex.SysThrowable;
|
||||
import com.njzscloud.common.security.contant.AuthWay;
|
||||
import com.njzscloud.common.security.ex.UserLoginException;
|
||||
import com.njzscloud.common.security.module.code.CodeLoginForm;
|
||||
import com.njzscloud.common.security.module.password.PasswordLoginForm;
|
||||
import com.njzscloud.common.security.support.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -17,7 +17,6 @@ import java.util.Set;
|
|||
public class WechatMiniAuthenticationProvider extends AbstractAuthenticationProvider {
|
||||
private final IUserService iUserService;
|
||||
private final IRoleService iRoleService;
|
||||
private final IResourceService iResourceService;
|
||||
|
||||
/**
|
||||
* 读取用户信息
|
||||
|
|
@ -28,17 +27,18 @@ public class WechatMiniAuthenticationProvider extends AbstractAuthenticationProv
|
|||
@Override
|
||||
protected UserDetail retrieveUser(LoginForm loginForm) throws UserLoginException {
|
||||
WechatMiniLoginForm wechatMiniLoginForm = (WechatMiniLoginForm) loginForm;
|
||||
String code = wechatMiniLoginForm.getCode();
|
||||
AuthWay authWay = wechatMiniLoginForm.getAuthWay();
|
||||
UserDetail userDetail = iUserService.selectUser(code, authWay);
|
||||
if (userDetail == null) throw new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "账号不存在");
|
||||
UserDetail userDetail;
|
||||
try {
|
||||
userDetail = iUserService.selectUser(wechatMiniLoginForm);
|
||||
} catch (SysThrowable e) {
|
||||
throw new UserLoginException(e.msg, e.message.toString());
|
||||
}
|
||||
if (userDetail == null) throw new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "微信登录失败");
|
||||
Long userId = userDetail.getUserId();
|
||||
Set<String> roles = iRoleService.selectRoleByUserId(userId);
|
||||
Resource resource = iResourceService.selectResourceByUserId(userId);
|
||||
return userDetail
|
||||
.setAuthWay(authWay)
|
||||
.setAuthWay(AuthWay.WECHAT_MINI)
|
||||
.setRoles(roles)
|
||||
.setResource(resource)
|
||||
;
|
||||
}
|
||||
|
||||
|
|
@ -50,6 +50,6 @@ public class WechatMiniAuthenticationProvider extends AbstractAuthenticationProv
|
|||
*/
|
||||
@Override
|
||||
protected Class<?> getLoginFormClazz() {
|
||||
return CodeLoginForm.class;
|
||||
return WechatMiniLoginForm.class;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,12 +4,13 @@ import com.njzscloud.common.security.contant.AuthWay;
|
|||
import com.njzscloud.common.security.support.LoginForm;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 登录参数
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public class WechatMiniLoginForm extends LoginForm {
|
||||
/**
|
||||
* 验证码
|
||||
|
|
|
|||
|
|
@ -1,11 +1,16 @@
|
|||
package com.njzscloud.common.security.module.wechat.mini;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.njzscloud.common.core.ex.ExceptionMsg;
|
||||
import com.njzscloud.common.core.jackson.Jackson;
|
||||
import com.njzscloud.common.security.ex.UserLoginException;
|
||||
import com.njzscloud.common.security.module.password.PasswordLoginForm;
|
||||
import com.njzscloud.common.security.support.LoginForm;
|
||||
import com.njzscloud.common.security.support.LoginPreparer;
|
||||
import com.njzscloud.common.wechat.WechatUtil;
|
||||
import com.njzscloud.common.wechat.param.Code2SessionParam;
|
||||
import com.njzscloud.common.wechat.result.Code2SessionResult;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
||||
|
||||
import javax.servlet.ServletInputStream;
|
||||
|
|
@ -16,6 +21,7 @@ import static com.njzscloud.common.security.contant.Constants.LOGIN_WECHAT_URL;
|
|||
/**
|
||||
* 验证码登录,登录参数处理器
|
||||
*/
|
||||
@Slf4j
|
||||
public class WechatMiniLoginPreparer implements LoginPreparer {
|
||||
private static final AntPathRequestMatcher matcher = new AntPathRequestMatcher(LOGIN_WECHAT_URL, "POST");
|
||||
|
||||
|
|
@ -28,7 +34,22 @@ public class WechatMiniLoginPreparer implements LoginPreparer {
|
|||
@Override
|
||||
public LoginForm createLoginForm(HttpServletRequest request) {
|
||||
try (ServletInputStream inputStream = request.getInputStream()) {
|
||||
return Jackson.toBean(inputStream, WechatMiniLoginForm.class);
|
||||
WechatMiniLoginForm loginForm = Jackson.toBean(inputStream, WechatMiniLoginForm.class);
|
||||
log.info("微信小程序登录表单:{}", Jackson.toJsonStr(loginForm));
|
||||
String code = loginForm.getCode();
|
||||
if (StrUtil.isBlank(code)) {
|
||||
throw new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "微信验证码不能为空");
|
||||
}
|
||||
Code2SessionResult code2SessionResult = WechatUtil.code2Session(new Code2SessionParam().setJs_code(code));
|
||||
Integer errcode = code2SessionResult.getErrcode();
|
||||
if (errcode != null && errcode != 0) {
|
||||
log.error("微信登录失败, errcode: {}, errmsg: {}", errcode, code2SessionResult.getErrmsg());
|
||||
throw new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "微信登录失败");
|
||||
}
|
||||
String openid = code2SessionResult.getOpenid();
|
||||
String unionid = code2SessionResult.getUnionid();
|
||||
return loginForm.setOpenid(openid)
|
||||
.setUnionid(unionid);
|
||||
} catch (Exception e) {
|
||||
throw new UserLoginException(e, ExceptionMsg.SYS_ERR_MSG, "登录表单解析失败");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
package com.njzscloud.common.security.support;
|
||||
|
||||
import com.njzscloud.common.security.contant.AuthWay;
|
||||
import com.njzscloud.common.security.module.code.CodeLoginForm;
|
||||
import com.njzscloud.common.security.module.password.PasswordLoginForm;
|
||||
import com.njzscloud.common.security.module.wechat.mini.WechatMiniLoginForm;
|
||||
|
||||
public interface IUserService {
|
||||
UserDetail selectUser(String phone, AuthWay authWay);
|
||||
default UserDetail selectUser(CodeLoginForm form) {
|
||||
return null;
|
||||
}
|
||||
|
||||
default UserDetail selectUser(PasswordLoginForm form) {
|
||||
return null;
|
||||
|
|
@ -15,7 +17,7 @@ public interface IUserService {
|
|||
return null;
|
||||
}
|
||||
|
||||
default UserDetail my(WechatMiniLoginForm form) {
|
||||
default UserDetail my() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
package com.njzscloud.common.security.support;
|
||||
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.njzscloud.common.security.contant.AuthWay;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.security.Principal;
|
||||
import java.util.Map;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
@ -19,7 +19,7 @@ public abstract class LoginForm implements Principal {
|
|||
private final AuthWay authWay;
|
||||
|
||||
/**
|
||||
* 扩展参数
|
||||
* 注册数据
|
||||
*/
|
||||
private Map<String, Object> extra;
|
||||
private JSONObject registerData;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.njzscloud.common.security.support;
|
||||
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.njzscloud.common.core.fastjson.Fastjson;
|
||||
import com.njzscloud.common.core.fastjson.serializer.DictObjectDeserializer;
|
||||
import com.njzscloud.common.core.fastjson.serializer.DictObjectSerializer;
|
||||
import com.njzscloud.common.security.contant.AuthWay;
|
||||
|
|
@ -35,6 +35,7 @@ public class UserDetail implements CredentialsContainer, Principal {
|
|||
/**
|
||||
* 密码
|
||||
*/
|
||||
@JsonIgnore
|
||||
private String secret;
|
||||
|
||||
/**
|
||||
|
|
@ -57,11 +58,6 @@ public class UserDetail implements CredentialsContainer, Principal {
|
|||
*/
|
||||
private Set<String> roles;
|
||||
|
||||
/**
|
||||
* 资源
|
||||
*/
|
||||
private Resource resource;
|
||||
|
||||
@JsonSerialize(using = TokenSerializer.class)
|
||||
private Token token;
|
||||
|
||||
|
|
@ -70,8 +66,6 @@ public class UserDetail implements CredentialsContainer, Principal {
|
|||
*/
|
||||
private Boolean disabled;
|
||||
|
||||
private String bizObj;
|
||||
|
||||
/**
|
||||
* 账号是否过期
|
||||
*/
|
||||
|
|
@ -91,12 +85,9 @@ public class UserDetail implements CredentialsContainer, Principal {
|
|||
* 是否启用
|
||||
*/
|
||||
// private boolean disable = false;
|
||||
@Override
|
||||
public String toString() {
|
||||
return Fastjson.toJsonStr(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@JsonIgnore
|
||||
public String getName() {
|
||||
return userId.toString();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,13 @@
|
|||
package com.njzscloud.common.security.util;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.njzscloud.common.security.contant.AuthWay;
|
||||
import com.njzscloud.common.security.contant.Constants;
|
||||
import com.njzscloud.common.security.support.*;
|
||||
import com.njzscloud.common.security.support.ITokenService;
|
||||
import com.njzscloud.common.security.support.Token;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 获取认证信息工具
|
||||
*/
|
||||
|
|
@ -19,11 +17,12 @@ public class SecurityUtil {
|
|||
*
|
||||
* @return UserAuthPrincipal
|
||||
*/
|
||||
public static UserDetail loginUser() {
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T extends UserDetail> T loginUser() {
|
||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||
UserDetail userDetail = null;
|
||||
if (authentication != null) userDetail = (UserDetail) authentication.getPrincipal();
|
||||
return userDetail == null ? Constants.ANONYMOUS_USER : userDetail;
|
||||
T userDetail = null;
|
||||
if (authentication != null) userDetail = (T) authentication.getPrincipal();
|
||||
return userDetail == null ? (T) Constants.ANONYMOUS_USER : userDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -80,24 +79,4 @@ public class SecurityUtil {
|
|||
public static void removeToken(Long userId) {
|
||||
SpringUtil.getBean(ITokenService.class).removeToken(userId);
|
||||
}
|
||||
|
||||
public static String registrationToken(String account, AuthWay authWay) {
|
||||
IUserService userService = SpringUtil.getBean(IUserService.class);
|
||||
UserDetail userDetail = userService.selectUser(account, authWay);
|
||||
Long userId = userDetail.getUserId();
|
||||
Set<String> roles = SpringUtil.getBean(IRoleService.class).selectRoleByUserId(userId);
|
||||
if (CollUtil.isEmpty(roles)) {
|
||||
roles.add(Constants.ROLE_ANONYMOUS);
|
||||
roles.add(Constants.ROLE_AUTHENTICATED);
|
||||
}
|
||||
|
||||
Resource resource = SpringUtil.getBean(IResourceService.class).selectResourceByUserId(userId);
|
||||
Token token = Token.create(userDetail.getUserId(), userDetail.getAccountId(), authWay);
|
||||
userDetail.setAuthWay(authWay)
|
||||
.setRoles(roles)
|
||||
.setResource(resource)
|
||||
.setToken(token);
|
||||
SecurityUtil.registrationToken(userDetail);
|
||||
return token.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,16 +12,19 @@ import lombok.RequiredArgsConstructor;
|
|||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum BizObj implements DictStr {
|
||||
// 产废方
|
||||
GeRen("GeRen", "个人"),
|
||||
WuYe("WuYe", "物业"),
|
||||
ShiGongDanWei("ShiGongDanWei", "施工单位"),
|
||||
ChaiQian("ChaiQian", "拆迁公司"),
|
||||
SheQu("SheQu", "社区/村/街道"),
|
||||
|
||||
// 清运方
|
||||
QiYe("QiYe", "企业"),
|
||||
GeTi("GeTi", "个体工商户"),
|
||||
|
||||
SiJi("SiJi", "司机"),
|
||||
|
||||
JianGuan("JianGuan", "监管"),
|
||||
SiBang("SiBang", "司磅"),
|
||||
|
||||
|
|
@ -35,32 +38,28 @@ public enum BizObj implements DictStr {
|
|||
/**
|
||||
* 判断是否为清运公司
|
||||
*/
|
||||
public static boolean isTrans(String bizObjStr) {
|
||||
BizObj bizObj = Dict.parse(bizObjStr, BizObj.values());
|
||||
public static boolean isTrans(BizObj bizObj) {
|
||||
return bizObj != null && bizObj.isTrans();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否为司机
|
||||
*/
|
||||
public static boolean isDriver(String bizObjStr) {
|
||||
BizObj bizObj = Dict.parse(bizObjStr, BizObj.values());
|
||||
public static boolean isDriver(BizObj bizObj) {
|
||||
return bizObj != null && bizObj.isDriver();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否为产废单位或个人
|
||||
*/
|
||||
public static boolean isWaste(String bizObjStr) {
|
||||
BizObj bizObj = Dict.parse(bizObjStr, BizObj.values());
|
||||
public static boolean isWaste(BizObj bizObj) {
|
||||
return bizObj != null && (bizObj.isWastePersonal() || bizObj.isWasteCompany());
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否为个人
|
||||
*/
|
||||
public static boolean isWastePersonal(String bizObjStr) {
|
||||
BizObj bizObj = Dict.parse(bizObjStr, BizObj.values());
|
||||
public static boolean isWastePersonal(BizObj bizObj) {
|
||||
return bizObj != null && bizObj.isWastePersonal();
|
||||
}
|
||||
|
||||
|
|
@ -75,8 +74,7 @@ public enum BizObj implements DictStr {
|
|||
/**
|
||||
* 判断是否为司磅
|
||||
*/
|
||||
public static boolean isSiBang(String bizObjStr) {
|
||||
BizObj bizObj = Dict.parse(bizObjStr, BizObj.values());
|
||||
public static boolean isSiBang(BizObj bizObj) {
|
||||
return bizObj != null && bizObj.isSiBang();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import cn.hutool.core.lang.Assert;
|
|||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.base.Strings;
|
||||
import com.njzscloud.common.core.ex.Exceptions;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
import com.njzscloud.common.security.util.SecurityUtil;
|
||||
import com.njzscloud.supervisory.biz.constant.AuditStatus;
|
||||
import com.njzscloud.supervisory.biz.constant.BizObj;
|
||||
|
|
@ -22,6 +20,7 @@ import com.njzscloud.supervisory.biz.pojo.param.SearchCompanyParam;
|
|||
import com.njzscloud.supervisory.biz.pojo.result.SearchCompanyResult;
|
||||
import com.njzscloud.supervisory.biz.pojo.result.StationResult;
|
||||
import com.njzscloud.supervisory.config.AppProperties;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -120,11 +119,11 @@ public class BizCompanyService extends ServiceImpl<BizCompanyMapper, BizCompanyE
|
|||
* @return SearchCompanyResult 结果
|
||||
*/
|
||||
public SearchCompanyResult detail(Long id) {
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
Long userId = userDetail.getUserId();
|
||||
String bizObjValue = userDetail.getBizObj();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
BizCompanyEntity bizCompanyEntity;
|
||||
if (Strings.isNullOrEmpty(bizObjValue)) {
|
||||
if (bizObj == null) {
|
||||
// 使用联表查询获取企业信息和用户的bizObj
|
||||
bizCompanyEntity = baseMapper.selectDetailWithBizObj(id);
|
||||
if (bizCompanyEntity == null) {
|
||||
|
|
@ -132,7 +131,6 @@ public class BizCompanyService extends ServiceImpl<BizCompanyMapper, BizCompanyE
|
|||
}
|
||||
return BeanUtil.copyProperties(bizCompanyEntity, SearchCompanyResult.class);
|
||||
}
|
||||
BizObj bizObj = BizObj.valueOf(bizObjValue);
|
||||
switch (bizObj) {
|
||||
case ShiGongDanWei:
|
||||
case QingYunGongSi:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njzscloud.common.core.ex.Exceptions;
|
||||
import com.njzscloud.common.core.ienum.Dict;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
|
|
@ -20,6 +19,9 @@ import com.njzscloud.supervisory.biz.pojo.entity.BizDriverEntity;
|
|||
import com.njzscloud.supervisory.biz.pojo.param.AddDriverParam;
|
||||
import com.njzscloud.supervisory.biz.pojo.param.AuditDriverParam;
|
||||
import com.njzscloud.supervisory.biz.pojo.result.SearchCompanyResult;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.param.AddUserAccountParam;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.param.AddUserParam;
|
||||
import com.njzscloud.supervisory.sys.user.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -47,9 +49,13 @@ public class BizDriverService extends ServiceImpl<BizDriverMapper, BizDriverEnti
|
|||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
SearchCompanyResult searchCompanyResult = baseMapper.selectCompanyByUserId(userDetail.getUserId());
|
||||
|
||||
Long driverUserId = sysUserService.add(addDriverParam.getUser()
|
||||
.setBizObj(BizObj.SiJi)
|
||||
);
|
||||
AddUserParam user = addDriverParam.getUser();
|
||||
AddUserAccountParam account = user.getAccount();
|
||||
user.setPhone(account.getPhone())
|
||||
.setBizObj(BizObj.SiJi);
|
||||
account.setPhone(null);
|
||||
|
||||
Long driverUserId = sysUserService.add(user);
|
||||
BizDriverEntity bizDriverEntity = BeanUtil.copyProperties(addDriverParam, BizDriverEntity.class)
|
||||
.setAuditStatus(AuditStatus.DaiShenHe)
|
||||
.setUserId(driverUserId)
|
||||
|
|
@ -114,8 +120,8 @@ public class BizDriverService extends ServiceImpl<BizDriverMapper, BizDriverEnti
|
|||
.like(StrUtil.isNotBlank(phone), "d.phone", phone)
|
||||
.eq(StrUtil.isNotBlank(aStatus), "d.audit_status", aStatus);
|
||||
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
BizObj parse = Dict.parse(userDetail.getBizObj(), BizObj.values());
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
BizObj parse = userDetail.getBizObj();
|
||||
if (parse == BizObj.QiYe
|
||||
|| parse == BizObj.GeTi
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -7,16 +7,15 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njzscloud.common.core.ex.Exceptions;
|
||||
import com.njzscloud.common.core.ienum.Dict;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
import com.njzscloud.common.security.util.SecurityUtil;
|
||||
import com.njzscloud.supervisory.biz.constant.AuditStatus;
|
||||
import com.njzscloud.supervisory.biz.constant.BizObj;
|
||||
import com.njzscloud.supervisory.biz.mapper.BizProjectMapper;
|
||||
import com.njzscloud.supervisory.biz.pojo.entity.BizProjectEntity;
|
||||
import com.njzscloud.supervisory.biz.pojo.result.SearchBizProjectResult;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -68,8 +67,8 @@ public class BizProjectService extends ServiceImpl<BizProjectMapper, BizProjectE
|
|||
if (null != auditStatus) {
|
||||
aStatus = auditStatus.getVal();
|
||||
}
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
BizObj bizObj = Dict.parse(userDetail.getBizObj(), BizObj.values());
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
QueryWrapper<BizProjectEntity> ew = Wrappers.<BizProjectEntity>query()
|
||||
.like(StrUtil.isNotBlank(bizProjectEntity.getProjectName()), "a.project_name", bizProjectEntity.getProjectName())
|
||||
.eq(StrUtil.isNotBlank(aStatus), "a.audit_status", aStatus).eq("a.deleted", 0);
|
||||
|
|
@ -105,8 +104,8 @@ public class BizProjectService extends ServiceImpl<BizProjectMapper, BizProjectE
|
|||
}
|
||||
|
||||
public PageResult<SearchBizProjectResult> pagingTrans(PageParam pageParam, BizProjectEntity bizProjectEntity) {
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
BizObj bizObj = Dict.parse(userDetail.getBizObj(), BizObj.values());
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
Assert.isTrue(bizObj != null && bizObj.isWaste(), () -> Exceptions.exception("非产废单位或个人,不能查询合作的清运公司"));
|
||||
|
||||
Long userId = userDetail.getUserId();
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njzscloud.common.core.ex.Exceptions;
|
||||
import com.njzscloud.common.core.ienum.Dict;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
|
|
@ -20,6 +19,7 @@ import com.njzscloud.supervisory.biz.pojo.entity.BizTruckEntity;
|
|||
import com.njzscloud.supervisory.biz.pojo.param.SearchTruckParam;
|
||||
import com.njzscloud.supervisory.biz.pojo.result.SearchCompanyResult;
|
||||
import com.njzscloud.supervisory.biz.pojo.result.SearchTruckResult;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -94,10 +94,10 @@ public class BizTruckService extends ServiceImpl<BizTruckMapper, BizTruckEntity>
|
|||
.eq(StrUtil.isNotBlank(aStatus), "a.audit_status", aStatus)
|
||||
.like(StrUtil.isNotBlank(companyName), "b.company_name", companyName)
|
||||
.like(StrUtil.isNotBlank(licensePlate), "a.license_plate", licensePlate);
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
BizObj parse = Dict.parse(userDetail.getBizObj(), BizObj.values());
|
||||
if (parse == BizObj.QiYe
|
||||
|| parse == BizObj.GeTi
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
if (bizObj == BizObj.QiYe
|
||||
|| bizObj == BizObj.GeTi
|
||||
) {
|
||||
ew.eq("b.user_id", userDetail.getUserId());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
package com.njzscloud.supervisory.expense.contant;
|
||||
|
||||
import com.njzscloud.common.core.ienum.DictStr;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* 字典代码:expense_item_category
|
||||
* 字典名称:付费项类型
|
||||
*/
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum ExpenseItemCategory implements DictStr {
|
||||
QiTa("QiTa", "其他"),
|
||||
ChanPin("ChanPin", "产品"),
|
||||
QingYunFuWuFei("QingYunFuWuFei", "清运服务费"),
|
||||
YunFei("YunFei", "运费"),
|
||||
;
|
||||
private final String val;
|
||||
private final String txt;
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
package com.njzscloud.supervisory.expense.controller;
|
||||
|
||||
import com.njzscloud.common.core.utils.R;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.supervisory.expense.pojo.entity.ExpenseItemsConfigEntity;
|
||||
import com.njzscloud.supervisory.expense.service.ExpenseItemsConfigService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 付费项配置
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/expense_items_config")
|
||||
@RequiredArgsConstructor
|
||||
public class ExpenseItemsConfigController {
|
||||
|
||||
private final ExpenseItemsConfigService expenseItemsConfigService;
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
@PostMapping("/add")
|
||||
public R<?> add(@RequestBody ExpenseItemsConfigEntity expenseItemsConfigEntity) {
|
||||
expenseItemsConfigService.add(expenseItemsConfigEntity);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@PostMapping("/modify")
|
||||
public R<?> modify(@RequestBody ExpenseItemsConfigEntity expenseItemsConfigEntity) {
|
||||
expenseItemsConfigService.modify(expenseItemsConfigEntity);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@PostMapping("/del")
|
||||
public R<?> del(@RequestBody List<Long> ids) {
|
||||
expenseItemsConfigService.del(ids);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
public R<ExpenseItemsConfigEntity> detail(@RequestParam Long id) {
|
||||
return R.success(expenseItemsConfigService.detail(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
@GetMapping("/paging")
|
||||
public R<PageResult<ExpenseItemsConfigEntity>> paging(PageParam pageParam, ExpenseItemsConfigEntity expenseItemsConfigEntity) {
|
||||
return R.success(expenseItemsConfigService.paging(pageParam, expenseItemsConfigEntity));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package com.njzscloud.supervisory.expense.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njzscloud.supervisory.expense.pojo.entity.ExpenseItemsConfigEntity;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 付费项配置
|
||||
*/
|
||||
@Mapper
|
||||
public interface ExpenseItemsConfigMapper extends BaseMapper<ExpenseItemsConfigEntity> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
package com.njzscloud.supervisory.expense.pojo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 付费项配置
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("expense_items_config")
|
||||
public class ExpenseItemsConfigEntity {
|
||||
|
||||
/**
|
||||
* Id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 付费项类型; 字典代码:expense_item_category
|
||||
*/
|
||||
private String expenseItemCategory;
|
||||
|
||||
/**
|
||||
* 付费项名称; expense_item_category
|
||||
*/
|
||||
private String expenseItemName;
|
||||
|
||||
/**
|
||||
* 单价; 单位:元
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 单位; 字典代码:unit
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 计费策略; 字典代码:money_strategy
|
||||
*/
|
||||
private String moneyStrategy;
|
||||
|
||||
/**
|
||||
* 计费配置 Id
|
||||
*/
|
||||
private Long moneyConfigId;
|
||||
|
||||
/**
|
||||
* 是否可用; 0-->否、1-->是
|
||||
*/
|
||||
private Boolean canuse;
|
||||
|
||||
/**
|
||||
* 适用范围; json
|
||||
*/
|
||||
private String scope;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 创建人 Id; sys_user.id
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Long creatorId;
|
||||
|
||||
/**
|
||||
* 修改人 Id; sys_user.id
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Long modifierId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime modifyTime;
|
||||
|
||||
/**
|
||||
* 是否删除; 0-->未删除、1-->已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Boolean deleted;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
package com.njzscloud.supervisory.expense.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.supervisory.expense.mapper.ExpenseItemsConfigMapper;
|
||||
import com.njzscloud.supervisory.expense.pojo.entity.ExpenseItemsConfigEntity;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 付费项配置
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ExpenseItemsConfigService extends ServiceImpl<ExpenseItemsConfigMapper, ExpenseItemsConfigEntity> implements IService<ExpenseItemsConfigEntity> {
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
public void add(ExpenseItemsConfigEntity expenseItemsConfigEntity) {
|
||||
this.save(expenseItemsConfigEntity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
public void modify(ExpenseItemsConfigEntity expenseItemsConfigEntity) {
|
||||
this.updateById(expenseItemsConfigEntity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void del(List<Long> ids) {
|
||||
this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*/
|
||||
public ExpenseItemsConfigEntity detail(Long id) {
|
||||
return this.getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
public PageResult<ExpenseItemsConfigEntity> paging(PageParam pageParam, ExpenseItemsConfigEntity expenseItemsConfigEntity) {
|
||||
return PageResult.of(this.page(pageParam.toPage(), Wrappers.<ExpenseItemsConfigEntity>query(expenseItemsConfigEntity)));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@ import java.math.BigDecimal;
|
|||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("order_goods")
|
||||
@TableName(value = "order_goods", autoResultMap = true)
|
||||
public class OrderGoodsEntity {
|
||||
|
||||
/**
|
||||
|
|
@ -72,14 +72,4 @@ public class OrderGoodsEntity {
|
|||
*/
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private Integer quantity;
|
||||
|
||||
/**
|
||||
* 总金额; 单位:元
|
||||
*/
|
||||
private BigDecimal totalMoney;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,10 @@ package com.njzscloud.supervisory.order.pojo.entity;
|
|||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.njzscloud.common.mp.support.handler.j.JsonTypeHandler;
|
||||
import com.njzscloud.supervisory.biz.constant.AuditStatus;
|
||||
import com.njzscloud.supervisory.order.contant.*;
|
||||
import com.njzscloud.supervisory.order.contant.CheckStatus;
|
||||
import com.njzscloud.supervisory.order.contant.OrderCategory;
|
||||
import com.njzscloud.supervisory.order.contant.OrderStatus;
|
||||
import com.njzscloud.supervisory.order.contant.PaymentStatus;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
|
@ -28,18 +31,6 @@ public class OrderInfoEntity {
|
|||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
/**
|
||||
* 联系人
|
||||
*/
|
||||
private String contacts;
|
||||
/**
|
||||
* 自动标识; 0-->全手动、1-->进自动、2-->出自动、3-->全自动
|
||||
*/
|
||||
private Integer autoOrder;
|
||||
/**
|
||||
* 联系方式
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 订单编号
|
||||
|
|
@ -50,6 +41,27 @@ public class OrderInfoEntity {
|
|||
* 准运证编号
|
||||
*/
|
||||
private String certificateSn;
|
||||
|
||||
/**
|
||||
* 自动标识; 0-->全手动、1-->进自动、2-->出自动、3-->全自动
|
||||
*/
|
||||
private Integer autoOrder;
|
||||
|
||||
/**
|
||||
* 站点 Id
|
||||
*/
|
||||
private Long stationId;
|
||||
|
||||
/**
|
||||
* 车道
|
||||
*/
|
||||
private String lane;
|
||||
|
||||
/**
|
||||
* 项目 Id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 装货地址 Id
|
||||
*/
|
||||
|
|
@ -64,33 +76,37 @@ public class OrderInfoEntity {
|
|||
* 开始清运时间
|
||||
*/
|
||||
private LocalDateTime transTime;
|
||||
/**
|
||||
* 站点 Id
|
||||
*/
|
||||
private Long stationId;
|
||||
|
||||
/**
|
||||
* 车道
|
||||
*/
|
||||
private String lane;
|
||||
|
||||
/**
|
||||
* 下单人 Id; sys_user.id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 联系人
|
||||
*/
|
||||
private String contacts;
|
||||
|
||||
/**
|
||||
* 联系方式
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 审核状态; 字典代码:audit_status
|
||||
*/
|
||||
private AuditStatus auditStatus;
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
private LocalDateTime auditTime;
|
||||
|
||||
/**
|
||||
* 审核备注
|
||||
*/
|
||||
private String auditMemo;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
private LocalDateTime auditTime;
|
||||
|
||||
/**
|
||||
* 区审核人
|
||||
*/
|
||||
|
|
@ -100,15 +116,17 @@ public class OrderInfoEntity {
|
|||
* 市审核人
|
||||
*/
|
||||
private Long shiAuditUserId;
|
||||
|
||||
/**
|
||||
* 目标站点 Id
|
||||
* 对方站点 Id; 短驳单有值
|
||||
*/
|
||||
private Long targetStationId;
|
||||
|
||||
/**
|
||||
* 短驳入订单 Id
|
||||
* 对方订单 Id; 短驳单有值
|
||||
*/
|
||||
private Long targetOrderId;
|
||||
|
||||
/**
|
||||
* 订单类型; 字典代码:order_category
|
||||
*/
|
||||
|
|
@ -160,14 +178,9 @@ public class OrderInfoEntity {
|
|||
private BigDecimal settleMoney;
|
||||
|
||||
/**
|
||||
* 付款方资金账户 Id
|
||||
* 总金额; 单位:元
|
||||
*/
|
||||
private Long payer;
|
||||
|
||||
/**
|
||||
* 支付方类型; 字典代码:payer_category
|
||||
*/
|
||||
private PayerCategory payerCategory;
|
||||
private BigDecimal totalMoney;
|
||||
|
||||
/**
|
||||
* 支付状态; 字典代码:payment_status
|
||||
|
|
@ -175,9 +188,9 @@ public class OrderInfoEntity {
|
|||
private PaymentStatus paymentStatus;
|
||||
|
||||
/**
|
||||
* 支付时间
|
||||
* 完结时间
|
||||
*/
|
||||
private LocalDateTime paymentTime;
|
||||
private LocalDateTime finishTime;
|
||||
|
||||
/**
|
||||
* 客户备注
|
||||
|
|
@ -200,15 +213,18 @@ public class OrderInfoEntity {
|
|||
*/
|
||||
@TableField(typeHandler = JsonTypeHandler.class)
|
||||
private List<String> checkPhoto;
|
||||
|
||||
/**
|
||||
* 进出场信息
|
||||
*/
|
||||
private Long carInOutId;
|
||||
|
||||
/**
|
||||
* 现场照片
|
||||
*/
|
||||
@TableField(typeHandler = JsonTypeHandler.class)
|
||||
private List<String> sitePhotos;
|
||||
/**
|
||||
* 进出场信息
|
||||
*/
|
||||
private Long carInOutId;
|
||||
|
||||
/**
|
||||
* 期望运输时间
|
||||
*/
|
||||
|
|
@ -218,6 +234,7 @@ public class OrderInfoEntity {
|
|||
* 预估量
|
||||
*/
|
||||
private String estimatedQuantity;
|
||||
|
||||
/**
|
||||
* 创建人 Id; sys_user.id
|
||||
*/
|
||||
|
|
@ -248,10 +265,4 @@ public class OrderInfoEntity {
|
|||
@TableLogic
|
||||
private Boolean deleted;
|
||||
|
||||
/**
|
||||
* 项目 Id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njzscloud.common.core.ex.Exceptions;
|
||||
import com.njzscloud.common.core.ienum.Dict;
|
||||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
|
|
@ -37,6 +36,7 @@ import com.njzscloud.supervisory.order.pojo.param.*;
|
|||
import com.njzscloud.supervisory.order.pojo.result.OrderCertificateResult;
|
||||
import com.njzscloud.supervisory.order.pojo.result.OrderPagingResult;
|
||||
import com.njzscloud.supervisory.order.pojo.result.TrainBillResult;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -174,16 +174,16 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
}
|
||||
|
||||
private void dispatchEW(OrderPagingSearchParam orderPagingSearchParam, QueryWrapper<OrderPagingResult> ew) {
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
Long userId = SecurityUtil.currentUserId();
|
||||
String bizObjStr = userDetail.getBizObj();
|
||||
if (BizObj.isTrans(bizObjStr)) {
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
if (BizObj.isTrans(bizObj)) {
|
||||
ew
|
||||
.in("a.order_status", OrderStatus.DaiPaiDan, OrderStatus.DaiJieDan)
|
||||
.eq("g.user_id", userId);
|
||||
return;
|
||||
}
|
||||
if (BizObj.isDriver(bizObjStr)) {
|
||||
if (BizObj.isDriver(bizObj)) {
|
||||
ew
|
||||
.eq("a.order_status", OrderStatus.DaiJieDan)
|
||||
.eq("f.user_id", userId);
|
||||
|
|
@ -203,11 +203,11 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
}
|
||||
|
||||
private void bookingEW(OrderPagingSearchParam orderPagingSearchParam, QueryWrapper<OrderPagingResult> ew) {
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
Long userId = SecurityUtil.currentUserId();
|
||||
String bizObjStr = userDetail.getBizObj();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
|
||||
if (BizObj.isWaste(bizObjStr)) {
|
||||
if (BizObj.isWaste(bizObj)) {
|
||||
ew
|
||||
.in("a.order_status", OrderStatus.YiYuYue, OrderStatus.DaiPaiDan, OrderStatus.DaiJieDan, OrderStatus.YiJieDan)
|
||||
.eq("a.user_id", userId)
|
||||
|
|
@ -228,25 +228,25 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
}
|
||||
|
||||
private void realtimeEW(OrderPagingSearchParam orderPagingSearchParam, QueryWrapper<OrderPagingResult> ew) {
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
Long userId = SecurityUtil.currentUserId();
|
||||
String bizObjStr = userDetail.getBizObj();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
|
||||
if (BizObj.isWaste(bizObjStr)) {
|
||||
if (BizObj.isWaste(bizObj)) {
|
||||
ew
|
||||
.in("a.order_status", OrderStatus.QingYunZhong, OrderStatus.YiJinChang, OrderStatus.YiChuChang)
|
||||
.eq("a.user_id", userId)
|
||||
;
|
||||
return;
|
||||
}
|
||||
if (BizObj.isTrans(bizObjStr)) {
|
||||
if (BizObj.isTrans(bizObj)) {
|
||||
ew
|
||||
.in("a.order_status", OrderStatus.YiJieDan, OrderStatus.QingYunZhong, OrderStatus.YiJinChang, OrderStatus.YiChuChang)
|
||||
.eq("g.user_id", userId)
|
||||
;
|
||||
return;
|
||||
}
|
||||
if (BizObj.isDriver(bizObjStr)) {
|
||||
if (BizObj.isDriver(bizObj)) {
|
||||
ew
|
||||
.eq("f.user_id", userId)
|
||||
.in("a.order_status", OrderStatus.YiJieDan, OrderStatus.QingYunZhong, OrderStatus.YiJinChang, OrderStatus.YiChuChang)
|
||||
|
|
@ -267,18 +267,18 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
}
|
||||
|
||||
private void historyEW(OrderPagingSearchParam orderPagingSearchParam, QueryWrapper<OrderPagingResult> ew) {
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
Long userId = SecurityUtil.currentUserId();
|
||||
String bizObjStr = userDetail.getBizObj();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
|
||||
if (BizObj.isWaste(bizObjStr)) {
|
||||
if (BizObj.isWaste(bizObj)) {
|
||||
ew
|
||||
.eq("a.order_status", OrderStatus.YiWanCheng)
|
||||
.eq("a.user_id", userId)
|
||||
;
|
||||
return;
|
||||
}
|
||||
if (BizObj.isTrans(bizObjStr)) {
|
||||
if (BizObj.isTrans(bizObj)) {
|
||||
ew
|
||||
.eq("a.order_status", OrderStatus.YiWanCheng)
|
||||
.eq("g.user_id", userId)
|
||||
|
|
@ -286,7 +286,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
return;
|
||||
}
|
||||
|
||||
if (BizObj.isDriver(bizObjStr)) {
|
||||
if (BizObj.isDriver(bizObj)) {
|
||||
ew
|
||||
.eq("a.order_status", OrderStatus.YiWanCheng)
|
||||
.eq("f.user_id", userId)
|
||||
|
|
@ -307,11 +307,11 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
}
|
||||
|
||||
private void cancelEW(OrderPagingSearchParam orderPagingSearchParam, QueryWrapper<OrderPagingResult> ew) {
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
Long userId = SecurityUtil.currentUserId();
|
||||
String bizObjStr = userDetail.getBizObj();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
|
||||
if (BizObj.isWaste(bizObjStr)) {
|
||||
if (BizObj.isWaste(bizObj)) {
|
||||
ew
|
||||
.eq("a.order_status", OrderStatus.YiQuXiao)
|
||||
.eq("a.user_id", userId)
|
||||
|
|
@ -346,9 +346,9 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
}
|
||||
|
||||
private void checkEW(OrderPagingSearchParam orderPagingSearchParam, QueryWrapper<OrderPagingResult> ew) {
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
String bizObjStr = userDetail.getBizObj();
|
||||
if (BizObj.isSiBang(bizObjStr)) {
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
if (BizObj.isSiBang(bizObj)) {
|
||||
CheckStatus checkStatus = orderPagingSearchParam.getCheckStatus();
|
||||
if (checkStatus == CheckStatus.YiKanLiao) {
|
||||
ew
|
||||
|
|
@ -679,14 +679,14 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
this.updateById(new OrderInfoEntity()
|
||||
.setAutoOrder(3 ^ (i << 1))
|
||||
.setId(orderInfoEntity.getId())
|
||||
.setOrderStatus(OrderStatus.YiWanCheng)
|
||||
.setOrderStatus(OrderStatus.YiChuChang)
|
||||
);
|
||||
OrderCategory orderCategory = orderInfoEntity.getOrderCategory();
|
||||
Long truckId = orderInfoEntity.getTruckId();
|
||||
Integer settleWeight = orderCarInOutService.truckOut(orderInfoEntity.getCarInOutId(), truckLeavingOrderParam, orderCategory, truckId);
|
||||
orderGoodsService.updateById(new OrderGoodsEntity()
|
||||
.setId(orderInfoEntity.getGoodsId())
|
||||
.setQuantity(settleWeight));
|
||||
|
||||
// TODO 结算
|
||||
// settleWeight 重量
|
||||
// TODO 关闭 GPS
|
||||
|
||||
}
|
||||
|
|
@ -727,8 +727,8 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|
|||
.eq(checkStatus != null, "a.check_status", checkStatus)
|
||||
.ge(startTime != null, "a.create_time", startTime)
|
||||
.le(endTime != null, "a.create_time", endTime);
|
||||
UserDetail userDetail = SecurityUtil.loginUser();
|
||||
BizObj bizObj = Dict.parse(userDetail.getBizObj(), BizObj.values());
|
||||
MyResult userDetail = SecurityUtil.loginUser();
|
||||
BizObj bizObj = userDetail.getBizObj();
|
||||
if (bizObj != null) {
|
||||
if (bizObj.isTrans()) {
|
||||
ew.eq("a.order_status", OrderStatus.DaiPaiDan)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.njzscloud.supervisory.sys.auth.controller;
|
||||
|
||||
import com.njzscloud.common.core.utils.R;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
import com.njzscloud.supervisory.sys.auth.service.AuthService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -23,7 +23,7 @@ public class AuthController {
|
|||
* 获取当前登录人信息
|
||||
*/
|
||||
@GetMapping("/my")
|
||||
public R<MyResult> my() {
|
||||
public R<UserDetail> my() {
|
||||
return R.success(authService.my());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ package com.njzscloud.supervisory.sys.auth.mapper;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.njzscloud.common.security.support.EndpointResource;
|
||||
import com.njzscloud.common.security.support.MenuResource;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
import com.njzscloud.supervisory.biz.pojo.result.SearchCompanyResult;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
|
@ -19,7 +19,7 @@ public interface AuthMapper {
|
|||
|
||||
Set<String> selectRoleByUserId(@Param("userId") Long userId);
|
||||
|
||||
UserDetail selectUser(@Param("ew") QueryWrapper<Object> ew);
|
||||
MyResult selectUser(@Param("ew") QueryWrapper<Object> ew);
|
||||
|
||||
SearchCompanyResult selectCompanyInfo(@Param("userId") Long userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,12 +2,11 @@ package com.njzscloud.supervisory.sys.auth.pojo.result;
|
|||
|
||||
import com.njzscloud.common.security.support.EndpointResource;
|
||||
import com.njzscloud.common.security.support.MenuResource;
|
||||
import com.njzscloud.common.security.support.UserDetail;
|
||||
import com.njzscloud.supervisory.biz.constant.BizObj;
|
||||
import com.njzscloud.supervisory.biz.pojo.result.SearchCompanyResult;
|
||||
import com.njzscloud.supervisory.sys.user.contant.Gender;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -16,9 +15,8 @@ import java.util.Set;
|
|||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public class MyResult {
|
||||
public class MyResult extends UserDetail {
|
||||
private List<MenuResource> menus;
|
||||
private Set<String> roles;
|
||||
|
||||
|
|
@ -32,22 +30,10 @@ public class MyResult {
|
|||
* Id
|
||||
*/
|
||||
private Long id;
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickname;
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String avatar;
|
||||
/**
|
||||
* 性别; 字典代码:gender
|
||||
*/
|
||||
private Gender gender;
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
private String email;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ package com.njzscloud.supervisory.sys.auth.service;
|
|||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.njzscloud.common.security.contant.AuthWay;
|
||||
import com.njzscloud.common.security.module.password.PasswordLoginForm;
|
||||
import com.njzscloud.common.security.module.wechat.mini.WechatMiniLoginForm;
|
||||
import com.njzscloud.common.security.support.*;
|
||||
|
|
@ -12,10 +12,12 @@ import com.njzscloud.supervisory.biz.pojo.result.SearchCompanyResult;
|
|||
import com.njzscloud.supervisory.sys.auth.mapper.AuthMapper;
|
||||
import com.njzscloud.supervisory.sys.auth.pojo.result.MyResult;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.entity.UserEntity;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.param.UserRegisterParam;
|
||||
import com.njzscloud.supervisory.sys.user.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
|
@ -23,50 +25,49 @@ import java.util.Set;
|
|||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AuthService implements IUserService, IResourceService, IRoleService {
|
||||
public class AuthService implements IUserService, IRoleService {
|
||||
private final AuthMapper authMapper;
|
||||
|
||||
private final UserService userService;
|
||||
|
||||
@Override
|
||||
public UserDetail selectUser(String account, AuthWay authWay) {
|
||||
switch (authWay) {
|
||||
case PASSWORD:
|
||||
return authMapper.selectUser(Wrappers.query().eq("a.username", account).eq("a.deleted", 0));
|
||||
case PHONE:
|
||||
return authMapper.selectUser(Wrappers.query().eq("a.phone", account).eq("a.deleted", 0));
|
||||
case WECHAT_MINI:
|
||||
return authMapper.selectUser(Wrappers.query().eq("a.wechat_openid", account).eq("a.deleted", 0));
|
||||
case WECHAT:
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public UserDetail selectUser(PasswordLoginForm form) {
|
||||
String account = form.getAccount();
|
||||
return authMapper.selectUser(Wrappers.query().eq("a.username", account).eq("a.deleted", 0));
|
||||
JSONObject registerData = form.getRegisterData();
|
||||
if (registerData != null) {
|
||||
UserRegisterParam userRegisterParam = registerData.toJavaObject(UserRegisterParam.class);
|
||||
UserRegisterParam.Account account = userRegisterParam.getAccount();
|
||||
if (StrUtil.isBlank(userRegisterParam.getPhone())) {
|
||||
userRegisterParam.setPhone(account.getPhone());
|
||||
account.setPhone(null);
|
||||
}
|
||||
userService.register(userRegisterParam);
|
||||
}
|
||||
|
||||
return authMapper.selectUser(Wrappers.query().eq("a.username", form.getAccount()).eq("a.deleted", 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public UserDetail selectUser(WechatMiniLoginForm form) {
|
||||
String openid = form.getOpenid();
|
||||
String unionid = form.getUnionid();
|
||||
JSONObject registerData = form.getRegisterData();
|
||||
if (registerData != null) {
|
||||
UserRegisterParam userRegisterParam = registerData.toJavaObject(UserRegisterParam.class);
|
||||
UserRegisterParam.Account account = userRegisterParam.getAccount();
|
||||
account.setWechatOpenid(openid)
|
||||
.setWechatUnionid(unionid);
|
||||
if (StrUtil.isBlank(userRegisterParam.getPhone())) {
|
||||
userRegisterParam.setPhone(account.getPhone());
|
||||
}
|
||||
userService.register(userRegisterParam);
|
||||
}
|
||||
return authMapper.selectUser(Wrappers.query().eq("a.wechat_openid", openid)
|
||||
.eq(StrUtil.isNotBlank(unionid), "a.wechat_unionid", unionid)
|
||||
.eq("a.deleted", 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource selectResourceByUserId(Long userId) {
|
||||
List<MenuResource> menuResources = authMapper.selectUserMenu(userId);
|
||||
List<EndpointResource> endpointResource = authMapper.selectUserEndpoint(userId);
|
||||
return new Resource()
|
||||
.setMenu(menuResources)
|
||||
.setEndpoint(endpointResource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> selectRoleByUserId(Long userId) {
|
||||
return authMapper.selectRoleByUserId(userId);
|
||||
|
|
@ -75,7 +76,7 @@ public class AuthService implements IUserService, IResourceService, IRoleService
|
|||
/**
|
||||
* 获取当前登录人信息
|
||||
*/
|
||||
public MyResult my() {
|
||||
public UserDetail my() {
|
||||
Long userId = SecurityUtil.currentUserId();
|
||||
UserEntity userEntity = userService.getById(userId);
|
||||
List<MenuResource> menuResources = authMapper.selectUserMenu(userId);
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public class TokenService implements ITokenService {
|
|||
.setTid(tid)
|
||||
.setTkey(key)
|
||||
.setTval(token.toString())
|
||||
.setUserDetail(userDetail.toString())
|
||||
.setUserDetail(Fastjson.toJsonStr(userDetail))
|
||||
);
|
||||
TOKEN_CACHE.put(key, userDetail);
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,10 @@ import com.njzscloud.common.mp.support.PageParam;
|
|||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.common.security.util.SecurityUtil;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.entity.UserEntity;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.param.*;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.param.AddUserParam;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.param.ModifyPasswdParam;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.param.UserModifyParam;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.param.UserQueryParam;
|
||||
import com.njzscloud.supervisory.sys.user.pojo.result.UserDetailResult;
|
||||
import com.njzscloud.supervisory.sys.user.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -88,11 +91,11 @@ public class UserController {
|
|||
*
|
||||
* @param userRegisterParam 参数
|
||||
*/
|
||||
@PostMapping("/register")
|
||||
/* @PostMapping("/register")
|
||||
public R<?> register(@RequestBody @Validated UserRegisterParam userRegisterParam) {
|
||||
String token = userService.register(userRegisterParam);
|
||||
return R.success(token);
|
||||
}
|
||||
} */
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
|
|
|
|||
|
|
@ -27,7 +27,10 @@ public class AddUserParam implements Constrained {
|
|||
* 昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String phone;
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,10 +1,6 @@
|
|||
package com.njzscloud.supervisory.sys.user.pojo.param;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.njzscloud.common.mvc.validator.Constrained;
|
||||
import com.njzscloud.common.mvc.validator.ValidRule;
|
||||
import com.njzscloud.supervisory.biz.constant.BizObj;
|
||||
import com.njzscloud.supervisory.sys.user.contant.Gender;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
|
@ -16,7 +12,7 @@ import java.time.LocalDate;
|
|||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public class UserRegisterParam implements Constrained {
|
||||
public class UserRegisterParam {
|
||||
|
||||
/**
|
||||
* 业务对象; 字典代码:biz_obj
|
||||
|
|
@ -29,15 +25,9 @@ public class UserRegisterParam implements Constrained {
|
|||
private String nickname;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
* 手机号
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 性别; 字典代码:gender
|
||||
*/
|
||||
private Gender gender;
|
||||
|
||||
private String phone;
|
||||
/**
|
||||
* 账号信息
|
||||
*/
|
||||
|
|
@ -48,42 +38,11 @@ public class UserRegisterParam implements Constrained {
|
|||
*/
|
||||
private Company company;
|
||||
|
||||
|
||||
@Override
|
||||
public ValidRule[] rules() {
|
||||
return new ValidRule[]{
|
||||
ValidRule.of(() -> StrUtil.isNotBlank(nickname), "用户昵称不能为空"),
|
||||
ValidRule.of(() -> account != null, "账号信息不能为空"),
|
||||
ValidRule.of(() -> {
|
||||
switch (bizObj) {
|
||||
case GeRen:
|
||||
return StrUtil.isNotBlank(account.getPhone()) && StrUtil.isNotBlank(account.getCode()) && StrUtil.isNotBlank(account.getCodeId());
|
||||
case QingYunGongSi:
|
||||
case WuYe:
|
||||
return StrUtil.isNotBlank(account.getUsername()) && StrUtil.isNotBlank(account.getSecret());
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}, "账号信息错误"),
|
||||
ValidRule.of(() -> {
|
||||
switch (bizObj) {
|
||||
case GeRen:
|
||||
return true;
|
||||
case QingYunGongSi:
|
||||
case WuYe:
|
||||
return company != null;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}, "公司信息不能为空"),
|
||||
};
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public static class Account implements Constrained {
|
||||
public static class Account {
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
|
|
@ -104,6 +63,15 @@ public class UserRegisterParam implements Constrained {
|
|||
*/
|
||||
private String secret;
|
||||
|
||||
/**
|
||||
* 微信openid
|
||||
*/
|
||||
private String wechatOpenid;
|
||||
/**
|
||||
* 微信unionid
|
||||
*/
|
||||
private String wechatUnionid;
|
||||
|
||||
/**
|
||||
* 验证码
|
||||
*/
|
||||
|
|
@ -113,18 +81,13 @@ public class UserRegisterParam implements Constrained {
|
|||
* 获取验证码时使用的 uid
|
||||
*/
|
||||
private String codeId;
|
||||
|
||||
@Override
|
||||
public ValidRule[] rules() {
|
||||
return new ValidRule[]{};
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
public static class Company implements Constrained {
|
||||
public static class Company {
|
||||
/**
|
||||
* 企业名称
|
||||
*/
|
||||
|
|
@ -144,6 +107,7 @@ public class UserRegisterParam implements Constrained {
|
|||
* 营业执照有效期; [开始日期,结束日期]
|
||||
*/
|
||||
private LocalDate licenseStartTime;
|
||||
|
||||
private LocalDate licenseEndTime;
|
||||
|
||||
/**
|
||||
|
|
@ -215,11 +179,5 @@ public class UserRegisterParam implements Constrained {
|
|||
* 联系电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
|
||||
@Override
|
||||
public ValidRule[] rules() {
|
||||
return new ValidRule[]{};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,17 +34,38 @@ public class UserAccountService extends ServiceImpl<UserAccountMapper, UserAccou
|
|||
String email = addUserAccountParam.getEmail();
|
||||
String phone = addUserAccountParam.getPhone();
|
||||
String wechatOpenid = addUserAccountParam.getWechatOpenid();
|
||||
// String wechatUnionid = addUserAccountParam.getWechatUnionid();
|
||||
String wechatUnionid = addUserAccountParam.getWechatUnionid();
|
||||
|
||||
Assert.isTrue(StrUtil.isNotBlank(username)
|
||||
|| StrUtil.isNotBlank(email)
|
||||
|| StrUtil.isNotBlank(phone)
|
||||
|| StrUtil.isNotBlank(wechatOpenid), () -> Exceptions.exception("用户名、邮箱、手机号、微信账号不能全部为空"));
|
||||
|
||||
List<UserAccountEntity> oldSysUserList = this.list(Wrappers.<UserAccountEntity>lambdaQuery()
|
||||
.eq(StrUtil.isNotBlank(username), UserAccountEntity::getUsername, username)
|
||||
// .or().eq(StrUtil.isNotBlank(email), UserAccountEntity::getEmail, email)
|
||||
// .or().eq(StrUtil.isNotBlank(phone), UserAccountEntity::getPhone, phone)
|
||||
.or(StrUtil.isNotBlank(wechatOpenid) /* && StrUtil.isNotBlank(wechatUnionid) */, it -> it.eq(UserAccountEntity::getWechatOpenid, wechatOpenid))
|
||||
.or().eq(StrUtil.isNotBlank(email), UserAccountEntity::getEmail, email)
|
||||
.or().eq(StrUtil.isNotBlank(phone), UserAccountEntity::getPhone, phone)
|
||||
.or(StrUtil.isNotBlank(wechatOpenid), it -> it
|
||||
.eq(UserAccountEntity::getWechatOpenid, wechatOpenid)
|
||||
.eq(StrUtil.isNotBlank(wechatUnionid), UserAccountEntity::getWechatUnionid, wechatUnionid)
|
||||
)
|
||||
);
|
||||
|
||||
if (StrUtil.isNotBlank(username)) {
|
||||
Assert.isTrue(oldSysUserList.stream().noneMatch(it -> username.equals(it.getUsername())), () -> Exceptions.exception("用户名【{}】已被使用", username));
|
||||
Assert.isTrue(StrUtil.isBlank(email) || oldSysUserList.stream().noneMatch(it -> email.equals(it.getEmail())), () -> Exceptions.exception("邮箱【{}】已被使用", email));
|
||||
Assert.isTrue(StrUtil.isBlank(phone) || oldSysUserList.stream().noneMatch(it -> phone.equals(it.getPhone())), () -> Exceptions.exception("手机号【{}】已被使用", phone));
|
||||
Assert.isTrue(StrUtil.isBlank(wechatOpenid) /* || StrUtil.isBlank(wechatUnionid) */ || oldSysUserList.stream().noneMatch(it -> wechatOpenid.equals(it.getWechatOpenid())), () -> Exceptions.exception("该微信账号已被使用"));
|
||||
}
|
||||
if (StrUtil.isNotBlank(email)) {
|
||||
Assert.isTrue(oldSysUserList.stream().noneMatch(it -> email.equals(it.getEmail())), () -> Exceptions.exception("邮箱【{}】已被使用", email));
|
||||
}
|
||||
if (StrUtil.isNotBlank(phone)) {
|
||||
Assert.isTrue(oldSysUserList.stream().noneMatch(it -> phone.equals(it.getPhone())), () -> Exceptions.exception("手机号【{}】已被使用", phone));
|
||||
}
|
||||
if (StrUtil.isNotBlank(wechatOpenid)) {
|
||||
Assert.isTrue(oldSysUserList.stream().noneMatch(it -> {
|
||||
String unionid = it.getWechatUnionid();
|
||||
return wechatOpenid.equals(it.getWechatOpenid()) && (StrUtil.isBlank(wechatUnionid) || wechatUnionid.equals(unionid));
|
||||
}), () -> Exceptions.exception("该微信账号已被使用"));
|
||||
}
|
||||
|
||||
UserAccountEntity userAccountEntity = BeanUtil.copyProperties(addUserAccountParam, UserAccountEntity.class)
|
||||
.setSecret(EncryptUtil.encrypt(addUserAccountParam.getSecret()))
|
||||
|
|
|
|||
|
|
@ -11,11 +11,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njzscloud.common.core.ex.Exceptions;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.common.security.contant.AuthWay;
|
||||
import com.njzscloud.common.security.util.SecurityUtil;
|
||||
import com.njzscloud.common.wechat.WechatUtil;
|
||||
import com.njzscloud.common.wechat.param.Code2SessionParam;
|
||||
import com.njzscloud.common.wechat.result.Code2SessionResult;
|
||||
import com.njzscloud.supervisory.biz.constant.BizObj;
|
||||
import com.njzscloud.supervisory.biz.pojo.param.AddBizCompanyParam;
|
||||
import com.njzscloud.supervisory.biz.service.BizCompanyService;
|
||||
|
|
@ -53,13 +49,13 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
|
|||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long add(AddUserParam addUserParam) {
|
||||
String phone = addUserParam.getPhone();
|
||||
String nickname = addUserParam.getNickname();
|
||||
Assert.notBlank(phone, () -> Exceptions.clierr("手机号不能为空"));
|
||||
Assert.notBlank(nickname, () -> Exceptions.clierr("用户姓名不能为空"));
|
||||
AddUserAccountParam addUserAccountParam = addUserParam.getAccount();
|
||||
String email = addUserAccountParam.getEmail();
|
||||
String phone = addUserAccountParam.getPhone();
|
||||
|
||||
UserEntity userEntity = BeanUtil.copyProperties(addUserParam, UserEntity.class);
|
||||
if (StrUtil.isNotBlank(email)) userEntity.setEmail(email);
|
||||
if (StrUtil.isNotBlank(phone)) userEntity.setPhone(phone);
|
||||
this.save(userEntity);
|
||||
|
||||
Long userEntityId = userEntity.getId();
|
||||
|
|
@ -148,41 +144,46 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
|
|||
* @param userRegisterParam 参数
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String register(UserRegisterParam userRegisterParam) {
|
||||
public void register(UserRegisterParam userRegisterParam) {
|
||||
UserRegisterParam.Account account = userRegisterParam.getAccount();
|
||||
Assert.notNull(account, () -> Exceptions.clierr("账号信息不能为空"));
|
||||
|
||||
BizObj bizObj = userRegisterParam.getBizObj();
|
||||
|
||||
if (bizObj == BizObj.GeRen) {
|
||||
String code = userRegisterParam.getAccount().getCode();
|
||||
String phone = userRegisterParam.getAccount().getPhone();
|
||||
Code2SessionResult code2SessionResult = WechatUtil.code2Session(new Code2SessionParam().setJs_code(code));
|
||||
String openid = code2SessionResult.getOpenid();
|
||||
Assert.notBlank(openid, () -> Exceptions.error("微信登录失败"));
|
||||
// String unionid = code2SessionResult.getUnionid();
|
||||
UserAccountEntity one = userAccountService.getOne(Wrappers.<UserAccountEntity>lambdaQuery()
|
||||
// .eq(UserAccountEntity::getPhone, phone)
|
||||
// .eq(UserAccountEntity::getWechatUnionid, unionid)
|
||||
.eq(UserAccountEntity::getWechatOpenid, openid)
|
||||
);
|
||||
if (one != null) {
|
||||
String phone1 = one.getPhone();
|
||||
if (phone.equals(phone1)) {
|
||||
return SecurityUtil.registrationToken(openid, AuthWay.WECHAT_MINI);
|
||||
Assert.notBlank(account.getPhone(), () -> Exceptions.clierr("手机号不能为空"));
|
||||
Assert.notBlank(account.getWechatOpenid(), () -> Exceptions.clierr("微信号不能为空"));
|
||||
} else if (bizObj == BizObj.ShiGongDanWei
|
||||
|| bizObj == BizObj.WuYe
|
||||
|| bizObj == BizObj.ChaiQian
|
||||
|| bizObj == BizObj.SheQu
|
||||
|| bizObj == BizObj.QiYe
|
||||
|| bizObj == BizObj.GeTi
|
||||
) {
|
||||
Assert.notBlank(account.getUsername(), () -> Exceptions.clierr("用户名不能为空"));
|
||||
Assert.notBlank(account.getSecret(), () -> Exceptions.clierr("密码不能为空"));
|
||||
} else {
|
||||
throw Exceptions.clierr("手机号错误");
|
||||
throw Exceptions.clierr("业务对象错误");
|
||||
}
|
||||
} else {
|
||||
AddUserParam addUserParam = BeanUtil.copyProperties(userRegisterParam, AddUserParam.class);
|
||||
addUserParam.setAccount(BeanUtil.copyProperties(userRegisterParam.getAccount(), AddUserAccountParam.class)
|
||||
.setWechatOpenid(openid)
|
||||
// .setWechatUnionid(unionid)
|
||||
);
|
||||
this.add(addUserParam);
|
||||
return SecurityUtil.registrationToken(openid, AuthWay.WECHAT_MINI);
|
||||
|
||||
String nickname = userRegisterParam.getNickname();
|
||||
Assert.notBlank(nickname, () -> Exceptions.clierr("用户姓名不能为空"));
|
||||
|
||||
if (bizObj.isWastePersonal()) {
|
||||
String wechatOpenid = account.getWechatOpenid();
|
||||
String wechatUnionid = account.getWechatUnionid();
|
||||
UserAccountEntity oldAccount = userAccountService.getOne(Wrappers.<UserAccountEntity>lambdaQuery()
|
||||
.eq(StrUtil.isNotBlank(wechatUnionid), UserAccountEntity::getWechatUnionid, wechatUnionid)
|
||||
.eq(UserAccountEntity::getWechatOpenid, wechatOpenid));
|
||||
|
||||
if (oldAccount != null) {
|
||||
String oldUserPhone = oldAccount.getPhone();
|
||||
Assert.isTrue(oldUserPhone.equals(account.getPhone()), () -> Exceptions.clierr("手机号错误"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
AddUserParam addUserParam = BeanUtil.copyProperties(userRegisterParam, AddUserParam.class);
|
||||
addUserParam.setAccount(BeanUtil.copyProperties(userRegisterParam.getAccount(), AddUserAccountParam.class));
|
||||
addUserParam.setAccount(BeanUtil.copyProperties(account, AddUserAccountParam.class));
|
||||
Long userId = this.add(addUserParam);
|
||||
|
||||
UserRegisterParam.Company company = userRegisterParam.getCompany();
|
||||
|
|
@ -192,7 +193,6 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
|
|||
.copyProperties(company, AddBizCompanyParam.class)
|
||||
.setUserId(userId);
|
||||
bizCompanyService.add(addBizCompanyParam);
|
||||
return SecurityUtil.registrationToken(userRegisterParam.getAccount().getUsername(), AuthWay.PASSWORD);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2,11 +2,24 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.njzscloud.supervisory.sys.auth.mapper.AuthMapper">
|
||||
<select id="selectUser" resultType="com.njzscloud.common.security.support.UserDetail">
|
||||
<resultMap id="selectUserMap" autoMapping="true" type="com.njzscloud.supervisory.sys.auth.pojo.result.MyResult">
|
||||
<result property="accountId" column="account_id"/>
|
||||
<result property="userId" column="user_id"/>
|
||||
<result property="secret" column="secret"/>
|
||||
<result property="nickname" column="nickname"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
<result property="bizObj" column="biz_obj" typeHandler="com.njzscloud.common.mp.support.handler.e.EnumTypeHandlerDealer"/>
|
||||
<result property="tenantName" column="tenant_name"/>
|
||||
<result property="disabled" column="disabled"/>
|
||||
</resultMap>
|
||||
<select id="selectUser" resultMap="selectUserMap">
|
||||
SELECT a.id account_id,
|
||||
a.user_id,
|
||||
a.user_id id,
|
||||
a.secret,
|
||||
b.nickname,
|
||||
b.avatar,
|
||||
b.phone,
|
||||
b.tenant_id,
|
||||
b.biz_obj,
|
||||
c.tenant_name,
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue