Commit 6ae677c5 by hewei

Merge branch 'double_realm_test' into 'master'

完成商家CMS权限配置

See merge request hewei/Jumeirah!5
parents acd56a12 57fea55b
package com.jumeirah.api.app.controller; package com.jumeirah.api.app.controller;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -15,7 +14,6 @@ import java.io.IOException; ...@@ -15,7 +14,6 @@ import java.io.IOException;
/** /**
* Hello World Controller * Hello World Controller
*
**/ **/
@Slf4j @Slf4j
@Api(value = "Hello World2", tags = {"APP Hello World2"}) @Api(value = "Hello World2", tags = {"APP Hello World2"})
...@@ -46,6 +44,7 @@ public class AppHelloWorldController { ...@@ -46,6 +44,7 @@ public class AppHelloWorldController {
log.debug("Hello World...app"); log.debug("Hello World...app");
return ApiResult.ok("Hello World app"); return ApiResult.ok("Hello World app");
} }
@GetMapping(value = "/needRoleAdmin") @GetMapping(value = "/needRoleAdmin")
@OperationLog(name = "needRoleAdmin") @OperationLog(name = "needRoleAdmin")
@ApiOperation(value = "needRoleAdmin", response = String.class) @ApiOperation(value = "needRoleAdmin", response = String.class)
......
...@@ -2,5 +2,5 @@ package com.jumeirah.api.app.service; ...@@ -2,5 +2,5 @@ package com.jumeirah.api.app.service;
public interface AppRegisterService { public interface AppRegisterService {
void regiest(); void regiest();
} }
package com.jumeirah.api.merchant.controller; package com.jumeirah.api.merchant.controller;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -6,6 +5,8 @@ import io.geekidea.springbootplus.framework.log.annotation.OperationLog; ...@@ -6,6 +5,8 @@ import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -14,7 +15,6 @@ import java.io.IOException; ...@@ -14,7 +15,6 @@ import java.io.IOException;
/** /**
* Hello World Controller * Hello World Controller
*
**/ **/
@Slf4j @Slf4j
@Api(value = "Hello World2", tags = {"商户Hello World2"}) @Api(value = "Hello World2", tags = {"商户Hello World2"})
...@@ -22,12 +22,6 @@ import java.io.IOException; ...@@ -22,12 +22,6 @@ import java.io.IOException;
@RequestMapping("/merchant/") @RequestMapping("/merchant/")
public class MerchantHelloWorldController { public class MerchantHelloWorldController {
/**
* Hello World
*
* @return
* @throws IOException
*/
@GetMapping(value = "/world") @GetMapping(value = "/world")
@OperationLog(name = "helloWorld") @OperationLog(name = "helloWorld")
@ApiOperation(value = "Hello World", response = String.class) @ApiOperation(value = "Hello World", response = String.class)
...@@ -36,4 +30,38 @@ public class MerchantHelloWorldController { ...@@ -36,4 +30,38 @@ public class MerchantHelloWorldController {
return ApiResult.ok("Hello World app merchant"); return ApiResult.ok("Hello World app merchant");
} }
@GetMapping(value = "/needRole")
@OperationLog(name = "needRole")
@ApiOperation(value = "needRole", response = String.class)
public ApiResult<String> needRole() throws IOException {
log.debug("Hello World...app");
return ApiResult.ok("Hello World app");
}
@GetMapping(value = "/needRoleAdmin")
@OperationLog(name = "needRoleAdmin")
@ApiOperation(value = "needRoleAdmin", response = String.class)
@RequiresPermissions("mer:admin")
public ApiResult<String> needRoleAdmin() throws IOException {
log.debug("Hello World...app");
return ApiResult.ok("Hello World needRoleAdmin");
}
@GetMapping(value = "/needRoleAll")
@OperationLog(name = "needRoleAll")
@ApiOperation(value = "needRoleAll", response = String.class)
@RequiresRoles("app:all")
public ApiResult<String> needRoleAll() throws IOException {
log.debug("Hello World...app");
return ApiResult.ok("Hello World needRoleAll");
}
@GetMapping(value = "/noRole")
@OperationLog(name = "noRole")
@ApiOperation(value = "noRole", response = String.class)
public ApiResult<String> noRole() throws IOException {
log.debug("Hello World...app");
return ApiResult.ok("Hello World app noRole");
}
} }
package com.jumeirah.api.merchant.controller;
import com.jumeirah.common.entity.MerchantPermission;
import com.jumeirah.common.param.MerchantPermissionPageParam;
import com.jumeirah.common.service.MerchantPermissionService;
import com.jumeirah.common.vo.MerchantPermissionQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 商家权限 控制器
*
* @author wei
* @since 2020-09-27
*/
@Slf4j
@RestController
@RequestMapping("/merchantPermission")
@Module("${cfg.module}")
@Api(value = "商家权限API", tags = {"商家权限"})
public class MerchantPermissionController extends BaseController {
@Autowired
private MerchantPermissionService merchantPermissionService;
/**
* 添加商家权限
*/
@PostMapping("/add")
@OperationLog(name = "添加商家权限", type = OperationLogType.ADD)
@ApiOperation(value = "添加商家权限", response = ApiResult.class)
public ApiResult<Boolean> addMerchantPermission(@Validated(Add.class) @RequestBody MerchantPermission merchantPermission) throws Exception {
boolean flag = merchantPermissionService.saveMerchantPermission(merchantPermission);
return ApiResult.result(flag);
}
/**
* 修改商家权限
*/
@PostMapping("/update")
@OperationLog(name = "修改商家权限", type = OperationLogType.UPDATE)
@ApiOperation(value = "修改商家权限", response = ApiResult.class)
public ApiResult<Boolean> updateMerchantPermission(@Validated(Update.class) @RequestBody MerchantPermission merchantPermission) throws Exception {
boolean flag = merchantPermissionService.updateMerchantPermission(merchantPermission);
return ApiResult.result(flag);
}
/**
* 删除商家权限
*/
@PostMapping("/delete/{id}")
@OperationLog(name = "删除商家权限", type = OperationLogType.DELETE)
@ApiOperation(value = "删除商家权限", response = ApiResult.class)
public ApiResult<Boolean> deleteMerchantPermission(@PathVariable("id") Long id) throws Exception {
boolean flag = merchantPermissionService.deleteMerchantPermission(id);
return ApiResult.result(flag);
}
/**
* 获取商家权限详情
*/
@GetMapping("/info/{id}")
@OperationLog(name = "商家权限详情", type = OperationLogType.INFO)
@ApiOperation(value = "商家权限详情", response = MerchantPermissionQueryVo.class)
public ApiResult<MerchantPermissionQueryVo> getMerchantPermission(@PathVariable("id") Long id) throws Exception {
MerchantPermissionQueryVo merchantPermissionQueryVo = merchantPermissionService.getMerchantPermissionById(id);
return ApiResult.ok(merchantPermissionQueryVo);
}
/**
* 商家权限分页列表
*/
@PostMapping("/getPageList")
@OperationLog(name = "商家权限分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "商家权限分页列表", response = MerchantPermissionQueryVo.class)
public ApiResult<Paging<MerchantPermissionQueryVo>> getMerchantPermissionPageList(@Validated @RequestBody MerchantPermissionPageParam merchantPermissionPageParam) throws Exception {
Paging<MerchantPermissionQueryVo> paging = merchantPermissionService.getMerchantPermissionPageList(merchantPermissionPageParam);
return ApiResult.ok(paging);
}
}
...@@ -52,12 +52,11 @@ public class MerchantRegisterController { ...@@ -52,12 +52,11 @@ public class MerchantRegisterController {
@Autowired @Autowired
private SysRegisterService registerService; private SysRegisterService registerService;
@PostMapping("/register") @PostMapping("/register")
@OperationLogIgnore @OperationLogIgnore
@ApiOperation(value = "注册", notes = "商户注册", response = LoginSysUserTokenVo.class) @ApiOperation(value = "注册", notes = "商户注册", response = LoginSysUserTokenVo.class)
public ApiResult<LoginSysUserTokenVo> register(@Validated @RequestBody RegisterParam registerParam, HttpServletResponse response, @RequestHeader(required = false) String language) throws Exception { public ApiResult<LoginSysUserTokenVo> register(@Validated @RequestBody RegisterParam registerParam, HttpServletResponse response, @RequestHeader(required = false) String language) throws Exception {
return registerService.register(registerParam, response,language); return registerService.register(registerParam, response, language);
} }
} }
package com.jumeirah.api.merchant.controller;
import com.jumeirah.common.entity.MerchantRole;
import com.jumeirah.common.param.MerchantRolePageParam;
import com.jumeirah.common.service.MerchantRoleService;
import com.jumeirah.common.vo.MerchantRoleQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 商家角色 控制器
*
* @author wei
* @since 2020-09-27
*/
@Slf4j
@RestController
@RequestMapping("/merchantRole")
@Module("${cfg.module}")
@Api(value = "商家角色API", tags = {"商家角色"})
public class MerchantRoleController extends BaseController {
@Autowired
private MerchantRoleService merchantRoleService;
/**
* 添加商家角色
*/
@PostMapping("/add")
@OperationLog(name = "添加商家角色", type = OperationLogType.ADD)
@ApiOperation(value = "添加商家角色", response = ApiResult.class)
public ApiResult<Boolean> addMerchantRole(@Validated(Add.class) @RequestBody MerchantRole merchantRole) throws Exception {
boolean flag = merchantRoleService.saveMerchantRole(merchantRole);
return ApiResult.result(flag);
}
/**
* 修改商家角色
*/
@PostMapping("/update")
@OperationLog(name = "修改商家角色", type = OperationLogType.UPDATE)
@ApiOperation(value = "修改商家角色", response = ApiResult.class)
public ApiResult<Boolean> updateMerchantRole(@Validated(Update.class) @RequestBody MerchantRole merchantRole) throws Exception {
boolean flag = merchantRoleService.updateMerchantRole(merchantRole);
return ApiResult.result(flag);
}
/**
* 删除商家角色
*/
@PostMapping("/delete/{id}")
@OperationLog(name = "删除商家角色", type = OperationLogType.DELETE)
@ApiOperation(value = "删除商家角色", response = ApiResult.class)
public ApiResult<Boolean> deleteMerchantRole(@PathVariable("id") Long id) throws Exception {
boolean flag = merchantRoleService.deleteMerchantRole(id);
return ApiResult.result(flag);
}
/**
* 获取商家角色详情
*/
@GetMapping("/info/{id}")
@OperationLog(name = "商家角色详情", type = OperationLogType.INFO)
@ApiOperation(value = "商家角色详情", response = MerchantRoleQueryVo.class)
public ApiResult<MerchantRoleQueryVo> getMerchantRole(@PathVariable("id") Long id) throws Exception {
MerchantRoleQueryVo merchantRoleQueryVo = merchantRoleService.getMerchantRoleById(id);
return ApiResult.ok(merchantRoleQueryVo);
}
/**
* 商家角色分页列表
*/
@PostMapping("/getPageList")
@OperationLog(name = "商家角色分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "商家角色分页列表", response = MerchantRoleQueryVo.class)
public ApiResult<Paging<MerchantRoleQueryVo>> getMerchantRolePageList(@Validated @RequestBody MerchantRolePageParam merchantRolePageParam) throws Exception {
Paging<MerchantRoleQueryVo> paging = merchantRoleService.getMerchantRolePageList(merchantRolePageParam);
return ApiResult.ok(paging);
}
}
package com.jumeirah.api.merchant.controller;
import com.jumeirah.common.entity.MerchantRolePermission;
import com.jumeirah.common.param.MerchantRolePermissionPageParam;
import com.jumeirah.common.service.MerchantRolePermissionService;
import com.jumeirah.common.vo.MerchantRolePermissionQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 商家角色权限关系 控制器
*
* @author wei
* @since 2020-09-27
*/
@Slf4j
@RestController
@RequestMapping("/merchantRolePermission")
@Module("${cfg.module}")
@Api(value = "商家角色权限关系API", tags = {"商家角色权限关系"})
public class MerchantRolePermissionController extends BaseController {
@Autowired
private MerchantRolePermissionService merchantRolePermissionService;
/**
* 添加商家角色权限关系
*/
@PostMapping("/add")
@OperationLog(name = "添加商家角色权限关系", type = OperationLogType.ADD)
@ApiOperation(value = "添加商家角色权限关系", response = ApiResult.class)
public ApiResult<Boolean> addMerchantRolePermission(@Validated(Add.class) @RequestBody MerchantRolePermission merchantRolePermission) throws Exception {
boolean flag = merchantRolePermissionService.saveMerchantRolePermission(merchantRolePermission);
return ApiResult.result(flag);
}
/**
* 修改商家角色权限关系
*/
@PostMapping("/update")
@OperationLog(name = "修改商家角色权限关系", type = OperationLogType.UPDATE)
@ApiOperation(value = "修改商家角色权限关系", response = ApiResult.class)
public ApiResult<Boolean> updateMerchantRolePermission(@Validated(Update.class) @RequestBody MerchantRolePermission merchantRolePermission) throws Exception {
boolean flag = merchantRolePermissionService.updateMerchantRolePermission(merchantRolePermission);
return ApiResult.result(flag);
}
/**
* 删除商家角色权限关系
*/
@PostMapping("/delete/{id}")
@OperationLog(name = "删除商家角色权限关系", type = OperationLogType.DELETE)
@ApiOperation(value = "删除商家角色权限关系", response = ApiResult.class)
public ApiResult<Boolean> deleteMerchantRolePermission(@PathVariable("id") Long id) throws Exception {
boolean flag = merchantRolePermissionService.deleteMerchantRolePermission(id);
return ApiResult.result(flag);
}
/**
* 获取商家角色权限关系详情
*/
@GetMapping("/info/{id}")
@OperationLog(name = "商家角色权限关系详情", type = OperationLogType.INFO)
@ApiOperation(value = "商家角色权限关系详情", response = MerchantRolePermissionQueryVo.class)
public ApiResult<MerchantRolePermissionQueryVo> getMerchantRolePermission(@PathVariable("id") Long id) throws Exception {
MerchantRolePermissionQueryVo merchantRolePermissionQueryVo = merchantRolePermissionService.getMerchantRolePermissionById(id);
return ApiResult.ok(merchantRolePermissionQueryVo);
}
/**
* 商家角色权限关系分页列表
*/
@PostMapping("/getPageList")
@OperationLog(name = "商家角色权限关系分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "商家角色权限关系分页列表", response = MerchantRolePermissionQueryVo.class)
public ApiResult<Paging<MerchantRolePermissionQueryVo>> getMerchantRolePermissionPageList(@Validated @RequestBody MerchantRolePermissionPageParam merchantRolePermissionPageParam) throws Exception {
Paging<MerchantRolePermissionQueryVo> paging = merchantRolePermissionService.getMerchantRolePermissionPageList(merchantRolePermissionPageParam);
return ApiResult.ok(paging);
}
}
package com.jumeirah.api.merchant.controller;
import com.jumeirah.common.entity.MerchantUser;
import com.jumeirah.common.param.LoginParam;
import com.jumeirah.common.param.MerchantUserPageParam;
import com.jumeirah.common.service.MerchantUserService;
import com.jumeirah.common.vo.LoginSysUserTokenVo;
import com.jumeirah.common.vo.MerchantUserQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.annotation.OperationLogIgnore;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
/**
* 商家 控制器
*
* @author wei
* @since 2020-09-27
*/
@Slf4j
@RestController
@RequestMapping("/merchantUser")
@Module("${cfg.module}")
@Api(value = "商家API", tags = {"商家"})
public class MerchantUserController extends BaseController {
@Autowired
private MerchantUserService merchantUserService;
/**
* 添加商家
*/
@PostMapping("/add")
@OperationLog(name = "添加商家", type = OperationLogType.ADD)
@ApiOperation(value = "添加商家", response = ApiResult.class)
public ApiResult<Boolean> addMerchantUser(@Validated(Add.class) @RequestBody MerchantUser merchantUser) throws Exception {
boolean flag = merchantUserService.saveMerchantUser(merchantUser);
return ApiResult.result(flag);
}
/**
* 修改商家
*/
@PostMapping("/update")
@OperationLog(name = "修改商家", type = OperationLogType.UPDATE)
@ApiOperation(value = "修改商家", response = ApiResult.class)
public ApiResult<Boolean> updateMerchantUser(@Validated(Update.class) @RequestBody MerchantUser merchantUser) throws Exception {
boolean flag = merchantUserService.updateMerchantUser(merchantUser);
return ApiResult.result(flag);
}
/**
* 删除商家
*/
@PostMapping("/delete/{id}")
@OperationLog(name = "删除商家", type = OperationLogType.DELETE)
@ApiOperation(value = "删除商家", response = ApiResult.class)
public ApiResult<Boolean> deleteMerchantUser(@PathVariable("id") Long id) throws Exception {
boolean flag = merchantUserService.deleteMerchantUser(id);
return ApiResult.result(flag);
}
/**
* 获取商家详情
*/
@GetMapping("/info/{id}")
@OperationLog(name = "商家详情", type = OperationLogType.INFO)
@ApiOperation(value = "商家详情", response = MerchantUserQueryVo.class)
public ApiResult<MerchantUserQueryVo> getMerchantUser(@PathVariable("id") Long id) throws Exception {
MerchantUserQueryVo merchantUserQueryVo = merchantUserService.getMerchantUserById(id);
return ApiResult.ok(merchantUserQueryVo);
}
/**
* 商家分页列表
*/
@PostMapping("/getPageList")
@OperationLog(name = "商家分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "商家分页列表", response = MerchantUserQueryVo.class)
public ApiResult<Paging<MerchantUserQueryVo>> getMerchantUserPageList(@Validated @RequestBody MerchantUserPageParam merchantUserPageParam) throws Exception {
Paging<MerchantUserQueryVo> paging = merchantUserService.getMerchantUserPageList(merchantUserPageParam);
return ApiResult.ok(paging);
}
@PostMapping("/login")
@OperationLogIgnore
@ApiOperation(value = "登录", notes = "商家登录", response = LoginSysUserTokenVo.class)
public ApiResult<LoginSysUserTokenVo> login(@Validated @RequestBody LoginParam loginParam, HttpServletResponse response, @RequestHeader(required = false) String language) throws Exception {
return merchantUserService.login(loginParam, response, language);
}
}
...@@ -16,17 +16,17 @@ ...@@ -16,17 +16,17 @@
package com.jumeirah.api.system.controller; package com.jumeirah.api.system.controller;
import com.jumeirah.common.entity.SysDepartment;
import com.jumeirah.common.param.SysDepartmentPageParam;
import com.jumeirah.common.service.SysDepartmentService;
import com.jumeirah.common.vo.SysDepartmentQueryVo;
import com.jumeirah.common.vo.SysDepartmentTreeVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.log.annotation.Module; import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog; import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType; import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import com.jumeirah.common.entity.SysDepartment;
import com.jumeirah.common.param.SysDepartmentPageParam;
import com.jumeirah.common.service.SysDepartmentService;
import com.jumeirah.common.vo.SysDepartmentQueryVo;
import com.jumeirah.common.vo.SysDepartmentTreeVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
...@@ -16,18 +16,18 @@ ...@@ -16,18 +16,18 @@
package com.jumeirah.api.system.controller; package com.jumeirah.api.system.controller;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import com.jumeirah.common.entity.SysPermission; import com.jumeirah.common.entity.SysPermission;
import com.jumeirah.common.param.SysPermissionPageParam; import com.jumeirah.common.param.SysPermissionPageParam;
import com.jumeirah.common.service.SysPermissionService; import com.jumeirah.common.service.SysPermissionService;
import com.jumeirah.common.service.SysRolePermissionService; import com.jumeirah.common.service.SysRolePermissionService;
import com.jumeirah.common.vo.SysPermissionQueryVo; import com.jumeirah.common.vo.SysPermissionQueryVo;
import com.jumeirah.common.vo.SysPermissionTreeVo; import com.jumeirah.common.vo.SysPermissionTreeVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
...@@ -16,6 +16,10 @@ ...@@ -16,6 +16,10 @@
package com.jumeirah.api.system.controller; package com.jumeirah.api.system.controller;
import com.jumeirah.common.entity.SysRole;
import com.jumeirah.common.param.sysrole.SysRolePageParam;
import com.jumeirah.common.param.sysrole.UpdateSysRolePermissionParam;
import com.jumeirah.common.service.SysRoleService;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -24,10 +28,6 @@ import io.geekidea.springbootplus.framework.core.validator.groups.Update; ...@@ -24,10 +28,6 @@ import io.geekidea.springbootplus.framework.core.validator.groups.Update;
import io.geekidea.springbootplus.framework.log.annotation.Module; import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog; import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType; import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import com.jumeirah.common.entity.SysRole;
import com.jumeirah.common.param.sysrole.SysRolePageParam;
import com.jumeirah.common.param.sysrole.UpdateSysRolePermissionParam;
import com.jumeirah.common.service.SysRoleService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
...@@ -16,6 +16,13 @@ ...@@ -16,6 +16,13 @@
package com.jumeirah.api.system.controller; package com.jumeirah.api.system.controller;
import com.jumeirah.common.entity.SysUser;
import com.jumeirah.common.param.sysuser.ResetPasswordParam;
import com.jumeirah.common.param.sysuser.SysUserPageParam;
import com.jumeirah.common.param.sysuser.UpdatePasswordParam;
import com.jumeirah.common.param.sysuser.UploadHeadParam;
import com.jumeirah.common.service.SysUserService;
import com.jumeirah.common.vo.SysUserQueryVo;
import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties; import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
...@@ -25,13 +32,6 @@ import io.geekidea.springbootplus.framework.core.validator.groups.Update; ...@@ -25,13 +32,6 @@ import io.geekidea.springbootplus.framework.core.validator.groups.Update;
import io.geekidea.springbootplus.framework.log.annotation.Module; import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog; import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType; import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import com.jumeirah.common.entity.SysUser;
import com.jumeirah.common.param.sysuser.ResetPasswordParam;
import com.jumeirah.common.param.sysuser.SysUserPageParam;
import com.jumeirah.common.param.sysuser.UpdatePasswordParam;
import com.jumeirah.common.param.sysuser.UploadHeadParam;
import com.jumeirah.common.service.SysUserService;
import com.jumeirah.common.vo.SysUserQueryVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
......
...@@ -16,11 +16,8 @@ ...@@ -16,11 +16,8 @@
package io.geekidea.springbootplus.config; package io.geekidea.springbootplus.config;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
...@@ -30,9 +27,7 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; ...@@ -30,9 +27,7 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
import io.geekidea.springbootplus.config.constant.DatePattern; import io.geekidea.springbootplus.config.constant.DatePattern;
import io.geekidea.springbootplus.framework.config.jackson.deserializer.JacksonDateDeserializer;
import io.geekidea.springbootplus.framework.config.jackson.deserializer.JacksonDoubleDeserializer; import io.geekidea.springbootplus.framework.config.jackson.deserializer.JacksonDoubleDeserializer;
import io.geekidea.springbootplus.framework.config.jackson.serializer.JacksonDateSerializer;
import io.geekidea.springbootplus.framework.config.jackson.serializer.JacksonIntegerDeserializer; import io.geekidea.springbootplus.framework.config.jackson.serializer.JacksonIntegerDeserializer;
import io.geekidea.springbootplus.framework.core.xss.XssJacksonDeserializer; import io.geekidea.springbootplus.framework.core.xss.XssJacksonDeserializer;
import io.geekidea.springbootplus.framework.core.xss.XssJacksonSerializer; import io.geekidea.springbootplus.framework.core.xss.XssJacksonSerializer;
...@@ -46,7 +41,6 @@ import java.time.LocalDate; ...@@ -46,7 +41,6 @@ import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
......
...@@ -211,7 +211,7 @@ public class ShiroConfig { ...@@ -211,7 +211,7 @@ public class ShiroConfig {
shiroFilterFactoryBean.setSecurityManager(securityManager); shiroFilterFactoryBean.setSecurityManager(securityManager);
// 设置过滤器 // 设置过滤器
Map<String, Filter> filterMap = getFilterMap(shiroLoginService, sysLoginRedisService, jwtProperties,redisTemplate); Map<String, Filter> filterMap = getFilterMap(shiroLoginService, sysLoginRedisService, jwtProperties, redisTemplate);
shiroFilterFactoryBean.setFilters(filterMap); shiroFilterFactoryBean.setFilters(filterMap);
// 设置过滤器顺序 // 设置过滤器顺序
Map<String, String> filterChainMap = getFilterChainDefinitionMap(shiroProperties); Map<String, String> filterChainMap = getFilterChainDefinitionMap(shiroProperties);
......
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
package io.geekidea.springbootplus.config; package io.geekidea.springbootplus.config;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.jumeirah.common.interceptor.DownloadInterceptor;
import com.jumeirah.common.interceptor.ResourceInterceptor;
import com.jumeirah.common.interceptor.UploadInterceptor;
import io.geekidea.springbootplus.config.properties.SpringBootPlusFilterProperties; import io.geekidea.springbootplus.config.properties.SpringBootPlusFilterProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusInterceptorProperties; import io.geekidea.springbootplus.config.properties.SpringBootPlusInterceptorProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties; import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties;
...@@ -24,9 +27,6 @@ import io.geekidea.springbootplus.framework.core.filter.RequestDetailFilter; ...@@ -24,9 +27,6 @@ import io.geekidea.springbootplus.framework.core.filter.RequestDetailFilter;
import io.geekidea.springbootplus.framework.core.interceptor.PermissionInterceptor; import io.geekidea.springbootplus.framework.core.interceptor.PermissionInterceptor;
import io.geekidea.springbootplus.framework.core.xss.XssFilter; import io.geekidea.springbootplus.framework.core.xss.XssFilter;
import io.geekidea.springbootplus.framework.util.IniUtil; import io.geekidea.springbootplus.framework.util.IniUtil;
import com.jumeirah.common.interceptor.DownloadInterceptor;
import com.jumeirah.common.interceptor.ResourceInterceptor;
import com.jumeirah.common.interceptor.UploadInterceptor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
...@@ -18,6 +18,8 @@ package io.geekidea.springbootplus.handler; ...@@ -18,6 +18,8 @@ package io.geekidea.springbootplus.handler;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.auth0.jwt.exceptions.JWTDecodeException; import com.auth0.jwt.exceptions.JWTDecodeException;
import com.jumeirah.common.exception.SysLoginException;
import com.jumeirah.common.exception.VerificationCodeException;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.exception.BusinessException; import io.geekidea.springbootplus.framework.common.exception.BusinessException;
...@@ -25,8 +27,6 @@ import io.geekidea.springbootplus.framework.common.exception.DaoException; ...@@ -25,8 +27,6 @@ import io.geekidea.springbootplus.framework.common.exception.DaoException;
import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException; import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException;
import io.geekidea.springbootplus.framework.core.bean.RequestDetail; import io.geekidea.springbootplus.framework.core.bean.RequestDetail;
import io.geekidea.springbootplus.framework.core.util.RequestDetailThreadLocal; import io.geekidea.springbootplus.framework.core.util.RequestDetailThreadLocal;
import com.jumeirah.common.exception.SysLoginException;
import com.jumeirah.common.exception.VerificationCodeException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authz.UnauthenticatedException; import org.apache.shiro.authz.UnauthenticatedException;
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.jumeirah.common.convert; package com.jumeirah.common.convert;
import com.jumeirah.common.entity.MerchantUser;
import com.jumeirah.common.entity.SysUser; import com.jumeirah.common.entity.SysUser;
import io.geekidea.springbootplus.framework.shiro.vo.LoginSysUserVo; import io.geekidea.springbootplus.framework.shiro.vo.LoginSysUserVo;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
...@@ -40,4 +41,7 @@ public interface SysUserConvert { ...@@ -40,4 +41,7 @@ public interface SysUserConvert {
*/ */
LoginSysUserVo sysUserToLoginSysUserVo(SysUser sysUser); LoginSysUserVo sysUserToLoginSysUserVo(SysUser sysUser);
LoginSysUserVo merchantUserToLoginSysUserVo(MerchantUser sysUser);
} }
package com.jumeirah.common.entity; package com.jumeirah.common.entity;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.Version;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Date;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
/** /**
* APP用户 * APP用户
...@@ -24,65 +24,65 @@ import io.geekidea.springbootplus.framework.core.validator.groups.Update; ...@@ -24,65 +24,65 @@ import io.geekidea.springbootplus.framework.core.validator.groups.Update;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value = "AppUser对象") @ApiModel(value = "AppUser对象")
public class AppUser extends BaseEntity { public class AppUser extends BaseEntity {
private static final long serialVersionUID=1L; private static final long serialVersionUID = 1L;
@NotNull(message = "id不能为空", groups = {Update.class}) @NotNull(message = "id不能为空", groups = {Update.class})
@ApiModelProperty("主键") @ApiModelProperty("主键")
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
@ApiModelProperty("用户名") @ApiModelProperty("用户名")
private String username; private String username;
@ApiModelProperty("昵称") @ApiModelProperty("昵称")
private String nickname; private String nickname;
@NotBlank(message = "密码不能为空") @NotBlank(message = "密码不能为空")
@ApiModelProperty("密码") @ApiModelProperty("密码")
private String password; private String password;
@ApiModelProperty("盐值") @ApiModelProperty("盐值")
private String salt; private String salt;
@ApiModelProperty("手机号码") @ApiModelProperty("手机号码")
private String phone; private String phone;
@ApiModelProperty("手机区号") @ApiModelProperty("手机区号")
private String phoneArea; private String phoneArea;
@ApiModelProperty("性别,0:女,1:男,默认1") @ApiModelProperty("性别,0:女,1:男,默认1")
private Integer gender; private Integer gender;
@ApiModelProperty("头像") @ApiModelProperty("头像")
private String head; private String head;
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String remark; private String remark;
@ApiModelProperty("状态,0:禁用,1:启用,2:锁定") @ApiModelProperty("状态,0:禁用,1:启用,2:锁定")
private Integer state; private Integer state;
@ApiModelProperty("部门id") @ApiModelProperty("部门id")
private Long departmentId; private Long departmentId;
@ApiModelProperty("角色id") @ApiModelProperty("角色id")
private Long roleId; private Long roleId;
@ApiModelProperty("逻辑删除,0:未删除,1:已删除") @ApiModelProperty("逻辑删除,0:未删除,1:已删除")
@TableLogic @TableLogic
private Integer deleted; private Integer deleted;
@ApiModelProperty("版本") @ApiModelProperty("版本")
@Version @Version
private Integer version; private Integer version;
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
private Date createTime; private Date createTime;
@ApiModelProperty("修改时间") @ApiModelProperty("修改时间")
private Date updateTime; private Date updateTime;
} }
package com.jumeirah.common.entity;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
/**
* 商家权限
*
* @author wei
* @since 2020-09-28
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "MerchantPermission对象")
public class MerchantPermission extends BaseEntity {
private static final long serialVersionUID=1L;
@NotNull(message = "id不能为空", groups = {Update.class})
@ApiModelProperty("主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("权限名称")
private String name;
@ApiModelProperty("父id")
private Long parentId;
@ApiModelProperty("路径")
private String url;
@NotBlank(message = "唯一编码不能为空")
@ApiModelProperty("唯一编码")
private String code;
@ApiModelProperty("图标")
private String icon;
@NotNull(message = "类型,1:菜单,2:按钮不能为空")
@ApiModelProperty("类型,1:菜单,2:按钮")
private Integer type;
@NotNull(message = "层级,1:第一级,2:第二级,N:第N级不能为空")
@ApiModelProperty("层级,1:第一级,2:第二级,N:第N级")
private Integer level;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
@Version
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.jumeirah.common.entity;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
/**
* 商家角色
*
* @author wei
* @since 2020-09-28
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "MerchantRole对象")
public class MerchantRole extends BaseEntity {
private static final long serialVersionUID=1L;
@NotNull(message = "id不能为空", groups = {Update.class})
@ApiModelProperty("主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@NotBlank(message = "角色名称不能为空")
@ApiModelProperty("角色名称")
private String name;
@ApiModelProperty("角色唯一编码")
private String code;
@ApiModelProperty("角色类型")
private Integer type;
@ApiModelProperty("角色状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
@Version
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.jumeirah.common.entity;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
/**
* 商家角色权限关系
*
* @author wei
* @since 2020-09-28
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "MerchantRolePermission对象")
public class MerchantRolePermission extends BaseEntity {
private static final long serialVersionUID=1L;
@NotNull(message = "id不能为空", groups = {Update.class})
@ApiModelProperty("主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@NotNull(message = "角色id不能为空")
@ApiModelProperty("角色id")
private Long roleId;
@NotNull(message = "权限id不能为空")
@ApiModelProperty("权限id")
private Long permissionId;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
@Version
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.jumeirah.common.entity;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
/**
* 商家
*
* @author wei
* @since 2020-09-28
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "MerchantUser对象")
public class MerchantUser extends BaseEntity {
private static final long serialVersionUID=1L;
@NotNull(message = "id不能为空", groups = {Update.class})
@ApiModelProperty("主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("昵称")
private String nickname;
@NotBlank(message = "密码不能为空")
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("盐值")
private String salt;
@ApiModelProperty("手机号码")
private String phone;
@ApiModelProperty("手机区号")
private String phoneArea;
@ApiModelProperty("性别,0:女,1:男,默认1")
private Integer gender;
@ApiModelProperty("头像")
private String head;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("状态,0:禁用,1:启用,2:锁定")
private Integer state;
@ApiModelProperty("部门id")
private Long departmentId;
@ApiModelProperty("角色id")
private Long roleId;
@ApiModelProperty("逻辑删除,0:未删除,1:已删除")
@TableLogic
private Integer deleted;
@ApiModelProperty("版本")
@Version
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.jumeirah.common.mapper; package com.jumeirah.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jumeirah.common.entity.AppUser; import com.jumeirah.common.entity.AppUser;
import com.jumeirah.common.param.AppUserPageParam; import com.jumeirah.common.param.AppUserPageParam;
import com.jumeirah.common.vo.AppUserQueryVo; import com.jumeirah.common.vo.AppUserQueryVo;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.io.Serializable; import java.io.Serializable;
...@@ -22,21 +20,21 @@ import java.io.Serializable; ...@@ -22,21 +20,21 @@ import java.io.Serializable;
@Repository @Repository
public interface AppUserMapper extends BaseMapper<AppUser> { public interface AppUserMapper extends BaseMapper<AppUser> {
/** /**
* 根据ID获取查询对象 * 根据ID获取查询对象
* *
* @param id * @param id
* @return * @return
*/ */
AppUserQueryVo getAppUserById(Serializable id); AppUserQueryVo getAppUserById(Serializable id);
/** /**
* 获取分页对象 * 获取分页对象
* *
* @param page * @param page
* @param appUserPageParam * @param appUserPageParam
* @return * @return
*/ */
IPage<AppUserQueryVo> getAppUserPageList(@Param("page") Page page,@Param("param") AppUserPageParam appUserPageParam); IPage<AppUserQueryVo> getAppUserPageList(@Param("page") Page page, @Param("param") AppUserPageParam appUserPageParam);
} }
package com.jumeirah.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jumeirah.common.entity.MerchantPermission;
import com.jumeirah.common.param.MerchantPermissionPageParam;
import com.jumeirah.common.vo.MerchantPermissionQueryVo;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
/**
* 商家权限 Mapper 接口
*
* @author wei
* @since 2020-09-28
*/
@Repository
public interface MerchantPermissionMapper extends BaseMapper<MerchantPermission> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
MerchantPermissionQueryVo getMerchantPermissionById(Serializable id);
/**
* 获取分页对象
*
* @param page
* @param merchantPermissionPageParam
* @return
*/
IPage<MerchantPermissionQueryVo> getMerchantPermissionPageList(@Param("page") Page page,@Param("param") MerchantPermissionPageParam merchantPermissionPageParam);
}
package com.jumeirah.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jumeirah.common.entity.MerchantRole;
import com.jumeirah.common.param.MerchantRolePageParam;
import com.jumeirah.common.vo.MerchantRoleQueryVo;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
/**
* 商家角色 Mapper 接口
*
* @author wei
* @since 2020-09-28
*/
@Repository
public interface MerchantRoleMapper extends BaseMapper<MerchantRole> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
MerchantRoleQueryVo getMerchantRoleById(Serializable id);
/**
* 获取分页对象
*
* @param page
* @param merchantRolePageParam
* @return
*/
IPage<MerchantRoleQueryVo> getMerchantRolePageList(@Param("page") Page page,@Param("param") MerchantRolePageParam merchantRolePageParam);
}
package com.jumeirah.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jumeirah.common.entity.MerchantRolePermission;
import com.jumeirah.common.param.MerchantRolePermissionPageParam;
import com.jumeirah.common.vo.MerchantRolePermissionQueryVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.io.Serializable;
import java.util.Set;
/**
* 商家角色权限关系 Mapper 接口
*
* @author wei
* @since 2020-09-28
*/
@Repository
public interface MerchantRolePermissionMapper extends BaseMapper<MerchantRolePermission> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
MerchantRolePermissionQueryVo getMerchantRolePermissionById(Serializable id);
/**
* 根据角色id获取可用的权限编码
*
* @param roleId
* @return
*/
Set<String> getPermissionCodesByRoleId(@Param("roleId") Long roleId);
/**
* 获取分页对象
*
* @param page
* @param merchantRolePermissionPageParam
* @return
*/
IPage<MerchantRolePermissionQueryVo> getMerchantRolePermissionPageList(@Param("page") Page page, @Param("param") MerchantRolePermissionPageParam merchantRolePermissionPageParam);
}
package com.jumeirah.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jumeirah.common.entity.MerchantUser;
import com.jumeirah.common.param.MerchantUserPageParam;
import com.jumeirah.common.vo.MerchantUserQueryVo;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
/**
* 商家 Mapper 接口
*
* @author wei
* @since 2020-09-28
*/
@Repository
public interface MerchantUserMapper extends BaseMapper<MerchantUser> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
MerchantUserQueryVo getMerchantUserById(Serializable id);
/**
* 获取分页对象
*
* @param page
* @param merchantUserPageParam
* @return
*/
IPage<MerchantUserQueryVo> getMerchantUserPageList(@Param("page") Page page,@Param("param") MerchantUserPageParam merchantUserPageParam);
}
...@@ -19,9 +19,9 @@ package com.jumeirah.common.mapper; ...@@ -19,9 +19,9 @@ package com.jumeirah.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jumeirah.common.entity.SysPermission;
import com.jumeirah.common.param.SysPermissionPageParam; import com.jumeirah.common.param.SysPermissionPageParam;
import com.jumeirah.common.vo.SysPermissionQueryVo; import com.jumeirah.common.vo.SysPermissionQueryVo;
import com.jumeirah.common.entity.SysPermission;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
...@@ -19,9 +19,9 @@ package com.jumeirah.common.mapper; ...@@ -19,9 +19,9 @@ package com.jumeirah.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jumeirah.common.entity.SysRole;
import com.jumeirah.common.param.sysrole.SysRolePageParam; import com.jumeirah.common.param.sysrole.SysRolePageParam;
import com.jumeirah.common.vo.SysRoleQueryVo; import com.jumeirah.common.vo.SysRoleQueryVo;
import com.jumeirah.common.entity.SysRole;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
...@@ -19,9 +19,9 @@ package com.jumeirah.common.mapper; ...@@ -19,9 +19,9 @@ package com.jumeirah.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jumeirah.common.entity.SysRolePermission;
import com.jumeirah.common.param.sysrole.SysRolePermissionPageParam; import com.jumeirah.common.param.sysrole.SysRolePermissionPageParam;
import com.jumeirah.common.vo.SysRolePermissionQueryVo; import com.jumeirah.common.vo.SysRolePermissionQueryVo;
import com.jumeirah.common.entity.SysRolePermission;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package com.jumeirah.common.param; package com.jumeirah.common.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
/** /**
* <pre> * <pre>
...@@ -18,6 +18,6 @@ import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam; ...@@ -18,6 +18,6 @@ import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
@Accessors(chain = true) @Accessors(chain = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value = "APP用户分页参数") @ApiModel(value = "APP用户分页参数")
public class AppUserPageParam extends BasePageOrderParam{ public class AppUserPageParam extends BasePageOrderParam {
private static final long serialVersionUID=1L; private static final long serialVersionUID = 1L;
} }
package com.jumeirah.common.param;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
/**
* <pre>
* 商家权限 分页参数对象
* </pre>
*
* @author wei
* @date 2020-09-28
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "商家权限分页参数")
public class MerchantPermissionPageParam extends BasePageOrderParam{
private static final long serialVersionUID=1L;
}
package com.jumeirah.common.param;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
/**
* <pre>
* 商家角色 分页参数对象
* </pre>
*
* @author wei
* @date 2020-09-28
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "商家角色分页参数")
public class MerchantRolePageParam extends BasePageOrderParam{
private static final long serialVersionUID=1L;
}
package com.jumeirah.common.param;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
/**
* <pre>
* 商家角色权限关系 分页参数对象
* </pre>
*
* @author wei
* @date 2020-09-28
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "商家角色权限关系分页参数")
public class MerchantRolePermissionPageParam extends BasePageOrderParam{
private static final long serialVersionUID=1L;
}
package com.jumeirah.common.param;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
/**
* <pre>
* 商家 分页参数对象
* </pre>
*
* @author wei
* @date 2020-09-28
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "商家分页参数")
public class MerchantUserPageParam extends BasePageOrderParam{
private static final long serialVersionUID=1L;
}
...@@ -18,55 +18,56 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging; ...@@ -18,55 +18,56 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
*/ */
public interface AppUserService extends BaseService<AppUser> { public interface AppUserService extends BaseService<AppUser> {
ApiResult<LoginSysUserTokenVo> register(RegisterParam registerParam, String language); ApiResult<LoginSysUserTokenVo> register(RegisterParam registerParam, String language);
ApiResult<LoginSysUserTokenVo> login(LoginParam loginParam, String language);
ApiResult<LoginSysUserTokenVo> login(LoginParam loginParam, String language);
ApiResult<LoginSysUserTokenVo> phoneLogin(RegisterParam registerParam, String language); ApiResult<LoginSysUserTokenVo> phoneLogin(RegisterParam registerParam, String language);
/**
* 保存
*
* @param appUser
* @return
* @throws Exception
*/
boolean saveAppUser(AppUser appUser)throws Exception;
/** /**
* 修改 * 保存
* *
* @param appUser * @param appUser
* @return * @return
* @throws Exception * @throws Exception
*/ */
boolean updateAppUser(AppUser appUser)throws Exception; boolean saveAppUser(AppUser appUser) throws Exception;
/** /**
* 删除 * 修改
* *
* @param id * @param appUser
* @return * @return
* @throws Exception * @throws Exception
*/ */
boolean deleteAppUser(Long id)throws Exception; boolean updateAppUser(AppUser appUser) throws Exception;
/** /**
* 根据ID获取查询对象 * 删除
* *
* @param id * @param id
* @return * @return
* @throws Exception * @throws Exception
*/ */
AppUserQueryVo getAppUserById(Long id)throws Exception; boolean deleteAppUser(Long id) throws Exception;
/** /**
* 获取分页对象 * 根据ID获取查询对象
* *
* @param appUserPageParam * @param id
* @return * @return
* @throws Exception * @throws Exception
*/ */
Paging<AppUserQueryVo> getAppUserPageList(AppUserPageParam appUserPageParam) throws Exception; AppUserQueryVo getAppUserById(Long id) throws Exception;
} /**
* 获取分页对象
*
* @param appUserPageParam
* @return
* @throws Exception
*/
Paging<AppUserQueryVo> getAppUserPageList(AppUserPageParam appUserPageParam) throws Exception;
}
package com.jumeirah.common.service;
import com.jumeirah.common.entity.MerchantPermission;
import com.jumeirah.common.param.MerchantPermissionPageParam;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import com.jumeirah.common.vo.MerchantPermissionQueryVo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
/**
* 商家权限 服务类
*
* @author wei
* @since 2020-09-28
*/
public interface MerchantPermissionService extends BaseService<MerchantPermission> {
/**
* 保存
*
* @param merchantPermission
* @return
* @throws Exception
*/
boolean saveMerchantPermission(MerchantPermission merchantPermission)throws Exception;
/**
* 修改
*
* @param merchantPermission
* @return
* @throws Exception
*/
boolean updateMerchantPermission(MerchantPermission merchantPermission)throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteMerchantPermission(Long id)throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
MerchantPermissionQueryVo getMerchantPermissionById(Long id)throws Exception;
/**
* 获取分页对象
*
* @param merchantPermissionPageParam
* @return
* @throws Exception
*/
Paging<MerchantPermissionQueryVo> getMerchantPermissionPageList(MerchantPermissionPageParam merchantPermissionPageParam) throws Exception;
}
package com.jumeirah.common.service;
import com.jumeirah.common.entity.MerchantRolePermission;
import com.jumeirah.common.param.MerchantRolePermissionPageParam;
import com.jumeirah.common.vo.MerchantRolePermissionQueryVo;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import java.util.Set;
/**
* 商家角色权限关系 服务类
*
* @author wei
* @since 2020-09-28
*/
public interface MerchantRolePermissionService extends BaseService<MerchantRolePermission> {
/**
* 保存
*
* @param merchantRolePermission
* @return
* @throws Exception
*/
boolean saveMerchantRolePermission(MerchantRolePermission merchantRolePermission) throws Exception;
/**
* 修改
*
* @param merchantRolePermission
* @return
* @throws Exception
*/
boolean updateMerchantRolePermission(MerchantRolePermission merchantRolePermission) throws Exception;
/**
* 根据角色id获取可用的权限编码
*
* @param roleId
* @return
* @throws Exception
*/
Set<String> getPermissionCodesByRoleId(Long roleId) throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteMerchantRolePermission(Long id) throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
MerchantRolePermissionQueryVo getMerchantRolePermissionById(Long id) throws Exception;
/**
* 获取分页对象
*
* @param merchantRolePermissionPageParam
* @return
* @throws Exception
*/
Paging<MerchantRolePermissionQueryVo> getMerchantRolePermissionPageList(MerchantRolePermissionPageParam merchantRolePermissionPageParam) throws Exception;
}
package com.jumeirah.common.service;
import com.jumeirah.common.entity.MerchantRole;
import com.jumeirah.common.param.MerchantRolePageParam;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import com.jumeirah.common.vo.MerchantRoleQueryVo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
/**
* 商家角色 服务类
*
* @author wei
* @since 2020-09-28
*/
public interface MerchantRoleService extends BaseService<MerchantRole> {
/**
* 保存
*
* @param merchantRole
* @return
* @throws Exception
*/
boolean saveMerchantRole(MerchantRole merchantRole)throws Exception;
/**
* 修改
*
* @param merchantRole
* @return
* @throws Exception
*/
boolean updateMerchantRole(MerchantRole merchantRole)throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteMerchantRole(Long id)throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
MerchantRoleQueryVo getMerchantRoleById(Long id)throws Exception;
/**
* 获取分页对象
*
* @param merchantRolePageParam
* @return
* @throws Exception
*/
Paging<MerchantRoleQueryVo> getMerchantRolePageList(MerchantRolePageParam merchantRolePageParam) throws Exception;
}
package com.jumeirah.common.service;
import com.jumeirah.common.entity.MerchantUser;
import com.jumeirah.common.param.LoginParam;
import com.jumeirah.common.param.MerchantUserPageParam;
import com.jumeirah.common.vo.LoginSysUserTokenVo;
import com.jumeirah.common.vo.MerchantUserQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import javax.servlet.http.HttpServletResponse;
/**
* 商家 服务类
*
* @author wei
* @since 2020-09-28
*/
public interface MerchantUserService extends BaseService<MerchantUser> {
/**
* 保存
*
* @param merchantUser
* @return
* @throws Exception
*/
boolean saveMerchantUser(MerchantUser merchantUser) throws Exception;
/**
* 登录
*
* @param loginParam
* @return
* @throws Exception
*/
ApiResult<LoginSysUserTokenVo> login(LoginParam loginParam, HttpServletResponse response, String language) throws Exception;
/**
* 修改
*
* @param merchantUser
* @return
* @throws Exception
*/
boolean updateMerchantUser(MerchantUser merchantUser) throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteMerchantUser(Long id) throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
MerchantUserQueryVo getMerchantUserById(Long id) throws Exception;
/**
* 获取分页对象
*
* @param merchantUserPageParam
* @return
* @throws Exception
*/
Paging<MerchantUserQueryVo> getMerchantUserPageList(MerchantUserPageParam merchantUserPageParam) throws Exception;
}
...@@ -117,7 +117,7 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser> ...@@ -117,7 +117,7 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser>
log.debug("token:{}", token); log.debug("token:{}", token);
// 创建AuthenticationToken // 创建AuthenticationToken
JwtToken jwtToken = JwtToken.build(token, username, newSalt, expireSecond,"app"); JwtToken jwtToken = JwtToken.build(token, username, newSalt, expireSecond, "app");
boolean enableShiro = springBootPlusProperties.getShiro().isEnable(); boolean enableShiro = springBootPlusProperties.getShiro().isEnable();
if (enableShiro) { if (enableShiro) {
......
package com.jumeirah.common.service.impl;
import com.jumeirah.common.entity.MerchantPermission;
import com.jumeirah.common.mapper.MerchantPermissionMapper;
import com.jumeirah.common.service.MerchantPermissionService;
import com.jumeirah.common.param.MerchantPermissionPageParam;
import com.jumeirah.common.vo.MerchantPermissionQueryVo;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 商家权限 服务实现类
*
* @author wei
* @since 2020-09-28
*/
@Slf4j
@Service
public class MerchantPermissionServiceImpl extends BaseServiceImpl<MerchantPermissionMapper, MerchantPermission> implements MerchantPermissionService {
@Autowired
private MerchantPermissionMapper merchantPermissionMapper;
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveMerchantPermission(MerchantPermission merchantPermission)throws Exception{
return super.save(merchantPermission);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateMerchantPermission(MerchantPermission merchantPermission)throws Exception{
return super.updateById(merchantPermission);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteMerchantPermission(Long id)throws Exception{
return super.removeById(id);
}
@Override
public MerchantPermissionQueryVo getMerchantPermissionById(Long id)throws Exception{
return merchantPermissionMapper.getMerchantPermissionById(id);
}
@Override
public Paging<MerchantPermissionQueryVo> getMerchantPermissionPageList(MerchantPermissionPageParam merchantPermissionPageParam)throws Exception{
Page<MerchantPermissionQueryVo> page=new PageInfo<>(merchantPermissionPageParam,OrderItem.desc(getLambdaColumn(MerchantPermission::getCreateTime)));
IPage<MerchantPermissionQueryVo> iPage= merchantPermissionMapper.getMerchantPermissionPageList(page, merchantPermissionPageParam);
return new Paging<MerchantPermissionQueryVo>(iPage);
}
}
package com.jumeirah.common.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jumeirah.common.entity.MerchantRolePermission;
import com.jumeirah.common.mapper.MerchantRolePermissionMapper;
import com.jumeirah.common.param.MerchantRolePermissionPageParam;
import com.jumeirah.common.service.MerchantRolePermissionService;
import com.jumeirah.common.vo.MerchantRolePermissionQueryVo;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Set;
/**
* 商家角色权限关系 服务实现类
*
* @author wei
* @since 2020-09-28
*/
@Slf4j
@Service
public class MerchantRolePermissionServiceImpl extends BaseServiceImpl<MerchantRolePermissionMapper, MerchantRolePermission> implements MerchantRolePermissionService {
@Autowired
private MerchantRolePermissionMapper merchantRolePermissionMapper;
@Override
public Set<String> getPermissionCodesByRoleId(Long roleId) throws Exception {
return merchantRolePermissionMapper.getPermissionCodesByRoleId(roleId);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveMerchantRolePermission(MerchantRolePermission merchantRolePermission) throws Exception {
return super.save(merchantRolePermission);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateMerchantRolePermission(MerchantRolePermission merchantRolePermission) throws Exception {
return super.updateById(merchantRolePermission);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteMerchantRolePermission(Long id) throws Exception {
return super.removeById(id);
}
@Override
public MerchantRolePermissionQueryVo getMerchantRolePermissionById(Long id) throws Exception {
return merchantRolePermissionMapper.getMerchantRolePermissionById(id);
}
@Override
public Paging<MerchantRolePermissionQueryVo> getMerchantRolePermissionPageList(MerchantRolePermissionPageParam merchantRolePermissionPageParam) throws Exception {
Page<MerchantRolePermissionQueryVo> page = new PageInfo<>(merchantRolePermissionPageParam, OrderItem.desc(getLambdaColumn(MerchantRolePermission::getCreateTime)));
IPage<MerchantRolePermissionQueryVo> iPage = merchantRolePermissionMapper.getMerchantRolePermissionPageList(page, merchantRolePermissionPageParam);
return new Paging<MerchantRolePermissionQueryVo>(iPage);
}
}
package com.jumeirah.common.service.impl;
import com.jumeirah.common.entity.MerchantRole;
import com.jumeirah.common.mapper.MerchantRoleMapper;
import com.jumeirah.common.service.MerchantRoleService;
import com.jumeirah.common.param.MerchantRolePageParam;
import com.jumeirah.common.vo.MerchantRoleQueryVo;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 商家角色 服务实现类
*
* @author wei
* @since 2020-09-28
*/
@Slf4j
@Service
public class MerchantRoleServiceImpl extends BaseServiceImpl<MerchantRoleMapper, MerchantRole> implements MerchantRoleService {
@Autowired
private MerchantRoleMapper merchantRoleMapper;
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveMerchantRole(MerchantRole merchantRole)throws Exception{
return super.save(merchantRole);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateMerchantRole(MerchantRole merchantRole)throws Exception{
return super.updateById(merchantRole);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteMerchantRole(Long id)throws Exception{
return super.removeById(id);
}
@Override
public MerchantRoleQueryVo getMerchantRoleById(Long id)throws Exception{
return merchantRoleMapper.getMerchantRoleById(id);
}
@Override
public Paging<MerchantRoleQueryVo> getMerchantRolePageList(MerchantRolePageParam merchantRolePageParam)throws Exception{
Page<MerchantRoleQueryVo> page=new PageInfo<>(merchantRolePageParam,OrderItem.desc(getLambdaColumn(MerchantRole::getCreateTime)));
IPage<MerchantRoleQueryVo> iPage= merchantRoleMapper.getMerchantRolePageList(page, merchantRolePageParam);
return new Paging<MerchantRoleQueryVo>(iPage);
}
}
package com.jumeirah.common.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jumeirah.common.convert.SysUserConvert;
import com.jumeirah.common.entity.MerchantRole;
import com.jumeirah.common.entity.MerchantUser;
import com.jumeirah.common.enums.StateEnum;
import com.jumeirah.common.mapper.MerchantUserMapper;
import com.jumeirah.common.param.LoginParam;
import com.jumeirah.common.param.MerchantUserPageParam;
import com.jumeirah.common.service.MerchantRolePermissionService;
import com.jumeirah.common.service.MerchantRoleService;
import com.jumeirah.common.service.MerchantUserService;
import com.jumeirah.common.vo.LoginSysUserTokenVo;
import com.jumeirah.common.vo.MerchantUserQueryVo;
import io.geekidea.springbootplus.config.properties.JwtProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.cache.MerchantLoginRedisService;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import io.geekidea.springbootplus.framework.shiro.util.JwtTokenUtil;
import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import io.geekidea.springbootplus.framework.shiro.util.SaltUtil;
import io.geekidea.springbootplus.framework.shiro.vo.LoginSysUserVo;
import io.geekidea.springbootplus.framework.util.PasswordUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.time.Duration;
import java.util.Set;
/**
* 商家 服务实现类
*
* @author wei
* @since 2020-09-28
*/
@Slf4j
@Service
public class MerchantUserServiceImpl extends BaseServiceImpl<MerchantUserMapper, MerchantUser> implements MerchantUserService {
@Lazy
@Autowired
private SpringBootPlusProperties springBootPlusProperties;
@Lazy
@Autowired
private RedisTemplate redisTemplate;
@Lazy
@Autowired
private MerchantLoginRedisService merchantLoginRedisService;
@Lazy
@Autowired
private JwtProperties jwtProperties;
@Autowired
private MerchantUserMapper merchantUserMapper;
@Autowired
private MerchantRoleService merchantRoleService;
@Autowired
private MerchantRolePermissionService merchantRolePermissionService;
public MerchantUser getSysUserByUsername(String username) throws Exception {
MerchantUser sysUser = new MerchantUser().setUsername(username);
return merchantUserMapper.selectOne(new QueryWrapper<MerchantUser>(sysUser));
}
@Transactional(rollbackFor = Exception.class)
@Override
public ApiResult<LoginSysUserTokenVo> login(LoginParam loginParam, HttpServletResponse response, String language) throws Exception {
// // 校验验证码
// checkVerifyCode(loginParam.getVerifyToken(), loginParam.getCode());
String username = loginParam.getUsername();
// 从数据库中获取登录用户信息
MerchantUser merchantUser = getSysUserByUsername(username);
if (merchantUser == null) {
log.error("登录失败,loginParam:{}", loginParam);
// throw new AuthenticationException("用户名或密码错误");
return ApiResult.fail(ApiCode.PWD_OR_USERNAME_ERROR, language);
}
if (StateEnum.DISABLE.getCode().equals(merchantUser.getState())) {
throw new AuthenticationException("账号已禁用");
}
// 实际项目中,前端传过来的密码应先加密
// 原始密码明文:123456
// 原始密码前端加密:sha256(123456)
// 后台加密规则:sha256(sha256(123456) + salt)
String encryptPassword = PasswordUtil.encrypt(loginParam.getPassword(), merchantUser.getSalt());
if (!encryptPassword.equals(merchantUser.getPassword())) {
return ApiResult.fail(ApiCode.PWD_OR_USERNAME_ERROR, language);
}
// 将系统用户对象转换成登录用户对象
LoginSysUserVo loginSysUserVo = SysUserConvert.INSTANCE.merchantUserToLoginSysUserVo(merchantUser);
// // 获取部门
// SysDepartment sysDepartment = sysDepartmentService.getById(merchantUser.getDepartmentId());
// if (sysDepartment == null) {
// throw new AuthenticationException("部门不存在");
// }
// if (!StateEnum.ENABLE.getCode().equals(sysDepartment.getState())) {
// throw new AuthenticationException("部门已禁用");
// }
// loginSysUserVo.setDepartmentId(sysDepartment.getId())
// .setDepartmentName(sysDepartment.getName());
// 获取当前用户角色
Long roleId = merchantUser.getRoleId();
MerchantRole merchantRole = merchantRoleService.getById(roleId);
if (merchantRole == null) {
throw new AuthenticationException("角色不存在");
}
if (StateEnum.DISABLE.getCode().equals(merchantRole.getState())) {
throw new AuthenticationException("角色已禁用");
}
loginSysUserVo.setRoleId(merchantRole.getId())
.setRoleName(merchantRole.getName())
.setRoleCode(merchantRole.getCode());
// 获取当前用户权限
Set<String> permissionCodes = merchantRolePermissionService.getPermissionCodesByRoleId(roleId);
// if (CollectionUtils.isEmpty(permissionCodes)) {
// throw new AuthenticationException("权限列表不能为空");
// }
loginSysUserVo.setPermissionCodes(permissionCodes);
// 获取数据库中保存的盐值
String newSalt = SaltUtil.getSalt(merchantUser.getSalt(), jwtProperties);
// 生成token字符串并返回
Long expireSecond = jwtProperties.getExpireSecond();
String token = JwtUtil.generateToken(username, newSalt, Duration.ofSeconds(expireSecond));
log.debug("token:{}", token);
// 创建AuthenticationToken
JwtToken jwtToken = JwtToken.build(token, username, newSalt, expireSecond, "mer");
boolean enableShiro = springBootPlusProperties.getShiro().isEnable();
if (enableShiro) {
// 从SecurityUtils里边创建一个 subject
Subject subject = SecurityUtils.getSubject();
// 执行认证登录
subject.login(jwtToken);
} else {
log.warn("未启用Shiro");
}
// 缓存登录信息到Redis
merchantLoginRedisService.cacheLoginInfo(jwtToken, loginSysUserVo);
log.debug("登录成功,username:{}", username);
/* // 缓存登录信息到redis
String tokenSha256 = DigestUtils.sha256Hex(token);
redisTemplate.opsForValue().set(tokenSha256, loginSysUserVo, 1, TimeUnit.DAYS);*/
// 返回token和登录用户信息对象
LoginSysUserTokenVo loginSysUserTokenVo = new LoginSysUserTokenVo();
loginSysUserTokenVo.setToken(token);
loginSysUserTokenVo.setLoginSysUserVo(loginSysUserVo);
// 设置token响应头
response.setHeader(JwtTokenUtil.getTokenName(), loginSysUserTokenVo.getToken());
return ApiResult.ok(loginSysUserTokenVo, language);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveMerchantUser(MerchantUser merchantUser) throws Exception {
return super.save(merchantUser);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateMerchantUser(MerchantUser merchantUser) throws Exception {
return super.updateById(merchantUser);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteMerchantUser(Long id) throws Exception {
return super.removeById(id);
}
@Override
public MerchantUserQueryVo getMerchantUserById(Long id) throws Exception {
return merchantUserMapper.getMerchantUserById(id);
}
@Override
public Paging<MerchantUserQueryVo> getMerchantUserPageList(MerchantUserPageParam merchantUserPageParam) throws Exception {
Page<MerchantUserQueryVo> page = new PageInfo<>(merchantUserPageParam, OrderItem.desc(getLambdaColumn(MerchantUser::getCreateTime)));
IPage<MerchantUserQueryVo> iPage = merchantUserMapper.getMerchantUserPageList(page, merchantUserPageParam);
return new Paging<MerchantUserQueryVo>(iPage);
}
}
...@@ -44,7 +44,6 @@ import io.geekidea.springbootplus.framework.shiro.vo.LoginSysUserVo; ...@@ -44,7 +44,6 @@ import io.geekidea.springbootplus.framework.shiro.vo.LoginSysUserVo;
import io.geekidea.springbootplus.framework.util.PasswordUtil; import io.geekidea.springbootplus.framework.util.PasswordUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationException;
...@@ -59,7 +58,6 @@ import javax.servlet.http.HttpServletRequest; ...@@ -59,7 +58,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.time.Duration; import java.time.Duration;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit;
/** /**
* <p> * <p>
...@@ -120,7 +118,7 @@ public class SysLoginServiceImpl implements SysLoginService { ...@@ -120,7 +118,7 @@ public class SysLoginServiceImpl implements SysLoginService {
log.error("登录失败,loginParam:{}", loginParam); log.error("登录失败,loginParam:{}", loginParam);
// throw new AuthenticationException("用户名或密码错误"); // throw new AuthenticationException("用户名或密码错误");
return ApiResult.fail(ApiCode.PWD_OR_USERNAME_ERROR, language); return ApiResult.fail(ApiCode.PWD_OR_USERNAME_ERROR, language);
} }
if (StateEnum.DISABLE.getCode().equals(sysUser.getState())) { if (StateEnum.DISABLE.getCode().equals(sysUser.getState())) {
throw new AuthenticationException("账号已禁用"); throw new AuthenticationException("账号已禁用");
...@@ -132,7 +130,7 @@ public class SysLoginServiceImpl implements SysLoginService { ...@@ -132,7 +130,7 @@ public class SysLoginServiceImpl implements SysLoginService {
// 后台加密规则:sha256(sha256(123456) + salt) // 后台加密规则:sha256(sha256(123456) + salt)
String encryptPassword = PasswordUtil.encrypt(loginParam.getPassword(), sysUser.getSalt()); String encryptPassword = PasswordUtil.encrypt(loginParam.getPassword(), sysUser.getSalt());
if (!encryptPassword.equals(sysUser.getPassword())) { if (!encryptPassword.equals(sysUser.getPassword())) {
return ApiResult.fail(ApiCode.PWD_OR_USERNAME_ERROR, language); return ApiResult.fail(ApiCode.PWD_OR_USERNAME_ERROR, language);
} }
// 将系统用户对象转换成登录用户对象 // 将系统用户对象转换成登录用户对象
...@@ -178,7 +176,7 @@ public class SysLoginServiceImpl implements SysLoginService { ...@@ -178,7 +176,7 @@ public class SysLoginServiceImpl implements SysLoginService {
log.debug("token:{}", token); log.debug("token:{}", token);
// 创建AuthenticationToken // 创建AuthenticationToken
JwtToken jwtToken = JwtToken.build(token, username, newSalt, expireSecond,"sys"); JwtToken jwtToken = JwtToken.build(token, username, newSalt, expireSecond, "sys");
boolean enableShiro = springBootPlusProperties.getShiro().isEnable(); boolean enableShiro = springBootPlusProperties.getShiro().isEnable();
if (enableShiro) { if (enableShiro) {
...@@ -194,9 +192,9 @@ public class SysLoginServiceImpl implements SysLoginService { ...@@ -194,9 +192,9 @@ public class SysLoginServiceImpl implements SysLoginService {
loginRedisService.cacheLoginInfo(jwtToken, loginSysUserVo); loginRedisService.cacheLoginInfo(jwtToken, loginSysUserVo);
log.debug("登录成功,username:{}", username); log.debug("登录成功,username:{}", username);
// 缓存登录信息到redis /* // 缓存登录信息到redis
String tokenSha256 = DigestUtils.sha256Hex(token); String tokenSha256 = DigestUtils.sha256Hex(token);
redisTemplate.opsForValue().set(tokenSha256, loginSysUserVo, 1, TimeUnit.DAYS); redisTemplate.opsForValue().set(tokenSha256, loginSysUserVo, 1, TimeUnit.DAYS);*/
// 返回token和登录用户信息对象 // 返回token和登录用户信息对象
LoginSysUserTokenVo loginSysUserTokenVo = new LoginSysUserTokenVo(); LoginSysUserTokenVo loginSysUserTokenVo = new LoginSysUserTokenVo();
......
...@@ -4,11 +4,11 @@ import cn.hutool.core.util.RandomUtil; ...@@ -4,11 +4,11 @@ import cn.hutool.core.util.RandomUtil;
import com.jumeirah.common.entity.SysUser; import com.jumeirah.common.entity.SysUser;
import com.jumeirah.common.param.LoginParam; import com.jumeirah.common.param.LoginParam;
import com.jumeirah.common.param.RegisterParam; import com.jumeirah.common.param.RegisterParam;
import com.jumeirah.common.service.SysLoginService;
import com.jumeirah.common.service.SysRegisterService; import com.jumeirah.common.service.SysRegisterService;
import com.jumeirah.common.service.SysUserService;
import com.jumeirah.common.vo.LoginSysUserTokenVo; import com.jumeirah.common.vo.LoginSysUserTokenVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import com.jumeirah.common.service.SysLoginService;
import com.jumeirah.common.service.SysUserService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
...@@ -26,6 +26,8 @@ import com.jumeirah.common.mapper.SysUserMapper; ...@@ -26,6 +26,8 @@ import com.jumeirah.common.mapper.SysUserMapper;
import com.jumeirah.common.param.sysuser.ResetPasswordParam; import com.jumeirah.common.param.sysuser.ResetPasswordParam;
import com.jumeirah.common.param.sysuser.SysUserPageParam; import com.jumeirah.common.param.sysuser.SysUserPageParam;
import com.jumeirah.common.param.sysuser.UpdatePasswordParam; import com.jumeirah.common.param.sysuser.UpdatePasswordParam;
import com.jumeirah.common.service.SysDepartmentService;
import com.jumeirah.common.service.SysRoleService;
import com.jumeirah.common.service.SysUserService; import com.jumeirah.common.service.SysUserService;
import com.jumeirah.common.vo.SysUserQueryVo; import com.jumeirah.common.vo.SysUserQueryVo;
import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties; import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties;
...@@ -36,8 +38,6 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging; ...@@ -36,8 +38,6 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.util.SaltUtil; import io.geekidea.springbootplus.framework.shiro.util.SaltUtil;
import io.geekidea.springbootplus.framework.util.PasswordUtil; import io.geekidea.springbootplus.framework.util.PasswordUtil;
import io.geekidea.springbootplus.framework.util.PhoneUtil; import io.geekidea.springbootplus.framework.util.PhoneUtil;
import com.jumeirah.common.service.SysDepartmentService;
import com.jumeirah.common.service.SysRoleService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
......
...@@ -19,57 +19,57 @@ import java.util.Date; ...@@ -19,57 +19,57 @@ import java.util.Date;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@ApiModel(value = "AppUserQueryVo对象") @ApiModel(value = "AppUserQueryVo对象")
public class AppUserQueryVo implements Serializable{ public class AppUserQueryVo implements Serializable {
private static final long serialVersionUID=1L; private static final long serialVersionUID = 1L;
@ApiModelProperty("主键") @ApiModelProperty("主键")
private Long id; private Long id;
@ApiModelProperty("用户名") @ApiModelProperty("用户名")
private String username; private String username;
@ApiModelProperty("昵称") @ApiModelProperty("昵称")
private String nickname; private String nickname;
@ApiModelProperty("密码") @ApiModelProperty("密码")
private String password; private String password;
@ApiModelProperty("盐值") @ApiModelProperty("盐值")
private String salt; private String salt;
@ApiModelProperty("手机号码") @ApiModelProperty("手机号码")
private String phone; private String phone;
@ApiModelProperty("手机区号") @ApiModelProperty("手机区号")
private String phoneArea; private String phoneArea;
@ApiModelProperty("性别,0:女,1:男,默认1") @ApiModelProperty("性别,0:女,1:男,默认1")
private Integer gender; private Integer gender;
@ApiModelProperty("头像") @ApiModelProperty("头像")
private String head; private String head;
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String remark; private String remark;
@ApiModelProperty("状态,0:禁用,1:启用,2:锁定") @ApiModelProperty("状态,0:禁用,1:启用,2:锁定")
private Integer state; private Integer state;
@ApiModelProperty("部门id") @ApiModelProperty("部门id")
private Long departmentId; private Long departmentId;
@ApiModelProperty("角色id") @ApiModelProperty("角色id")
private Long roleId; private Long roleId;
@ApiModelProperty("逻辑删除,0:未删除,1:已删除") @ApiModelProperty("逻辑删除,0:未删除,1:已删除")
private Integer deleted; private Integer deleted;
@ApiModelProperty("版本") @ApiModelProperty("版本")
private Integer version; private Integer version;
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
private Date createTime; private Date createTime;
@ApiModelProperty("修改时间") @ApiModelProperty("修改时间")
private Date updateTime; private Date updateTime;
} }
\ No newline at end of file
package com.jumeirah.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 商家权限 查询结果对象
* </pre>
*
* @author wei
* @date 2020-09-28
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "MerchantPermissionQueryVo对象")
public class MerchantPermissionQueryVo implements Serializable{
private static final long serialVersionUID=1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("权限名称")
private String name;
@ApiModelProperty("父id")
private Long parentId;
@ApiModelProperty("路径")
private String url;
@ApiModelProperty("唯一编码")
private String code;
@ApiModelProperty("图标")
private String icon;
@ApiModelProperty("类型,1:菜单,2:按钮")
private Integer type;
@ApiModelProperty("层级,1:第一级,2:第二级,N:第N级")
private Integer level;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
\ No newline at end of file
package com.jumeirah.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 商家角色权限关系 查询结果对象
* </pre>
*
* @author wei
* @date 2020-09-28
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "MerchantRolePermissionQueryVo对象")
public class MerchantRolePermissionQueryVo implements Serializable{
private static final long serialVersionUID=1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("角色id")
private Long roleId;
@ApiModelProperty("权限id")
private Long permissionId;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
\ No newline at end of file
package com.jumeirah.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 商家角色 查询结果对象
* </pre>
*
* @author wei
* @date 2020-09-28
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "MerchantRoleQueryVo对象")
public class MerchantRoleQueryVo implements Serializable{
private static final long serialVersionUID=1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("角色名称")
private String name;
@ApiModelProperty("角色唯一编码")
private String code;
@ApiModelProperty("角色类型")
private Integer type;
@ApiModelProperty("角色状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
\ No newline at end of file
package com.jumeirah.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 商家 查询结果对象
* </pre>
*
* @author wei
* @date 2020-09-28
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "MerchantUserQueryVo对象")
public class MerchantUserQueryVo implements Serializable{
private static final long serialVersionUID=1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("昵称")
private String nickname;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("盐值")
private String salt;
@ApiModelProperty("手机号码")
private String phone;
@ApiModelProperty("手机区号")
private String phoneArea;
@ApiModelProperty("性别,0:女,1:男,默认1")
private Integer gender;
@ApiModelProperty("头像")
private String head;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("状态,0:禁用,1:启用,2:锁定")
private Integer state;
@ApiModelProperty("部门id")
private Long departmentId;
@ApiModelProperty("角色id")
private Long roleId;
@ApiModelProperty("逻辑删除,0:未删除,1:已删除")
private Integer deleted;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
\ No newline at end of file
...@@ -2,21 +2,22 @@ ...@@ -2,21 +2,22 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jumeirah.common.mapper.AppUserMapper"> <mapper namespace="com.jumeirah.common.mapper.AppUserMapper">
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, username, nickname, password, salt, phone, phone_area, gender, head, remark, state, department_id, role_id, deleted, version, create_time, update_time id, username, nickname, password, salt, phone, phone_area, gender, head, remark, state, department_id, role_id, deleted, version, create_time, update_time
</sql> </sql>
<select id="getAppUserById" resultType="com.jumeirah.common.vo.AppUserQueryVo"> <select id="getAppUserById" resultType="com.jumeirah.common.vo.AppUserQueryVo">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from app_user where id = #{id} from app_user where id = #{id}
</select> </select>
<select id="getAppUserPageList" parameterType="com.jumeirah.common.param.AppUserPageParam" resultType="com.jumeirah.common.vo.AppUserQueryVo"> <select id="getAppUserPageList" parameterType="com.jumeirah.common.param.AppUserPageParam"
select resultType="com.jumeirah.common.vo.AppUserQueryVo">
<include refid="Base_Column_List"/> select
from app_user <include refid="Base_Column_List"/>
</select> from app_user
</select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jumeirah.common.mapper.MerchantPermissionMapper">
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, name, parent_id, url, code, icon, type, level, state, sort, remark, version, create_time, update_time
</sql>
<select id="getMerchantPermissionById" resultType="com.jumeirah.common.vo.MerchantPermissionQueryVo">
select
<include refid="Base_Column_List"/>
from merchant_permission where id = #{id}
</select>
<select id="getMerchantPermissionPageList" parameterType="com.jumeirah.common.param.MerchantPermissionPageParam"
resultType="com.jumeirah.common.vo.MerchantPermissionQueryVo">
select
<include refid="Base_Column_List"/>
from merchant_permission
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jumeirah.common.mapper.MerchantRoleMapper">
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, name, code, type, state, remark, version, create_time, update_time
</sql>
<select id="getMerchantRoleById" resultType="com.jumeirah.common.vo.MerchantRoleQueryVo">
select
<include refid="Base_Column_List"/>
from merchant_role where id = #{id}
</select>
<select id="getMerchantRolePageList" parameterType="com.jumeirah.common.param.MerchantRolePageParam"
resultType="com.jumeirah.common.vo.MerchantRoleQueryVo">
select
<include refid="Base_Column_List"/>
from merchant_role
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jumeirah.common.mapper.MerchantRolePermissionMapper">
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, role_id, permission_id, state, remark, version, create_time, update_time
</sql>
<select id="getMerchantRolePermissionById" resultType="com.jumeirah.common.vo.MerchantRolePermissionQueryVo">
select
<include refid="Base_Column_List"/>
from merchant_role_permission where id = #{id}
</select>
<select id="getPermissionCodesByRoleId" resultType="java.lang.String">
select p.code
from merchant_role r
inner join merchant_role_permission rp
on r.id = rp.role_id
inner join merchant_permission p
on rp.permission_id = p.id
where r.state = 1
and rp.state = 1
and p.state = 1
and r.id = #{roleId};
</select>
<select id="getMerchantRolePermissionPageList"
parameterType="com.jumeirah.common.param.MerchantRolePermissionPageParam"
resultType="com.jumeirah.common.vo.MerchantRolePermissionQueryVo">
select
<include refid="Base_Column_List"/>
from merchant_role_permission
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jumeirah.common.mapper.MerchantUserMapper">
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, username, nickname, password, salt, phone, phone_area, gender, head, remark, state, department_id, role_id, deleted, version, create_time, update_time
</sql>
<select id="getMerchantUserById" resultType="com.jumeirah.common.vo.MerchantUserQueryVo">
select
<include refid="Base_Column_List"/>
from merchant_user where id = #{id}
</select>
<select id="getMerchantUserPageList" parameterType="com.jumeirah.common.param.MerchantUserPageParam"
resultType="com.jumeirah.common.vo.MerchantUserQueryVo">
select
<include refid="Base_Column_List"/>
from merchant_user
</select>
</mapper>
...@@ -27,23 +27,11 @@ package io.geekidea.springbootplus.config.constant; ...@@ -27,23 +27,11 @@ package io.geekidea.springbootplus.config.constant;
public interface AppLoginRedisKey { public interface AppLoginRedisKey {
/** /**
* 登录用户token信息key
* login:token:tokenMd5
*/
String LOGIN_TOKEN = "sys:login:token:%s";
/**
* 登录用户信息key * 登录用户信息key
* login:user:username * login:user:username
*/ */
String LOGIN_USER = "app:login:user:%s"; String LOGIN_USER = "app:login:user:%s";
/**
* 登录用户盐值信息key
* login:salt:username
*/
// String LOGIN_SALT = "app:login:salt:%s";
String LOGIN_SALT = "sys:login:salt:%s";
/** /**
......
...@@ -27,6 +27,18 @@ package io.geekidea.springbootplus.config.constant; ...@@ -27,6 +27,18 @@ package io.geekidea.springbootplus.config.constant;
public interface CommonRedisKey { public interface CommonRedisKey {
/** /**
* 登录用户token信息key
* login:token:tokenMd5
*/
String LOGIN_TOKEN = "login:token:%s";
/**
* 登录用户盐值信息key
* login:salt:username
*/
String LOGIN_SALT = "login:salt:%s";
/**
* 验证码 * 验证码
* verify.code:666666 * verify.code:666666
*/ */
......
...@@ -27,24 +27,12 @@ package io.geekidea.springbootplus.config.constant; ...@@ -27,24 +27,12 @@ package io.geekidea.springbootplus.config.constant;
public interface MerchantLoginRedisKey { public interface MerchantLoginRedisKey {
/** /**
* 登录用户token信息key
* login:token:tokenMd5
*/
String LOGIN_TOKEN = "sys:login:token:%s";
/**
* 登录用户信息key * 登录用户信息key
* login:user:username * login:user:username
*/ */
String LOGIN_USER = "mer:login:user:%s"; String LOGIN_USER = "mer:login:user:%s";
/** /**
* 登录用户盐值信息key
* login:salt:username
*/
String LOGIN_SALT = "sys:login:salt:%s";
/**
* 登录用户username token * 登录用户username token
* login:user:token:username:token * login:user:token:username:token
*/ */
......
...@@ -27,24 +27,12 @@ package io.geekidea.springbootplus.config.constant; ...@@ -27,24 +27,12 @@ package io.geekidea.springbootplus.config.constant;
public interface SysLoginRedisKey { public interface SysLoginRedisKey {
/** /**
* 登录用户token信息key
* login:token:tokenMd5
*/
String LOGIN_TOKEN = "sys:login:token:%s";
/**
* 登录用户信息key * 登录用户信息key
* login:user:username * login:user:username
*/ */
String LOGIN_USER = "sys:login:user:%s"; String LOGIN_USER = "sys:login:user:%s";
/** /**
* 登录用户盐值信息key
* login:salt:username
*/
String LOGIN_SALT = "sys:login:salt:%s";
/**
* 登录用户username token * 登录用户username token
* login:user:token:username:token * login:user:token:username:token
*/ */
...@@ -55,5 +43,5 @@ public interface SysLoginRedisKey { ...@@ -55,5 +43,5 @@ public interface SysLoginRedisKey {
* login:user:token:username:* * login:user:token:username:*
*/ */
String LOGIN_USER_ALL_TOKEN = "sys:login:user:token:%s:*"; String LOGIN_USER_ALL_TOKEN = "sys:login:user:token:%s:*";
} }
...@@ -183,13 +183,13 @@ spring-boot-plus: ...@@ -183,13 +183,13 @@ spring-boot-plus:
# 权限配置 # 权限配置
anon: anon:
# 排除登录 注册 登出 # 排除登录 注册 登出
- /app/user/register,/app/user/phoneLogin,/app/user/login,/sys/login,/sys/logout,/sys/register - /app/user/register,/app/user/phoneLogin,/app/user/login,/sys/login,/sys/logout,/sys/register,/merchantUser/login
# 排除静态资源 # 排除静态资源
- /static/**,/templates/** - /static/**,/templates/**
# 排除Swagger # 排除Swagger
- ${spring-boot-plus.swagger-paths} - ${spring-boot-plus.swagger-paths}
# 排除actuator # 排除actuator
# - /actuator/** # - /actuator/**
- # 排除首页 - # 排除首页
- /,/index.html - /,/index.html
- /app/noRole - /app/noRole
...@@ -200,7 +200,7 @@ spring-boot-plus: ...@@ -200,7 +200,7 @@ spring-boot-plus:
/upload/**=anon /upload/**=anon
/verificationCode/**=anon /verificationCode/**=anon
/enum=anon /enum=anon
/app/*=roles["app:all"] # /app/**=roles["app:all"]
######################## Spring Shiro end ########################## ######################## Spring Shiro end ##########################
...@@ -214,8 +214,8 @@ spring-boot-plus: ...@@ -214,8 +214,8 @@ spring-boot-plus:
issuer: ${spring.application.name} issuer: ${spring.application.name}
# 观众 # 观众
audience: web audience: web
# 默认过期时间1小时,单位:秒 # 默认过期时间60天,单位:秒
expire-second: 36000 expire-second: 5184000
# 是否刷新token # 是否刷新token
refresh-token: true refresh-token: true
# 刷新token的时间间隔,默认10分钟,单位:秒 # 刷新token的时间间隔,默认10分钟,单位:秒
...@@ -223,7 +223,7 @@ spring-boot-plus: ...@@ -223,7 +223,7 @@ spring-boot-plus:
# redis校验jwt token是否存在,可选 # redis校验jwt token是否存在,可选
redis-check: true redis-check: true
# true: 同一个账号只能是最后一次登录token有效,false:同一个账号可多次登录 # true: 同一个账号只能是最后一次登录token有效,false:同一个账号可多次登录
single-login: false single-login: true
# 盐值校验,如果不加自定义盐值,则使用secret校验 # 盐值校验,如果不加自定义盐值,则使用secret校验
salt-check: true salt-check: true
############################ JWT end ############################### ############################ JWT end ###############################
......
...@@ -75,5 +75,4 @@ api.response.code.JWTDECODE_EXCEPTION=JWTDECODE_EXCEPTION ...@@ -75,5 +75,4 @@ api.response.code.JWTDECODE_EXCEPTION=JWTDECODE_EXCEPTION
#* 默认的异常处理 #* 默认的异常处理
#*/ #*/
api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION
api.response.code.user.PWD_OR_USERNAME_ERROR=password or phone number error api.response.code.user.PWD_OR_USERNAME_ERROR=password or phone number error
\ No newline at end of file
...@@ -75,5 +75,4 @@ api.response.code.JWTDECODE_EXCEPTION=JWTDECODE_EXCEPTION ...@@ -75,5 +75,4 @@ api.response.code.JWTDECODE_EXCEPTION=JWTDECODE_EXCEPTION
#* 默认的异常处理 #* 默认的异常处理
#*/ #*/
api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION
api.response.code.user.PWD_OR_USERNAME_ERROR=password or phone number error KH api.response.code.user.PWD_OR_USERNAME_ERROR=password or phone number error KH
\ No newline at end of file
...@@ -75,5 +75,4 @@ api.response.code.JWTDECODE_EXCEPTION=Token解析异常 ...@@ -75,5 +75,4 @@ api.response.code.JWTDECODE_EXCEPTION=Token解析异常
#* 默认的异常处理 #* 默认的异常处理
#*/ #*/
api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=默认的异常处理 api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=默认的异常处理
api.response.code.user.PWD_OR_USERNAME_ERROR=账号或密码错误 api.response.code.user.PWD_OR_USERNAME_ERROR=账号或密码错误
\ No newline at end of file
...@@ -109,7 +109,6 @@ public class ApiResult<T> implements Serializable { ...@@ -109,7 +109,6 @@ public class ApiResult<T> implements Serializable {
} }
return (ApiResult<T>) ApiResult.builder() return (ApiResult<T>) ApiResult.builder()
.code(apiCode.getCode()) .code(apiCode.getCode())
.message(message) .message(message)
......
package io.geekidea.springbootplus.framework.shiro.cache.impl; package io.geekidea.springbootplus.framework.shiro.cache.impl;
import io.geekidea.springbootplus.config.constant.AppLoginRedisKey; import io.geekidea.springbootplus.config.constant.AppLoginRedisKey;
import io.geekidea.springbootplus.config.constant.CommonRedisKey;
import io.geekidea.springbootplus.config.properties.JwtProperties; import io.geekidea.springbootplus.config.properties.JwtProperties;
import io.geekidea.springbootplus.framework.common.bean.ClientInfo; import io.geekidea.springbootplus.framework.common.bean.ClientInfo;
import io.geekidea.springbootplus.framework.shiro.cache.AppLoginRedisService; import io.geekidea.springbootplus.framework.shiro.cache.AppLoginRedisService;
...@@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; ...@@ -22,6 +23,7 @@ import org.springframework.stereotype.Service;
import java.time.Duration; import java.time.Duration;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@Service @Service
public class AppLoginRedisServiceImpl implements AppLoginRedisService { public class AppLoginRedisServiceImpl implements AppLoginRedisService {
...@@ -79,12 +81,12 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService { ...@@ -79,12 +81,12 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
} }
// 1. tokenMd5:jwtTokenRedisVo // 1. tokenMd5:jwtTokenRedisVo
String loginTokenRedisKey = String.format(AppLoginRedisKey.LOGIN_TOKEN, tokenMd5); String loginTokenRedisKey = String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5);
redisTemplate.opsForValue().set(loginTokenRedisKey, jwtTokenRedisVo, expireDuration); redisTemplate.opsForValue().set(loginTokenRedisKey, jwtTokenRedisVo, expireDuration);
// 2. username:loginSysUserRedisVo // 2. username:loginSysUserRedisVo
redisTemplate.opsForValue().set(String.format(AppLoginRedisKey.LOGIN_USER, username), loginSysUserRedisVo, expireDuration); redisTemplate.opsForValue().set(String.format(AppLoginRedisKey.LOGIN_USER, username), loginSysUserRedisVo, expireDuration);
// 3. salt hash,方便获取盐值鉴权 // 3. salt hash,方便获取盐值鉴权
redisTemplate.opsForValue().set(String.format(AppLoginRedisKey.LOGIN_SALT, username), salt, expireDuration); redisTemplate.opsForValue().set(String.format(CommonRedisKey.LOGIN_SALT, username), salt, expireDuration);
// 4. login user token // 4. login user token
redisTemplate.opsForValue().set(String.format(AppLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5), loginTokenRedisKey, expireDuration); redisTemplate.opsForValue().set(String.format(AppLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5), loginTokenRedisKey, expireDuration);
} }
...@@ -121,7 +123,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService { ...@@ -121,7 +123,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
if (StringUtils.isBlank(username)) { if (StringUtils.isBlank(username)) {
throw new IllegalArgumentException("username不能为空"); throw new IllegalArgumentException("username不能为空");
} }
String salt = (String) redisTemplate.opsForValue().get(String.format(AppLoginRedisKey.LOGIN_SALT, username)); String salt = (String) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_SALT, username));
return salt; return salt;
} }
...@@ -135,11 +137,11 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService { ...@@ -135,11 +137,11 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
} }
String tokenMd5 = DigestUtils.md5Hex(token); String tokenMd5 = DigestUtils.md5Hex(token);
// 1. delete tokenMd5 // 1. delete tokenMd5
redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_TOKEN, tokenMd5)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
// 2. delete username // 2. delete username
redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_USER, username)); redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_USER, username));
// 3. delete salt // 3. delete salt
redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_SALT, username)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_SALT, username));
// 4. delete user token // 4. delete user token
redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5)); redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5));
} }
...@@ -150,7 +152,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService { ...@@ -150,7 +152,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
throw new IllegalArgumentException("token不能为空"); throw new IllegalArgumentException("token不能为空");
} }
String tokenMd5 = DigestUtils.md5Hex(token); String tokenMd5 = DigestUtils.md5Hex(token);
Object object = redisTemplate.opsForValue().get(String.format(AppLoginRedisKey.LOGIN_TOKEN, tokenMd5)); Object object = redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
return object != null; return object != null;
} }
...@@ -169,7 +171,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService { ...@@ -169,7 +171,7 @@ public class AppLoginRedisServiceImpl implements AppLoginRedisService {
// 3. 删除登录用户信息 // 3. 删除登录用户信息
redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_USER, username)); redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_USER, username));
// 4. 删除登录用户盐值信息 // 4. 删除登录用户盐值信息
redisTemplate.delete(String.format(AppLoginRedisKey.LOGIN_SALT, username)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_SALT, username));
} }
......
package io.geekidea.springbootplus.framework.shiro.cache.impl; package io.geekidea.springbootplus.framework.shiro.cache.impl;
import io.geekidea.springbootplus.config.constant.CommonRedisKey;
import io.geekidea.springbootplus.config.constant.MerchantLoginRedisKey; import io.geekidea.springbootplus.config.constant.MerchantLoginRedisKey;
import io.geekidea.springbootplus.config.properties.JwtProperties; import io.geekidea.springbootplus.config.properties.JwtProperties;
import io.geekidea.springbootplus.framework.common.bean.ClientInfo; import io.geekidea.springbootplus.framework.common.bean.ClientInfo;
...@@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; ...@@ -22,6 +23,7 @@ import org.springframework.stereotype.Service;
import java.time.Duration; import java.time.Duration;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@Service @Service
public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService { public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService {
...@@ -78,12 +80,12 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService ...@@ -78,12 +80,12 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
} }
// 1. tokenMd5:jwtTokenRedisVo // 1. tokenMd5:jwtTokenRedisVo
String loginTokenRedisKey = String.format(MerchantLoginRedisKey.LOGIN_TOKEN, tokenMd5); String loginTokenRedisKey = String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5);
redisTemplate.opsForValue().set(loginTokenRedisKey, jwtTokenRedisVo, expireDuration); redisTemplate.opsForValue().set(loginTokenRedisKey, jwtTokenRedisVo, expireDuration);
// 2. username:loginSysUserRedisVo // 2. username:loginSysUserRedisVo
redisTemplate.opsForValue().set(String.format(MerchantLoginRedisKey.LOGIN_USER, username), loginSysUserRedisVo, expireDuration); redisTemplate.opsForValue().set(String.format(MerchantLoginRedisKey.LOGIN_USER, username), loginSysUserRedisVo, expireDuration);
// 3. salt hash,方便获取盐值鉴权 // 3. salt hash,方便获取盐值鉴权
redisTemplate.opsForValue().set(String.format(MerchantLoginRedisKey.LOGIN_SALT, username), salt, expireDuration); redisTemplate.opsForValue().set(String.format(CommonRedisKey.LOGIN_SALT, username), salt, expireDuration);
// 4. login user token // 4. login user token
redisTemplate.opsForValue().set(String.format(MerchantLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5), loginTokenRedisKey, expireDuration); redisTemplate.opsForValue().set(String.format(MerchantLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5), loginTokenRedisKey, expireDuration);
} }
...@@ -120,7 +122,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService ...@@ -120,7 +122,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
if (StringUtils.isBlank(username)) { if (StringUtils.isBlank(username)) {
throw new IllegalArgumentException("username不能为空"); throw new IllegalArgumentException("username不能为空");
} }
String salt = (String) redisTemplate.opsForValue().get(String.format(MerchantLoginRedisKey.LOGIN_SALT, username)); String salt = (String) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_SALT, username));
return salt; return salt;
} }
...@@ -134,11 +136,11 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService ...@@ -134,11 +136,11 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
} }
String tokenMd5 = DigestUtils.md5Hex(token); String tokenMd5 = DigestUtils.md5Hex(token);
// 1. delete tokenMd5 // 1. delete tokenMd5
redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_TOKEN, tokenMd5)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
// 2. delete username // 2. delete username
redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_USER, username)); redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_USER, username));
// 3. delete salt // 3. delete salt
redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_SALT, username)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_SALT, username));
// 4. delete user token // 4. delete user token
redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5)); redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5));
} }
...@@ -149,7 +151,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService ...@@ -149,7 +151,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
throw new IllegalArgumentException("token不能为空"); throw new IllegalArgumentException("token不能为空");
} }
String tokenMd5 = DigestUtils.md5Hex(token); String tokenMd5 = DigestUtils.md5Hex(token);
Object object = redisTemplate.opsForValue().get(String.format(MerchantLoginRedisKey.LOGIN_TOKEN, tokenMd5)); Object object = redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
return object != null; return object != null;
} }
...@@ -168,7 +170,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService ...@@ -168,7 +170,7 @@ public class MerchantLoginRedisServiceImpl implements MerchantLoginRedisService
// 3. 删除登录用户信息 // 3. 删除登录用户信息
redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_USER, username)); redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_USER, username));
// 4. 删除登录用户盐值信息 // 4. 删除登录用户盐值信息
redisTemplate.delete(String.format(MerchantLoginRedisKey.LOGIN_SALT, username)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_SALT, username));
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package io.geekidea.springbootplus.framework.shiro.cache.impl; package io.geekidea.springbootplus.framework.shiro.cache.impl;
import io.geekidea.springbootplus.config.constant.CommonRedisKey;
import io.geekidea.springbootplus.config.constant.SysLoginRedisKey; import io.geekidea.springbootplus.config.constant.SysLoginRedisKey;
import io.geekidea.springbootplus.config.properties.JwtProperties; import io.geekidea.springbootplus.config.properties.JwtProperties;
import io.geekidea.springbootplus.framework.common.bean.ClientInfo; import io.geekidea.springbootplus.framework.common.bean.ClientInfo;
...@@ -102,12 +103,12 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService { ...@@ -102,12 +103,12 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
} }
// 1. tokenMd5:jwtTokenRedisVo // 1. tokenMd5:jwtTokenRedisVo
String loginTokenRedisKey = String.format(SysLoginRedisKey.LOGIN_TOKEN, tokenMd5); String loginTokenRedisKey = String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5);
redisTemplate.opsForValue().set(loginTokenRedisKey, jwtTokenRedisVo, expireDuration); redisTemplate.opsForValue().set(loginTokenRedisKey, jwtTokenRedisVo, expireDuration);
// 2. username:loginSysUserRedisVo // 2. username:loginSysUserRedisVo
redisTemplate.opsForValue().set(String.format(SysLoginRedisKey.LOGIN_USER, username), loginSysUserRedisVo, expireDuration); redisTemplate.opsForValue().set(String.format(SysLoginRedisKey.LOGIN_USER, username), loginSysUserRedisVo, expireDuration);
// 3. salt hash,方便获取盐值鉴权 // 3. salt hash,方便获取盐值鉴权
redisTemplate.opsForValue().set(String.format(SysLoginRedisKey.LOGIN_SALT, username), salt, expireDuration); redisTemplate.opsForValue().set(String.format(CommonRedisKey.LOGIN_SALT, username), salt, expireDuration);
// 4. login user token // 4. login user token
redisTemplate.opsForValue().set(String.format(SysLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5), loginTokenRedisKey, expireDuration); redisTemplate.opsForValue().set(String.format(SysLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5), loginTokenRedisKey, expireDuration);
} }
...@@ -144,7 +145,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService { ...@@ -144,7 +145,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
if (StringUtils.isBlank(username)) { if (StringUtils.isBlank(username)) {
throw new IllegalArgumentException("username不能为空"); throw new IllegalArgumentException("username不能为空");
} }
String salt = (String) redisTemplate.opsForValue().get(String.format(SysLoginRedisKey.LOGIN_SALT, username)); String salt = (String) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_SALT, username));
return salt; return salt;
} }
...@@ -158,11 +159,11 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService { ...@@ -158,11 +159,11 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
} }
String tokenMd5 = DigestUtils.md5Hex(token); String tokenMd5 = DigestUtils.md5Hex(token);
// 1. delete tokenMd5 // 1. delete tokenMd5
redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_TOKEN, tokenMd5)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
// 2. delete username // 2. delete username
redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_USER, username)); redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_USER, username));
// 3. delete salt // 3. delete salt
redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_SALT, username)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_SALT, username));
// 4. delete user token // 4. delete user token
redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5)); redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_USER_TOKEN, username, tokenMd5));
} }
...@@ -173,7 +174,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService { ...@@ -173,7 +174,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
throw new IllegalArgumentException("token不能为空"); throw new IllegalArgumentException("token不能为空");
} }
String tokenMd5 = DigestUtils.md5Hex(token); String tokenMd5 = DigestUtils.md5Hex(token);
Object object = redisTemplate.opsForValue().get(String.format(SysLoginRedisKey.LOGIN_TOKEN, tokenMd5)); Object object = redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
return object != null; return object != null;
} }
...@@ -192,7 +193,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService { ...@@ -192,7 +193,7 @@ public class SysLoginRedisServiceImpl implements SysLoginRedisService {
// 3. 删除登录用户信息 // 3. 删除登录用户信息
redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_USER, username)); redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_USER, username));
// 4. 删除登录用户盐值信息 // 4. 删除登录用户盐值信息
redisTemplate.delete(String.format(SysLoginRedisKey.LOGIN_SALT, username)); redisTemplate.delete(String.format(CommonRedisKey.LOGIN_SALT, username));
} }
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
package io.geekidea.springbootplus.framework.shiro.jwt; package io.geekidea.springbootplus.framework.shiro.jwt;
import io.geekidea.springbootplus.config.constant.SysLoginRedisKey; import io.geekidea.springbootplus.config.constant.CommonRedisKey;
import io.geekidea.springbootplus.config.properties.JwtProperties; import io.geekidea.springbootplus.config.properties.JwtProperties;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -51,13 +51,10 @@ import javax.servlet.http.HttpServletResponse; ...@@ -51,13 +51,10 @@ import javax.servlet.http.HttpServletResponse;
@Slf4j @Slf4j
public class JwtFilter extends AuthenticatingFilter { public class JwtFilter extends AuthenticatingFilter {
private RedisTemplate redisTemplate;
private final ShiroLoginService shiroLoginService; private final ShiroLoginService shiroLoginService;
private final SysLoginRedisService sysLoginRedisService; private final SysLoginRedisService sysLoginRedisService;
private final JwtProperties jwtProperties; private final JwtProperties jwtProperties;
private RedisTemplate redisTemplate;
public JwtFilter(ShiroLoginService shiroLoginService, SysLoginRedisService loginRedisService, JwtProperties jwtProperties, RedisTemplate redisTemplate) { public JwtFilter(ShiroLoginService shiroLoginService, SysLoginRedisService loginRedisService, JwtProperties jwtProperties, RedisTemplate redisTemplate) {
this.shiroLoginService = shiroLoginService; this.shiroLoginService = shiroLoginService;
...@@ -68,6 +65,7 @@ public class JwtFilter extends AuthenticatingFilter { ...@@ -68,6 +65,7 @@ public class JwtFilter extends AuthenticatingFilter {
/** /**
* 将JWT Token包装成AuthenticationToken * 将JWT Token包装成AuthenticationToken
* 从http请求头中取得token,并从redis中取出token相关信息
* *
* @param servletRequest * @param servletRequest
* @param servletResponse * @param servletResponse
...@@ -76,6 +74,7 @@ public class JwtFilter extends AuthenticatingFilter { ...@@ -76,6 +74,7 @@ public class JwtFilter extends AuthenticatingFilter {
*/ */
@Override @Override
protected AuthenticationToken createToken(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { protected AuthenticationToken createToken(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
// 从http请求头中取得token
String token = JwtTokenUtil.getToken(); String token = JwtTokenUtil.getToken();
if (StringUtils.isBlank(token)) { if (StringUtils.isBlank(token)) {
throw new AuthenticationException("token不能为空"); throw new AuthenticationException("token不能为空");
...@@ -85,27 +84,26 @@ public class JwtFilter extends AuthenticatingFilter { ...@@ -85,27 +84,26 @@ public class JwtFilter extends AuthenticatingFilter {
} }
Object jwtTokenRedisVo = null; Object jwtTokenRedisVo = null;
// 如果开启redis二次校验,或者设置为单个用户token登录,则先在redis中判断token是否存在 // 如果开启redis二次校验,或者设置为单个用户token登录,则先在redis中判断token是否存在
if (jwtProperties.isRedisCheck() || jwtProperties.isSingleLogin()) { if (jwtProperties.isRedisCheck() || jwtProperties.isSingleLogin()) {
String tokenMd5 = DigestUtils.md5Hex(token); String tokenMd5 = DigestUtils.md5Hex(token);
jwtTokenRedisVo = redisTemplate.opsForValue().get(String.format(SysLoginRedisKey.LOGIN_TOKEN, tokenMd5)); jwtTokenRedisVo = redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_TOKEN, tokenMd5));
// boolean redisExpired = sysLoginRedisService.exists(token); // boolean redisExpired = sysLoginRedisService.exists(token);
if (jwtTokenRedisVo == null) { if (jwtTokenRedisVo == null) {
throw new AuthenticationException("Redis Token不存在,token:" + token); throw new AuthenticationException("Redis Token不存在,token:" + token);
} }
} }
String username = JwtUtil.getUsername(token); String username = JwtUtil.getUsername(token);
String salt; String salt;
if (jwtProperties.isSaltCheck()) { if (jwtProperties.isSaltCheck()) {
salt = sysLoginRedisService.getSalt(username); salt = sysLoginRedisService.getSalt(username);
} else { } else {
salt = jwtProperties.getSecret(); salt = jwtProperties.getSecret();
} }
JwtTokenRedisVo jwt = (JwtTokenRedisVo) jwtTokenRedisVo; JwtTokenRedisVo jwt = (JwtTokenRedisVo) jwtTokenRedisVo;
return JwtToken.build(token, username, salt, jwtProperties.getExpireSecond(), jwt.getType()); return JwtToken.build(token, username, salt, jwtProperties.getExpireSecond(), jwt.getType());
} }
...@@ -175,7 +173,7 @@ public class JwtFilter extends AuthenticatingFilter { ...@@ -175,7 +173,7 @@ public class JwtFilter extends AuthenticatingFilter {
// 刷新token // 刷新token
JwtToken jwtToken = (JwtToken) token; JwtToken jwtToken = (JwtToken) token;
HttpServletResponse httpServletResponse = WebUtils.toHttp(response); HttpServletResponse httpServletResponse = WebUtils.toHttp(response);
shiroLoginService.refreshToken(jwtToken, httpServletResponse); // shiroLoginService.refreshToken(jwtToken, httpServletResponse);
return true; return true;
} }
......
...@@ -72,7 +72,7 @@ public class JwtToken implements HostAuthenticationToken { ...@@ -72,7 +72,7 @@ public class JwtToken implements HostAuthenticationToken {
private String credentials; private String credentials;
public static JwtToken build(String token, String username, String salt, long expireSecond,String type) { public static JwtToken build(String token, String username, String salt, long expireSecond, String type) {
DecodedJWT decodedJwt = JwtUtil.getJwtInfo(token); DecodedJWT decodedJwt = JwtUtil.getJwtInfo(token);
Date createDate = decodedJwt.getIssuedAt(); Date createDate = decodedJwt.getIssuedAt();
Date expireDate = decodedJwt.getExpiresAt(); Date expireDate = decodedJwt.getExpiresAt();
......
...@@ -63,7 +63,7 @@ public class JwtRealmSystem extends AuthorizingRealm { ...@@ -63,7 +63,7 @@ public class JwtRealmSystem extends AuthorizingRealm {
// 设置角色/权限信息 // 设置角色/权限信息
JwtToken jwtToken = (JwtToken) principalCollection.getPrimaryPrincipal(); JwtToken jwtToken = (JwtToken) principalCollection.getPrimaryPrincipal();
if (!jwtToken.getType().equals("sys")){ if (!jwtToken.getType().equals("sys")) {
return null; return null;
} }
// 获取username // 获取username
...@@ -80,7 +80,7 @@ public class JwtRealmSystem extends AuthorizingRealm { ...@@ -80,7 +80,7 @@ public class JwtRealmSystem extends AuthorizingRealm {
} }
/** /**
* 登录认证 * 登录认证, 校验密码等, 这里项目使用了jwt , 所以验证JWT就行
* *
* @param authenticationToken * @param authenticationToken
* @return * @return
......
...@@ -103,7 +103,7 @@ public class ShiroLoginServiceImpl implements ShiroLoginService { ...@@ -103,7 +103,7 @@ public class ShiroLoginServiceImpl implements ShiroLoginService {
// 生成新token字符串 // 生成新token字符串
String newToken = JwtUtil.generateToken(username, salt, Duration.ofSeconds(expireSecond)); String newToken = JwtUtil.generateToken(username, salt, Duration.ofSeconds(expireSecond));
// 生成新JwtToken对象 // 生成新JwtToken对象
JwtToken newJwtToken = JwtToken.build(newToken, username, salt, expireSecond,jwtToken.getType()); JwtToken newJwtToken = JwtToken.build(newToken, username, salt, expireSecond, jwtToken.getType());
// 更新redis缓存 // 更新redis缓存
sysLoginRedisService.refreshLoginInfo(token, username, newJwtToken); sysLoginRedisService.refreshLoginInfo(token, username, newJwtToken);
log.debug("刷新token成功,原token:{},新token:{}", token, newToken); log.debug("刷新token成功,原token:{},新token:{}", token, newToken);
......
...@@ -56,7 +56,7 @@ public class LoginUtil { ...@@ -56,7 +56,7 @@ public class LoginUtil {
} }
// return (LoginSysUserRedisVo) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_USER, username)); // return (LoginSysUserRedisVo) redisTemplate.opsForValue().get(String.format(CommonRedisKey.LOGIN_USER, username));
LoginSysUserRedisVo loginSysUserRedisVo =new LoginSysUserRedisVo(); LoginSysUserRedisVo loginSysUserRedisVo = new LoginSysUserRedisVo();
loginSysUserRedisVo.setUsername(username); loginSysUserRedisVo.setUsername(username);
return loginSysUserRedisVo; return loginSysUserRedisVo;
} }
......
...@@ -38,10 +38,6 @@ public class VerificationCode { ...@@ -38,10 +38,6 @@ public class VerificationCode {
*/ */
private final int height = 38; private final int height = 38;
/** /**
* 用来保存验证码的文本内容
**/
private String text;
/**
* 获取随机数对象 * 获取随机数对象
**/ **/
private final Random r = new Random(); private final Random r = new Random();
...@@ -57,6 +53,10 @@ public class VerificationCode { ...@@ -57,6 +53,10 @@ public class VerificationCode {
* 生成的验证码的个数 * 生成的验证码的个数
**/ **/
private final int codeNum = 4; private final int codeNum = 4;
/**
* 用来保存验证码的文本内容
**/
private String text;
/** /**
* 获取随机的颜色 * 获取随机的颜色
......
...@@ -40,6 +40,10 @@ public class SpringBootPlusGenerator { ...@@ -40,6 +40,10 @@ public class SpringBootPlusGenerator {
* @param args * @param args
*/ */
public static void main(String[] args) { public static void main(String[] args) {
getCode("123");
}
private static void getCode(String tableName) {
GeneratorProperties generatorProperties = new GeneratorProperties(); GeneratorProperties generatorProperties = new GeneratorProperties();
// 设置基本信息 // 设置基本信息
...@@ -51,7 +55,7 @@ public class SpringBootPlusGenerator { ...@@ -51,7 +55,7 @@ public class SpringBootPlusGenerator {
.setFileOverride(true); .setFileOverride(true);
// 设置表信息 // 设置表信息
generatorProperties.addTable("app_user", "id"); generatorProperties.addTable(tableName, "id");
// 设置表前缀 // 设置表前缀
// generatorProperties.setTablePrefix(Arrays.asList("tb_")); // generatorProperties.setTablePrefix(Arrays.asList("tb_"));
...@@ -100,7 +104,6 @@ public class SpringBootPlusGenerator { ...@@ -100,7 +104,6 @@ public class SpringBootPlusGenerator {
// 生成代码 // 生成代码
CodeGenerator codeGenerator = new CodeGenerator(); CodeGenerator codeGenerator = new CodeGenerator();
codeGenerator.generator(generatorProperties); codeGenerator.generator(generatorProperties);
} }
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
<module>admin</module> <module>admin</module>
<module>bootstrap</module> <module>bootstrap</module>
<module>config</module> <module>config</module>
<!-- <module>distribution</module>--> <!-- <module>distribution</module>-->
<module>framework</module> <module>framework</module>
<module>generator</module> <module>generator</module>
<module>scheduled</module> <module>scheduled</module>
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
<description>任务调度JOB模块</description> <description>任务调度JOB模块</description>
<dependencies> <dependencies>
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>io.geekidea.springbootplus</groupId>--> <!-- <groupId>io.geekidea.springbootplus</groupId>-->
<!-- <artifactId>example</artifactId>--> <!-- <artifactId>example</artifactId>-->
<!-- </dependency>--> <!-- </dependency>-->
</dependencies> </dependencies>
</project> </project>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment