新增消费机设备SN码登录代码
This commit is contained in:
parent
52cc0709aa
commit
efbc063a2f
|
|
@ -55,6 +55,9 @@ public interface RemoteUserService {
|
||||||
public R<LoginUser> getKitchenStaffInfoByPhone(@PathVariable("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
public R<LoginUser> getKitchenStaffInfoByPhone(@PathVariable("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/user/deviceStaff/{deviceSn}")
|
||||||
|
public R<LoginUser> getDeviceStaffInfoBySn(@PathVariable("deviceSn") String deviceSn, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名查询用户信息
|
* 通过用户名查询用户信息
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -201,6 +201,13 @@ public class SysUser extends BaseEntity {
|
||||||
@ApiModelProperty("查询类型")
|
@ApiModelProperty("查询类型")
|
||||||
private boolean bingStatus = false;
|
private boolean bingStatus = false;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private String features;
|
||||||
|
|
||||||
|
public void setFeatures(String features) {
|
||||||
|
this.features = features;
|
||||||
|
}
|
||||||
|
|
||||||
public void setBingStatus(boolean bingStatus) {
|
public void setBingStatus(boolean bingStatus) {
|
||||||
this.bingStatus = bingStatus;
|
this.bingStatus = bingStatus;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,12 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
|
||||||
return R.fail("获取用户失败:" + throwable.getMessage());
|
return R.fail("获取用户失败:" + throwable.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<LoginUser> getDeviceStaffInfoBySn(String deviceSn, String source) {
|
||||||
|
return R.fail("获取用户失败:" + throwable.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名查询用户信息
|
* 通过用户名查询用户信息
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,9 @@ public enum LoginType {
|
||||||
/**
|
/**
|
||||||
* 邮箱验证码
|
* 邮箱验证码
|
||||||
*/
|
*/
|
||||||
KITCHEN_PHONE_PASSWORD;
|
KITCHEN_PHONE_PASSWORD,
|
||||||
|
|
||||||
|
DEVICE_PASSWORD;
|
||||||
|
|
||||||
@JsonCreator
|
@JsonCreator
|
||||||
public static LoginType fromString(String key) {
|
public static LoginType fromString(String key) {
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,7 @@ public class TokenController {
|
||||||
public R<?> login(@RequestBody LoginBody form) {
|
public R<?> login(@RequestBody LoginBody form) {
|
||||||
// 获取相应的登录策略
|
// 获取相应的登录策略
|
||||||
LoginStrategy strategy = loginStrategyFactory.getStrategy(form.getLoginType());
|
LoginStrategy strategy = loginStrategyFactory.getStrategy(form.getLoginType());
|
||||||
|
System.err.println("strategy=="+strategy);
|
||||||
if (strategy == null) {
|
if (strategy == null) {
|
||||||
return R.fail("不支持的登录方式");
|
return R.fail("不支持的登录方式");
|
||||||
}
|
}
|
||||||
|
|
@ -158,12 +159,19 @@ public class TokenController {
|
||||||
String username = Sm4Utils.decrypt(form.getUsername());
|
String username = Sm4Utils.decrypt(form.getUsername());
|
||||||
String password = Sm4Utils.decrypt(form.getPassword());
|
String password = Sm4Utils.decrypt(form.getPassword());
|
||||||
|
|
||||||
LoginUser login = strategy.login(username, password);
|
//
|
||||||
logService.saveLogin(username, "登录", "登录成功", null, "成功");
|
if (LoginType.USERNAME_PASSWORD.equals(form.getLoginType())) {
|
||||||
if (LoginType.KITCHEN_PHONE_PASSWORD.equals(form.getLoginType())) {
|
LoginUser login = strategy.login(username, password);
|
||||||
return R.ok(tokenService.createKitchenStaffToken(login));
|
logService.saveLogin(username, "登录", "登录成功", null, "成功");
|
||||||
} else {
|
|
||||||
return R.ok(tokenService.createToken(login));
|
return R.ok(tokenService.createToken(login));
|
||||||
|
} else if(LoginType.KITCHEN_PHONE_PASSWORD.equals(form.getLoginType())){
|
||||||
|
LoginUser login = strategy.login(username, password);
|
||||||
|
logService.saveLogin(username, "登录", "登录成功", null, "成功");
|
||||||
|
return R.ok(tokenService.createKitchenStaffToken(login));
|
||||||
|
}else{
|
||||||
|
LoginUser login = strategy.login(username, password);
|
||||||
|
logService.saveLogin(username, "登录", "登录成功", null, "成功");
|
||||||
|
return R.ok(tokenService.createKitchenStaffToken(login));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,8 @@ public class LoginStrategyFactory {
|
||||||
strategyMap.put(LoginType.EMAIL_OTP, strategy);
|
strategyMap.put(LoginType.EMAIL_OTP, strategy);
|
||||||
} else if (strategy instanceof KitchenPhonePasswordLoginStrategy) {
|
} else if (strategy instanceof KitchenPhonePasswordLoginStrategy) {
|
||||||
strategyMap.put(LoginType.KITCHEN_PHONE_PASSWORD, strategy);
|
strategyMap.put(LoginType.KITCHEN_PHONE_PASSWORD, strategy);
|
||||||
|
}else if(strategy instanceof DevicePasswordLoginStrategy){
|
||||||
|
strategyMap.put(LoginType.DEVICE_PASSWORD, strategy);
|
||||||
}
|
}
|
||||||
// 继续添加其他策略
|
// 继续添加其他策略
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
package com.bonus.auth.service;
|
||||||
|
|
||||||
|
import com.bonus.common.core.constant.SecurityConstants;
|
||||||
|
import com.bonus.common.core.domain.R;
|
||||||
|
import com.bonus.common.core.exception.ServiceException;
|
||||||
|
import com.bonus.config.SystemConfig;
|
||||||
|
import com.bonus.system.api.RemoteUserService;
|
||||||
|
import com.bonus.system.api.domain.SysUser;
|
||||||
|
import com.bonus.system.api.model.LoginUser;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xliu
|
||||||
|
* @date 2025/11/20 13:29
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class DevicePasswordLoginStrategy implements LoginStrategy{
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SystemConfig systemConfig;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RemoteUserService remoteUserService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PasswordValidatorService passwordValidatorService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysPasswordService passwordService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LoginUser login(String phone, String password) {
|
||||||
|
System.err.println("phone========"+phone+", password="+password);
|
||||||
|
if (!systemConfig.getLoginConfig().isPhonePassword()) {
|
||||||
|
throw new ServiceException("用户不存在/密码错误");
|
||||||
|
}
|
||||||
|
if(phone == null){
|
||||||
|
throw new ServiceException("请输入账户");
|
||||||
|
}
|
||||||
|
String[] str = phone.split("_");
|
||||||
|
if(str.length<2){
|
||||||
|
throw new ServiceException("输入的sn码不正确");
|
||||||
|
}
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
// 方式1:直接格式化
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||||
|
String formattedDate = now.format(formatter);
|
||||||
|
System.out.println("格式化日期: " + formattedDate);
|
||||||
|
if(formattedDate.equals(str[1])==false){
|
||||||
|
throw new ServiceException("输入的sn码出错");
|
||||||
|
}
|
||||||
|
//通过手机号获取用户信息
|
||||||
|
R<LoginUser> userResult = remoteUserService.getDeviceStaffInfoBySn(str[0], SecurityConstants.INNER);
|
||||||
|
//验证用户是否存在
|
||||||
|
passwordValidatorService.validateUserResult(str[0], userResult);
|
||||||
|
//获取用户信息
|
||||||
|
LoginUser userInfo = userResult.getData();
|
||||||
|
SysUser user = userInfo.getSysUser();
|
||||||
|
//校验用户审批状态
|
||||||
|
//passwordValidatorService.validateApprovalStatus(user.getUserName(), user);
|
||||||
|
// 处理IP校验
|
||||||
|
//passwordValidatorService.validateIpBlacklist(user.getUserName());
|
||||||
|
// 验证密码
|
||||||
|
passwordService.validateSn(user, str[0], System.currentTimeMillis());
|
||||||
|
//校验用户启用状态
|
||||||
|
//passwordValidatorService.validateUserStatus(user.getUserName(), user);
|
||||||
|
|
||||||
|
//passwordValidatorService.processLoginBlackList(user);
|
||||||
|
//返回信息
|
||||||
|
return userInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,7 @@ import com.bonus.common.core.exception.CaptchaException;
|
||||||
import com.bonus.common.core.exception.ServiceException;
|
import com.bonus.common.core.exception.ServiceException;
|
||||||
import com.bonus.common.core.utils.StringUtils;
|
import com.bonus.common.core.utils.StringUtils;
|
||||||
import com.bonus.common.core.utils.VerificationCodeUtils;
|
import com.bonus.common.core.utils.VerificationCodeUtils;
|
||||||
|
import com.bonus.common.core.utils.encryption.Sm4Utils;
|
||||||
import com.bonus.common.core.utils.sms.SmsUtils;
|
import com.bonus.common.core.utils.sms.SmsUtils;
|
||||||
import com.bonus.common.core.web.domain.AjaxResult;
|
import com.bonus.common.core.web.domain.AjaxResult;
|
||||||
import com.bonus.common.redis.service.RedisService;
|
import com.bonus.common.redis.service.RedisService;
|
||||||
|
|
@ -83,6 +84,19 @@ public class SysPasswordService {
|
||||||
clearLoginRecordCache(username);
|
clearLoginRecordCache(username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void validateSn(SysUser user, String sn, long l) {
|
||||||
|
String username = user.getUserName();
|
||||||
|
boolean tf = SecurityUtils.matchesPassword(sn, Sm4Utils.encrypt(user.getPhonenumber()));
|
||||||
|
if(!tf){
|
||||||
|
throw new ServiceException("验证失败!");
|
||||||
|
}else{
|
||||||
|
clearLoginRecordCache(username);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public boolean matches(SysUser user, String rawPassword) {
|
public boolean matches(SysUser user, String rawPassword) {
|
||||||
return SecurityUtils.matchesPassword(rawPassword, user.getPassword());
|
return SecurityUtils.matchesPassword(rawPassword, user.getPassword());
|
||||||
}
|
}
|
||||||
|
|
@ -120,4 +134,5 @@ public class SysPasswordService {
|
||||||
|
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ public class TokenService {
|
||||||
rspMap.put("expires_in", EXPIRETIME);
|
rspMap.put("expires_in", EXPIRETIME);
|
||||||
rspMap.put("isLogin", isLogin(String.valueOf(userId)));
|
rspMap.put("isLogin", isLogin(String.valueOf(userId)));
|
||||||
long tokenTime = getTokenTime();
|
long tokenTime = getTokenTime();
|
||||||
|
System.err.println("tokenTime="+tokenTime);
|
||||||
//对token进行存储
|
//对token进行存储
|
||||||
redisService.setCacheObject(LOGIN_USER_KEY + userId, token, tokenTime, TimeUnit.MINUTES);
|
redisService.setCacheObject(LOGIN_USER_KEY + userId, token, tokenTime, TimeUnit.MINUTES);
|
||||||
SysUser sysUser = new SysUser();
|
SysUser sysUser = new SysUser();
|
||||||
|
|
@ -121,9 +122,14 @@ public class TokenService {
|
||||||
rspMap.put("staffId", loginUser.getUserid());
|
rspMap.put("staffId", loginUser.getUserid());
|
||||||
rspMap.put("staffName", loginUser.getSysUser().getNickName());
|
rspMap.put("staffName", loginUser.getSysUser().getNickName());
|
||||||
rspMap.put("mobile", loginUser.getSysUser().getPhonenumber());
|
rspMap.put("mobile", loginUser.getSysUser().getPhonenumber());
|
||||||
long tokenTime = getTokenTime();
|
long tokenTime = getKitchenTokenTime();
|
||||||
|
System.err.println("tokenTime="+tokenTime);
|
||||||
//对token进行存储
|
//对token进行存储
|
||||||
redisService.setCacheObject(LOGIN_STAFF_KEY + userId, token, tokenTime, TimeUnit.MINUTES);
|
redisService.setCacheObject(LOGIN_STAFF_KEY + userId, token, tokenTime, TimeUnit.MINUTES);
|
||||||
|
// 验证设置
|
||||||
|
Long actualExpire = redisService.getExpire(LOGIN_STAFF_KEY + userId);
|
||||||
|
log.info("期望过期时间: {}分钟, 实际过期时间: {}秒",
|
||||||
|
tokenTime*60, actualExpire);
|
||||||
return rspMap;
|
return rspMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -253,4 +259,22 @@ public class TokenService {
|
||||||
}
|
}
|
||||||
return tokenTime;
|
return tokenTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Long getKitchenTokenTime(){
|
||||||
|
long tokenTime = 20L;
|
||||||
|
String redisResult = redisService.getCacheObject("sys_config:"+ "sys.visit.device.tokentime");
|
||||||
|
if(StringUtils.isNotEmpty(redisResult)) {
|
||||||
|
try {
|
||||||
|
tokenTime = Long.parseLong(redisResult);
|
||||||
|
} catch (Exception e) {
|
||||||
|
tokenTime = 43200L; //MINUTES
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
Long result = systemConfig.getTokenTime();
|
||||||
|
if (!ObjectUtil.isEmpty(result)){
|
||||||
|
tokenTime = result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tokenTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限获取工具类
|
* 权限获取工具类
|
||||||
*
|
*
|
||||||
* @author bonus
|
* @author bonus
|
||||||
*/
|
*/
|
||||||
public class SecurityUtils
|
public class SecurityUtils
|
||||||
|
|
@ -83,7 +83,7 @@ public class SecurityUtils
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否为管理员
|
* 是否为管理员
|
||||||
*
|
*
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -202,6 +202,21 @@ public class SysUserController extends BaseController {
|
||||||
return R.ok(sysUserVo);
|
return R.ok(sysUserVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@InnerAuth
|
||||||
|
@GetMapping("/deviceStaff/{deviceSn}")
|
||||||
|
public R<LoginUser> getDeviceStaffInfoBySn(@PathVariable("deviceSn") String deviceSn) {
|
||||||
|
SysUser sysUser = userService.getDeviceStaffInfoBySn(deviceSn);
|
||||||
|
if (StringUtils.isNull(sysUser)) {
|
||||||
|
return R.fail("用户名或密码错误");
|
||||||
|
}
|
||||||
|
// 权限集合
|
||||||
|
Set<String> permissions = permissionService.getDevicePermission(sysUser);
|
||||||
|
LoginUser sysUserVo = new LoginUser();
|
||||||
|
sysUserVo.setSysUser(sysUser);
|
||||||
|
sysUserVo.setPermissions(permissions);
|
||||||
|
return R.ok(sysUserVo);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前用户信息
|
* 获取当前用户信息
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -160,4 +160,6 @@ public interface SysUserMapper {
|
||||||
int systemUpdateUser(SysUser user);
|
int systemUpdateUser(SysUser user);
|
||||||
|
|
||||||
List<Long> selectBindUserIds();
|
List<Long> selectBindUserIds();
|
||||||
|
|
||||||
|
SysUser getDeviceStaffInfoBySn(String encrypt);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -245,4 +245,5 @@ public interface ISysUserService {
|
||||||
public AjaxResult systemUpdateUser(SysUser user);
|
public AjaxResult systemUpdateUser(SysUser user);
|
||||||
|
|
||||||
|
|
||||||
|
SysUser getDeviceStaffInfoBySn(String photoNumber);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -206,6 +206,15 @@ public class SysUserServiceImpl implements ISysUserService {
|
||||||
return sysUser;
|
return sysUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SysUser getDeviceStaffInfoBySn(String deviceSn) {
|
||||||
|
SysUser sysUser = userMapper.getDeviceStaffInfoBySn(Sm4Utils.encrypt(deviceSn));
|
||||||
|
if (Objects.isNull(sysUser)) {
|
||||||
|
sysUser = userMapper.getDeviceStaffInfoBySn(deviceSn);
|
||||||
|
}
|
||||||
|
return sysUser;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名查询用户
|
* 通过用户名查询用户
|
||||||
*
|
*
|
||||||
|
|
@ -420,7 +429,28 @@ public class SysUserServiceImpl implements ISysUserService {
|
||||||
insertUserPost(user);
|
insertUserPost(user);
|
||||||
// 同步更新user face数据
|
// 同步更新user face数据
|
||||||
try {
|
try {
|
||||||
uploadUserFace(user);
|
SysUser su = userMapper.selectUserById(user.getUserId());
|
||||||
|
String oldPhoto = su.getPhotoUrl();
|
||||||
|
String newPhoto = user.getPhotoUrl();
|
||||||
|
if(Objects.nonNull(oldPhoto) && Objects.nonNull(newPhoto)){
|
||||||
|
int oldPhotoIndex = oldPhoto.indexOf("uploads");
|
||||||
|
int newPhotoIndex = newPhoto.indexOf("uploads");
|
||||||
|
System.err.println("oldPhotoIndex="+oldPhotoIndex);
|
||||||
|
System.err.println("newPhotoIndex="+newPhotoIndex);
|
||||||
|
//都有值,可能人脸已经换了
|
||||||
|
String oldPhotoUrl = oldPhoto.substring(oldPhotoIndex);
|
||||||
|
String newPhotoUrl = newPhoto.substring(newPhotoIndex);
|
||||||
|
if(!oldPhotoUrl.equals(newPhotoUrl)){
|
||||||
|
System.err.println("人脸更新喽~~~~~~");
|
||||||
|
uploadUserFace(user);
|
||||||
|
}else{
|
||||||
|
System.err.println("人脸没更新!!!!!");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
System.err.println("变更人脸信息");
|
||||||
|
//一个有数据 一个无数据 必定更新
|
||||||
|
uploadUserFace(user);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("同步更新user face数据失败", e.getMessage());
|
log.error("同步更新user face数据失败", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.bonus.system.mapper.SysUserMapper">
|
<mapper namespace="com.bonus.system.mapper.SysUserMapper">
|
||||||
|
|
||||||
<resultMap type="SysUser" id="SysUserResult">
|
<resultMap type="com.bonus.system.api.domain.SysUser" id="SysUserResult">
|
||||||
<id property="userId" column="user_id"/>
|
<id property="userId" column="user_id"/>
|
||||||
<id property="userCode" column="user_code"/>
|
<id property="userCode" column="user_code"/>
|
||||||
<result property="deptId" column="dept_id"/>
|
<result property="deptId" column="dept_id"/>
|
||||||
|
|
@ -35,6 +35,8 @@
|
||||||
<result property="isBuiltIn" column="is_built_in"/>
|
<result property="isBuiltIn" column="is_built_in"/>
|
||||||
<result property="effectiveStartDay" column="effective_start_day"/>
|
<result property="effectiveStartDay" column="effective_start_day"/>
|
||||||
<result property="effectiveEndDay" column="effective_end_day"/>
|
<result property="effectiveEndDay" column="effective_end_day"/>
|
||||||
|
<result property="features" column="features"/>
|
||||||
|
|
||||||
<association property="dept" javaType="SysDept" resultMap="deptResult"/>
|
<association property="dept" javaType="SysDept" resultMap="deptResult"/>
|
||||||
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
|
<collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
|
||||||
|
|
||||||
|
|
@ -129,6 +131,10 @@
|
||||||
r.data_scope,
|
r.data_scope,
|
||||||
r.status as role_status,
|
r.status as role_status,
|
||||||
uf.photo_url,
|
uf.photo_url,
|
||||||
|
CASE
|
||||||
|
WHEN uf.features IS NOT NULL AND uf.features != '' THEN '1'
|
||||||
|
ELSE '0'
|
||||||
|
END AS features,
|
||||||
CASE
|
CASE
|
||||||
WHEN uf.photo_url is not null THEN '1'
|
WHEN uf.photo_url is not null THEN '1'
|
||||||
WHEN u.photo_url is null THEN '0'
|
WHEN u.photo_url is null THEN '0'
|
||||||
|
|
@ -435,4 +441,15 @@
|
||||||
select supplier_user_id from ims_supplier WHERE del_flag = '0'
|
select supplier_user_id from ims_supplier WHERE del_flag = '0'
|
||||||
group by supplier_id
|
group by supplier_id
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getDeviceStaffInfoBySn" resultType="com.bonus.system.api.domain.SysUser">
|
||||||
|
select device_id as user_id,
|
||||||
|
device_sn as phonenumber,
|
||||||
|
device_name as user_name,
|
||||||
|
device_type as nick_name,
|
||||||
|
device_state as sex, device_pwd
|
||||||
|
from device_info
|
||||||
|
|
||||||
|
where device_sn = #{deviceSn}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue