代码提交

master
Xusan 2024-05-13 14:55:42 +08:00
parent 03c54e4cc5
commit 9dca0dd6a3
32 changed files with 621 additions and 84 deletions

View File

@ -1,4 +1,4 @@
# 歧义数据管理api # 防汛抗旱通讯录api
## 目录 ## 目录
``` ```

12
pom.xml
View File

@ -186,6 +186,18 @@
</dependency> </dependency>
<!-- joda-time end --> <!-- joda-time end -->
<!-- Sa-Token 权限认证, 在线文档http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.30.0</version>
</dependency><!-- Sa-Token 整合 Redis (使用 jackson 序列化方式) -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis-jackson</artifactId>
<version>1.30.0</version>
</dependency>
</dependencies> </dependencies>

View File

@ -11,7 +11,6 @@ CREATE TABLE "FXKH_TXL"."ADDRESS_BOOK"
"URL" VARCHAR(200), "URL" VARCHAR(200),
"SORT" INTEGER DEFAULT 0, "SORT" INTEGER DEFAULT 0,
"V" INTEGER DEFAULT 0, "V" INTEGER DEFAULT 0,
"ROLE" CHAR(1) DEFAULT 0,
NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ; NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
COMMENT ON TABLE "FXKH_TXL"."ADDRESS_BOOK" IS '通讯录'; COMMENT ON TABLE "FXKH_TXL"."ADDRESS_BOOK" IS '通讯录';
@ -21,7 +20,6 @@ COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."NAME" IS '姓名';
COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."ORGANIZATION" IS '组织'; COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."ORGANIZATION" IS '组织';
COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."PHONE" IS '手机号'; COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."PHONE" IS '手机号';
COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."POSITION" IS '职务'; COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."POSITION" IS '职务';
COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."ROLE" IS '0:普通管理员,1:政区管理员,99:系统管理员';
COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."SORT" IS '序号'; COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."SORT" IS '序号';
COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."TEL" IS '电话'; COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."TEL" IS '电话';
COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."URL" IS '图片路径'; COMMENT ON COLUMN "FXKH_TXL"."ADDRESS_BOOK"."URL" IS '图片路径';
@ -44,13 +42,13 @@ CREATE TABLE "FXKH_TXL"."UNIT_DICT"
"ID" INTEGER IDENTITY(1, 1) NOT NULL, "ID" INTEGER IDENTITY(1, 1) NOT NULL,
"NAME" VARCHAR(50) NOT NULL, "NAME" VARCHAR(50) NOT NULL,
"SORT" INTEGER DEFAULT 0 NOT NULL, "SORT" INTEGER DEFAULT 0 NOT NULL,
"TYPE" CHAR(1) NOT NULL, "O_ID" INTEGER NOT NULL,
NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ; NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
COMMENT ON TABLE "FXKH_TXL"."UNIT_DICT" IS '单位字典表'; COMMENT ON TABLE "FXKH_TXL"."UNIT_DICT" IS '单位字典表';
COMMENT ON COLUMN "FXKH_TXL"."UNIT_DICT"."NAME" IS '名称'; COMMENT ON COLUMN "FXKH_TXL"."UNIT_DICT"."NAME" IS '名称';
COMMENT ON COLUMN "FXKH_TXL"."UNIT_DICT"."SORT" IS '序号'; COMMENT ON COLUMN "FXKH_TXL"."UNIT_DICT"."SORT" IS '序号';
COMMENT ON COLUMN "FXKH_TXL"."UNIT_DICT"."TYPE" IS '1:联络名单, 2: 湖泊及涉湖泵站,3:重要提防,4:大型水库大坝'; COMMENT ON COLUMN "FXKH_TXL"."UNIT_DICT"."O_ID" IS '组织类型Id';
CREATE TABLE "FXKH_TXL"."FC" CREATE TABLE "FXKH_TXL"."FC"
@ -90,11 +88,9 @@ CREATE TABLE "FXKH_TXL"."ORGANIZATION"
"OBJ_ID" VARCHAR(50) NOT NULL, "OBJ_ID" VARCHAR(50) NOT NULL,
"NAME" VARCHAR(50) NOT NULL, "NAME" VARCHAR(50) NOT NULL,
"SORT" INTEGER DEFAULT 0, "SORT" INTEGER DEFAULT 0,
"ADCD" CHAR(15) NOT NULL,
NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ; NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
COMMENT ON TABLE "FXKH_TXL"."ORGANIZATION" IS '组织表'; COMMENT ON TABLE "FXKH_TXL"."ORGANIZATION" IS '组织表';
COMMENT ON COLUMN "FXKH_TXL"."ORGANIZATION"."ADCD" IS '政区编码';
COMMENT ON COLUMN "FXKH_TXL"."ORGANIZATION"."NAME" IS '名称'; COMMENT ON COLUMN "FXKH_TXL"."ORGANIZATION"."NAME" IS '名称';
COMMENT ON COLUMN "FXKH_TXL"."ORGANIZATION"."OBJ_ID" IS '编号'; COMMENT ON COLUMN "FXKH_TXL"."ORGANIZATION"."OBJ_ID" IS '编号';
COMMENT ON COLUMN "FXKH_TXL"."ORGANIZATION"."SORT" IS '序号'; COMMENT ON COLUMN "FXKH_TXL"."ORGANIZATION"."SORT" IS '序号';
@ -103,14 +99,20 @@ COMMENT ON COLUMN "FXKH_TXL"."ORGANIZATION"."SORT" IS '序号';
CREATE TABLE "FXKH_TXL"."USER" CREATE TABLE "FXKH_TXL"."USER"
( (
"ID" INTEGER IDENTITY(1, 1) NOT NULL, "ID" INTEGER IDENTITY(1, 1) NOT NULL,
"USERNAME" VARCHAR(50) NOT NULL,
"PASSWORD" VARCHAR(50) NOT NULL, "PASSWORD" VARCHAR(50) NOT NULL,
"SALT" VARCHAR(50), "SALT" VARCHAR(50),
"ROLE" CHAR(1) DEFAULT 0,
"AB_ID" INTEGER, "AB_ID" INTEGER,
"LAST_DATE" DATETIME(0),
NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ; NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
COMMENT ON TABLE "FXKH_TXL"."USER" IS '用户表'; COMMENT ON TABLE "FXKH_TXL"."USER" IS '用户表';
COMMENT ON COLUMN "FXKH_TXL"."USER"."AB_ID" IS '通讯录id'; COMMENT ON COLUMN "FXKH_TXL"."USER"."AB_ID" IS '通讯录id';
COMMENT ON COLUMN "FXKH_TXL"."USER"."USERNAME" IS '用户名';
COMMENT ON COLUMN "FXKH_TXL"."USER"."ROLE" IS '0:普通管理员,1:政区管理员,99:系统管理员';
COMMENT ON COLUMN "FXKH_TXL"."USER"."PASSWORD" IS '密码'; COMMENT ON COLUMN "FXKH_TXL"."USER"."PASSWORD" IS '密码';
COMMENT ON COLUMN "FXKH_TXL"."USER"."LAST_DATE" IS '最后登录时间';
COMMENT ON COLUMN "FXKH_TXL"."USER"."SALT" IS '盐值'; COMMENT ON COLUMN "FXKH_TXL"."USER"."SALT" IS '盐值';

View File

@ -1,12 +1,16 @@
package com.whdc.controller; package com.whdc.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.whdc.model.dto.AddressBootDto; import com.whdc.model.dto.AddressBootDto;
import com.whdc.model.entity.AddressBook; import com.whdc.model.entity.AddressBook;
import com.whdc.model.entity.User;
import com.whdc.model.enums.Role;
import com.whdc.model.enums.VersionsType; import com.whdc.model.enums.VersionsType;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
import com.whdc.service.IAddressBookService; import com.whdc.service.IAddressBookService;
import com.whdc.service.IUserService;
import com.whdc.service.IVersionsService; import com.whdc.service.IVersionsService;
import com.whdc.utils.ResultJson; import com.whdc.utils.ResultJson;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -32,6 +36,9 @@ public class AddressBookController {
@Autowired @Autowired
private IAddressBookService service; private IAddressBookService service;
@Autowired
private IUserService userService;
@Autowired @Autowired
private IVersionsService versionsService; private IVersionsService versionsService;
@ -57,6 +64,15 @@ public class AddressBookController {
@ApiOperation(value = "添加") @ApiOperation(value = "添加")
@PostMapping(value = "save") @PostMapping(value = "save")
public ResultJson insert(@RequestBody @Validated(Insert.class) AddressBook model) { public ResultJson insert(@RequestBody @Validated(Insert.class) AddressBook model) {
Integer loginId = (Integer) StpUtil.getLoginId();
String role = userService.getRole(loginId);
switch (Objects.requireNonNull(Role.getByName(role))) {
case R000:return ResultJson.error("权限不足");
case R001:
case R099:break;
default:return ResultJson.error("权限不足!!");
}
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
@ -68,9 +84,14 @@ public class AddressBookController {
// 添加日志 // 添加日志
versionsService.saveInfo(model,VersionsType.ADD); versionsService.saveInfo(model,VersionsType.ADD);
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),null,model.getCreateId(),new Date(), VersionsType.ADD.getName()));
return ResultJson.ok(service.save(model)); boolean save = service.save(model);
if (save){
userService.register( model.getPhone(), model.getId());
}
return ResultJson.ok(save);
} }
@ -78,6 +99,22 @@ public class AddressBookController {
@PostMapping(value = "edit") @PostMapping(value = "edit")
public ResultJson update(@RequestBody @Validated(Update.class) AddressBook model) { public ResultJson update(@RequestBody @Validated(Update.class) AddressBook model) {
Integer loginId = (Integer) StpUtil.getLoginId();
String role = userService.getRole(loginId);
switch (Objects.requireNonNull(Role.getByName(role))) {
case R000:{
// 不是修改自己
if (!model.getId().equals(loginId)){
return ResultJson.error("权限不足");
}
};
case R001:
case R099:break;
default:return ResultJson.error("权限不足!!");
}
AddressBook byId = service.getById(model.getId()); AddressBook byId = service.getById(model.getId());
if (Objects.isNull(byId)){ if (Objects.isNull(byId)){
return ResultJson.error("当前数据不存在"); return ResultJson.error("当前数据不存在");
@ -108,16 +145,25 @@ public class AddressBookController {
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE.getName())); // versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE.getName()));
versionsService.saveInfo(model,VersionsType.UPDATE); versionsService.saveInfo(model,VersionsType.UPDATE);
// 不修改角色
model.setRole(byId.getRole());
return ResultJson.ok(service.updateById(model)); return ResultJson.ok(service.updateById(model));
} }
@ApiOperation(value = "修改权限") @ApiOperation(value = "修改权限")
@PostMapping(value = "edit") @PostMapping(value = "edit")
public ResultJson updateRole(@RequestBody @Validated(Update.class) AddressBook model) { public ResultJson updateRole(@RequestBody @Validated(Update.class) User model) {
AddressBook byId = service.getById(model.getId());
Integer loginId = (Integer) StpUtil.getLoginId();
String role = userService.getRole(loginId);
switch (Objects.requireNonNull(Role.getByName(role))) {
case R000:
case R001: return ResultJson.error("权限不足");
case R099:break;
default:return ResultJson.error("权限不足!!");
}
AddressBook byId = service.getById(model.getAbId());
if (Objects.isNull(byId)){ if (Objects.isNull(byId)){
return ResultJson.error("当前数据不存在"); return ResultJson.error("当前数据不存在");
} }
@ -137,12 +183,13 @@ public class AddressBookController {
// } // }
// // 添加日志 // // 添加日志
// versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE_ROLE.getName())); // versionsService.save(new Versions(null, JSON.toJSONString(model),model.getId(),++version,model.getCreateId(),new Date(), VersionsType.UPDATE_ROLE.getName()));
versionsService.saveInfo(model,VersionsType.UPDATE_ROLE); versionsService.saveInfo(byId,VersionsType.UPDATE_ROLE);
// 只修改角色 // 只修改角色
boolean update = service.lambdaUpdate().set(AddressBook::getRole, model.getRole())
.eq(AddressBook::getId, model.getId()) boolean update = userService.lambdaUpdate().set(User::getRole, model.getRole())
.eq(User::getAbId, model.getAbId())
.update(); .update();
return ResultJson.ok(update); return ResultJson.ok(update);
} }
@ -153,6 +200,16 @@ public class AddressBookController {
public ResultJson delete(@PathVariable("id") Integer id) { public ResultJson delete(@PathVariable("id") Integer id) {
Integer loginId = (Integer) StpUtil.getLoginId();
String role = userService.getRole(loginId);
switch (Objects.requireNonNull(Role.getByName(role))) {
case R000:
case R001: return ResultJson.error("权限不足");
case R099:break;
default:return ResultJson.error("权限不足!!");
}
AddressBook model = service.getById(id); AddressBook model = service.getById(id);
if (Objects.isNull(model)) { if (Objects.isNull(model)) {

View File

@ -1,9 +1,12 @@
package com.whdc.controller; package com.whdc.controller;
import com.whdc.model.dto.FcDto;
import com.whdc.model.entity.Fc; import com.whdc.model.entity.Fc;
import com.whdc.model.group.Find;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
import com.whdc.model.vo.FcVo;
import com.whdc.service.IFcService; import com.whdc.service.IFcService;
import com.whdc.utils.ResultJson; import com.whdc.utils.ResultJson;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -31,8 +34,8 @@ public class FcController {
@ApiOperation(value = "查询所有") // @ApiOperation(value = "查询所有")
@PostMapping(value = "find") // @PostMapping(value = "find")
public ResultJson<Fc> find(@RequestBody Fc dto) { public ResultJson<Fc> find(@RequestBody Fc dto) {
return ResultJson.ok(service.find(dto)); return ResultJson.ok(service.find(dto));
@ -41,7 +44,7 @@ public class FcController {
@ApiOperation(value = "分页查询") @ApiOperation(value = "分页查询")
@PostMapping(value = "page") @PostMapping(value = "page")
public ResultJson<Fc> page(@RequestBody Fc dto) { public ResultJson<FcVo> page(@RequestBody @Validated(Find.class) FcDto dto) {
return ResultJson.ok(service.page(dto)); return ResultJson.ok(service.page(dto));
@ -54,7 +57,8 @@ public class FcController {
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(Fc::getName,String.valueOf(model.getName()).trim()) .eq(Fc::getUserId,String.valueOf(model.getUserId()).trim())
.eq(Fc::getAbId,String.valueOf(model.getAbId()).trim())
.list()) .list())
){ ){
return ResultJson.error("该名称重复"); return ResultJson.error("该名称重复");
@ -70,7 +74,8 @@ public class FcController {
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(Fc::getName,String.valueOf(model.getName()).trim()) .eq(Fc::getUserId,String.valueOf(model.getUserId()).trim())
.eq(Fc::getAbId,String.valueOf(model.getAbId()).trim())
.ne(Fc::getId, model.getId()) .ne(Fc::getId, model.getId())
.list()) .list())
){ ){

View File

@ -1,6 +1,7 @@
package com.whdc.controller; package com.whdc.controller;
import com.whdc.model.dto.FindPageDto;
import com.whdc.model.entity.LoginInfo; import com.whdc.model.entity.LoginInfo;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
@ -14,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.Objects; import java.util.Objects;
/** /**
@ -41,7 +43,7 @@ public class LoginInfoController {
@ApiOperation(value = "分页查询") @ApiOperation(value = "分页查询")
@PostMapping(value = "page") @PostMapping(value = "page")
public ResultJson<LoginInfo> page(@RequestBody LoginInfo dto) { public ResultJson<LoginInfo> page(@RequestBody FindPageDto dto) {
return ResultJson.ok(service.page(dto)); return ResultJson.ok(service.page(dto));
@ -51,38 +53,21 @@ public class LoginInfoController {
@ApiOperation(value = "添加") @ApiOperation(value = "添加")
@PostMapping(value = "save") @PostMapping(value = "save")
public ResultJson insert(@RequestBody @Validated(Insert.class) LoginInfo model) { public ResultJson insert(@RequestBody @Validated(Insert.class) LoginInfo model) {
model.setCreateTime(new Date());
if (CollectionUtils.isNotEmpty(
service.lambdaQuery()
.eq(LoginInfo::getName,String.valueOf(model.getName()).trim())
.list())
){
return ResultJson.error("该名称重复");
}
return ResultJson.ok(service.save(model)); return ResultJson.ok(service.save(model));
} }
@ApiOperation(value = "修改") // @ApiOperation(value = "修改")
@PostMapping(value = "edit") // @PostMapping(value = "edit")
public ResultJson update(@RequestBody @Validated(Update.class) LoginInfo model) { public ResultJson update(@RequestBody @Validated(Update.class) LoginInfo model) {
if (CollectionUtils.isNotEmpty(
service.lambdaQuery()
.eq(LoginInfo::getName,String.valueOf(model.getName()).trim())
.ne(LoginInfo::getId, model.getId())
.list())
){
return ResultJson.error("该名称重复");
}
return ResultJson.ok(service.updateById(model)); return ResultJson.ok(service.updateById(model));
} }
@ApiOperation(value = "删除") // @ApiOperation(value = "删除")
@GetMapping(value = "del/{id}") // @GetMapping(value = "del/{id}")
public ResultJson delete(@PathVariable("id") Integer id) { public ResultJson delete(@PathVariable("id") Integer id) {

View File

@ -1,6 +1,7 @@
package com.whdc.controller; package com.whdc.controller;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.whdc.model.entity.Organization; import com.whdc.model.entity.Organization;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
@ -10,6 +11,7 @@ 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.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -35,7 +37,18 @@ public class OrganizationController {
@PostMapping(value = "find") @PostMapping(value = "find")
public ResultJson<Organization> find(@RequestBody Organization dto) { public ResultJson<Organization> find(@RequestBody Organization dto) {
return ResultJson.ok(service.find(dto)); LambdaQueryChainWrapper<Organization> query = service.lambdaQuery();
String name = dto.getName();
if (StringUtils.isNotBlank(name)){
query.like(Organization::getName,name);
}
String objId = dto.getObjId();
if (StringUtils.isNotBlank(objId)){
query.eq(Organization::getObjId,objId);
}
query.orderByAsc(Organization::getSort);
return ResultJson.ok(query.list());
} }

View File

@ -1,15 +1,20 @@
package com.whdc.controller; package com.whdc.controller;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.whdc.model.entity.Organization;
import com.whdc.model.entity.UnitDict; import com.whdc.model.entity.UnitDict;
import com.whdc.model.group.Find;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
import com.whdc.service.IOrganizationService;
import com.whdc.service.IUnitDictService; import com.whdc.service.IUnitDictService;
import com.whdc.utils.ResultJson; import com.whdc.utils.ResultJson;
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.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -28,19 +33,34 @@ public class UnitDictController {
@Autowired @Autowired
private IUnitDictService service; private IUnitDictService service;
@Autowired
private IOrganizationService organizationService;
@ApiOperation(value = "查询所有") @ApiOperation(value = "查询所有")
@PostMapping(value = "find") @PostMapping(value = "find")
public ResultJson<UnitDict> find(@RequestBody UnitDict dto) { public ResultJson<UnitDict> find(@RequestBody @Validated(Find.class) UnitDict dto) {
if (Objects.isNull(organizationService.getById( dto.getOId()))) {
return ResultJson.error("组织类型Id不存在");
}
LambdaQueryChainWrapper<UnitDict> query = service.lambdaQuery();
String name = dto.getName();
if (StringUtils.isNotBlank(name)) {
query.like(UnitDict::getName, name);
}
query.eq(UnitDict::getOId, dto.getOId());
query.orderByAsc(UnitDict::getSort);
return ResultJson.ok(query.list());
return ResultJson.ok(service.find(dto));
} }
@ApiOperation(value = "分页查询") // @ApiOperation(value = "分页查询")
@PostMapping(value = "page") // @PostMapping(value = "page")
public ResultJson<UnitDict> page(@RequestBody UnitDict dto) { public ResultJson<UnitDict> page(@RequestBody UnitDict dto) {
return ResultJson.ok(service.page(dto)); return ResultJson.ok(service.page(dto));
@ -52,11 +72,16 @@ public class UnitDictController {
@PostMapping(value = "save") @PostMapping(value = "save")
public ResultJson insert(@RequestBody @Validated(Insert.class) UnitDict model) { public ResultJson insert(@RequestBody @Validated(Insert.class) UnitDict model) {
if (Objects.isNull(organizationService.getById( model.getOId()))) {
return ResultJson.error("组织类型Id不存在");
}
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(UnitDict::getName,String.valueOf(model.getName()).trim()) .eq(UnitDict::getName, String.valueOf(model.getName()).trim())
.eq(UnitDict::getOId, String.valueOf(model.getOId()).trim())
.list()) .list())
){ ) {
return ResultJson.error("该名称重复"); return ResultJson.error("该名称重复");
} }
@ -68,12 +93,18 @@ public class UnitDictController {
@PostMapping(value = "edit") @PostMapping(value = "edit")
public ResultJson update(@RequestBody @Validated(Update.class) UnitDict model) { public ResultJson update(@RequestBody @Validated(Update.class) UnitDict model) {
if (Objects.isNull(organizationService.getById( model.getOId()))) {
return ResultJson.error("组织类型Id不存在");
}
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(UnitDict::getName,String.valueOf(model.getName()).trim()) .eq(UnitDict::getName, String.valueOf(model.getName()).trim())
.eq(UnitDict::getOId, String.valueOf(model.getOId()).trim())
.ne(UnitDict::getId, model.getId()) .ne(UnitDict::getId, model.getId())
.list()) .list())
){ ) {
return ResultJson.error("该名称重复"); return ResultJson.error("该名称重复");
} }

View File

@ -1,9 +1,13 @@
package com.whdc.controller; package com.whdc.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.whdc.model.dto.LoginDto;
import com.whdc.model.entity.User; import com.whdc.model.entity.User;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
import com.whdc.model.vo.AuthToken;
import com.whdc.model.vo.LoginVo;
import com.whdc.service.IUserService; import com.whdc.service.IUserService;
import com.whdc.utils.ResultJson; import com.whdc.utils.ResultJson;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -14,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.Objects; import java.util.Objects;
/** /**
@ -30,7 +36,37 @@ public class UserController {
private IUserService service; private IUserService service;
@ApiOperation(value = "登录", notes = "登录后,从 tokenInfo 中获取 token 相关信息。headers[tokenName] = tokenValue ")
@PostMapping("doLogin")
public ResultJson<LoginVo> doLogin(@RequestBody @Validated LoginDto obj) throws InvocationTargetException, IllegalAccessException {
LoginVo loginVo = service.login(obj);
if (loginVo == null || loginVo.getId() == null) {
return ResultJson.error("登录失败");
} else {
StpUtil.login(loginVo.getId()); // 使用 user id 登录
// 获取 Token 相关参数
loginVo.setTokenInfo(new AuthToken(StpUtil.getTokenInfo()));
// 更新最后登录时间
service.updateLastDate(loginVo.getId());
return ResultJson.ok(loginVo);
}
}
@ApiOperation(value = "查询登录状态")
@PostMapping("isLogin")
public ResultJson<AuthToken> isLogin() {
return ResultJson.ok(StpUtil.getTokenInfo());
}
@ApiOperation(value = "按id踢人下线")
@PostMapping("kickout/{id}")
public ResultJson kickout(@PathVariable String id) {
StpUtil.kickout(id);
return ResultJson.ok("将用户[" + id + "]踢下线");
}
@ApiOperation(value = "查询所有") @ApiOperation(value = "查询所有")
@PostMapping(value = "find") @PostMapping(value = "find")
public ResultJson<User> find(@RequestBody User dto) { public ResultJson<User> find(@RequestBody User dto) {
@ -48,19 +84,21 @@ public class UserController {
} }
@ApiOperation(value = "添加") // @ApiOperation(value = "注册")
@PostMapping(value = "save") // @PostMapping(value = "register")
public ResultJson insert(@RequestBody @Validated(Insert.class) User model) { public ResultJson insert(@RequestBody @Validated(Insert.class) User model) {
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(User::getName,String.valueOf(model.getName()).trim()) .eq(User::getUsername,String.valueOf(model.getUsername()).trim())
.list()) .list())
){ ){
return ResultJson.error("该名称重复"); return ResultJson.error("该名称重复");
} }
return ResultJson.ok(service.save(model));
return ResultJson.ok(service.register(model));
} }
@ -70,7 +108,7 @@ public class UserController {
if (CollectionUtils.isNotEmpty( if (CollectionUtils.isNotEmpty(
service.lambdaQuery() service.lambdaQuery()
.eq(User::getName,String.valueOf(model.getName()).trim()) .eq(User::getUsername,String.valueOf(model.getUsername()).trim())
.ne(User::getId, model.getId()) .ne(User::getId, model.getId())
.list()) .list())
){ ){

View File

@ -2,6 +2,8 @@ package com.whdc.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.whdc.model.dto.FcDto;
import com.whdc.model.vo.FcVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.whdc.model.entity.Fc; import com.whdc.model.entity.Fc;
@ -13,7 +15,7 @@ import java.util.List;
*/ */
public interface FcMapper extends BaseMapper<Fc> { public interface FcMapper extends BaseMapper<Fc> {
IPage<Fc> page(@Param("page") IPage<Fc> page, @Param("dto") Fc dto); IPage<FcVo> page(@Param("page") IPage<FcVo> page, @Param("dto") FcDto dto);
List<Fc> find(@Param("dto") Fc dto); List<Fc> find(@Param("dto") Fc dto);

View File

@ -2,6 +2,7 @@ package com.whdc.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.whdc.model.dto.FindPageDto;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.whdc.model.entity.LoginInfo; import com.whdc.model.entity.LoginInfo;
@ -13,7 +14,7 @@ import java.util.List;
*/ */
public interface LoginInfoMapper extends BaseMapper<LoginInfo> { public interface LoginInfoMapper extends BaseMapper<LoginInfo> {
IPage<LoginInfo> page(@Param("page") IPage<LoginInfo> page, @Param("dto") LoginInfo dto); IPage<LoginInfo> page(@Param("page") IPage<LoginInfo> page, @Param("dto") FindPageDto dto);
List<LoginInfo> find(@Param("dto") LoginInfo dto); List<LoginInfo> find(@Param("dto") LoginInfo dto);

View File

@ -2,6 +2,7 @@ package com.whdc.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.whdc.model.vo.LoginVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.whdc.model.entity.User; import com.whdc.model.entity.User;
@ -17,4 +18,6 @@ public interface UserMapper extends BaseMapper<User> {
List<User> find(@Param("dto") User dto); List<User> find(@Param("dto") User dto);
LoginVo findByLoginName(@Param("username") String username);
} }

View File

@ -0,0 +1,31 @@
package com.whdc.model.dto;
import com.whdc.model.group.Find;
import com.whdc.model.group.Insert;
import com.whdc.model.group.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author xusan
* @date 202332008:57:22
*/
@Data
public class FcDto extends FindPageDto {
@ApiModelProperty(value = "用户id")
@NotNull(message = "用户id不能为空", groups = {Find.class})
private String userId;
@ApiModelProperty(value = "类型 0:常用联系人,1:置顶联系人")
@NotNull(message = "类型不能为空", groups = {Find.class})
private String type;
@ApiModelProperty(value = "联系人名称")
private String name;
@ApiModelProperty(value = "联系人手机号")
private String phone;
}

View File

@ -0,0 +1,21 @@
package com.whdc.model.dto;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
/**
* @author
* @date 2022-07-01 1:21
*/
@Data
public class LoginDto {
@ApiParam(value = "登录名")
@NotEmpty(message = "登录名不能为空")
private String loginName;
@ApiParam(value = "密码")
@NotEmpty(message = "密码不能为空")
private String password;
}

View File

@ -77,10 +77,6 @@ public class AddressBook extends Model<AddressBook> implements Serializable {
@ApiModelProperty(value = "版本") @ApiModelProperty(value = "版本")
private Integer v; private Integer v;
@TableField("ROLE")
@ApiModelProperty(value = "0:普通管理员,1:政区管理员,99:系统管理员")
private String role;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "创建人id") @ApiModelProperty(value = "创建人id")
private String createId; private String createId;

View File

@ -40,6 +40,7 @@ public class LoginInfo extends Model<LoginInfo> implements Serializable {
@TableField("CREATE_ID") @TableField("CREATE_ID")
@ApiModelProperty(value = "新增人id") @ApiModelProperty(value = "新增人id")
@NotNull(message = "id不能为空" , groups = {Insert.class})
private String createId; private String createId;
@TableField("CREATE_TIME") @TableField("CREATE_TIME")

View File

@ -50,8 +50,4 @@ public class Organization extends Model<Organization> implements Serializable {
@ApiModelProperty(value = "序号") @ApiModelProperty(value = "序号")
private Integer sort; private Integer sort;
@NotEmpty(message = "政区编码不能为空", groups = {Insert.class,Update.class})
@TableField("ADCD")
@ApiModelProperty(value = "政区编码")
private String adcd;
} }

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.whdc.model.group.Find;
import com.whdc.model.group.Insert; import com.whdc.model.group.Insert;
import com.whdc.model.group.Update; import com.whdc.model.group.Update;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
@ -46,8 +47,9 @@ public class UnitDict extends Model<UnitDict> implements Serializable {
@ApiModelProperty(value = "序号") @ApiModelProperty(value = "序号")
private Integer sort; private Integer sort;
@NotEmpty(message = "类型不能为空", groups = {Insert.class,Update.class}) @NotEmpty(message = "组织类型Id不能为空", groups = {Insert.class,Update.class, Find.class})
@TableField("TYPE") @TableField("O_ID")
@ApiModelProperty(value = "1:省防指,2: 省防办,3: 省防指成员单位,4: 市、县防指、防办, 5: 主要湖泊及涉湖泵站,6:重要提防,7: 主要蓄滞洪区,8: 大型水库大坝") // @ApiModelProperty(value = "1:省防指,2: 省防办,3: 省防指成员单位,4: 市、县防指、防办, 5: 主要湖泊及涉湖泵站,6:重要提防,7: 主要蓄滞洪区,8: 大型水库大坝")
private String type; @ApiModelProperty(value = "组织类型Id")
private Integer OId;
} }

View File

@ -30,9 +30,14 @@ public class User extends Model<User> implements Serializable {
@TableId(value = "ID",type = IdType.AUTO) @TableId(value = "ID",type = IdType.AUTO)
@ApiModelProperty(value = "id") @ApiModelProperty(value = "id")
@NotNull(message = "id不能为空" , groups = {Update.class}) // @NotNull(message = "id不能为空" , groups = {Update.class})
private Integer id; private Integer id;
@NotEmpty(message = "用户名不能为空", groups = {Insert.class,Update.class})
@TableField("USERNAME")
@ApiModelProperty(value = "用户名")
private String username;
@NotEmpty(message = "密码不能为空", groups = {Insert.class,Update.class}) @NotEmpty(message = "密码不能为空", groups = {Insert.class,Update.class})
@TableField("PASSWORD") @TableField("PASSWORD")
@ -45,5 +50,15 @@ public class User extends Model<User> implements Serializable {
@TableField("AB_ID") @TableField("AB_ID")
@ApiModelProperty(value = "通讯录id") @ApiModelProperty(value = "通讯录id")
@NotEmpty(message = "通讯录id不能为空", groups = {Insert.class,Update.class})
private Integer abId; private Integer abId;
@TableField("LAST_DATE")
@ApiModelProperty(value = "最后登录时间")
private Date lastLoginDate;
@TableField("ROLE")
@ApiModelProperty(value = "0:普通管理员,1:政区管理员,99:系统管理员")
private String role;
} }

View File

@ -0,0 +1,72 @@
package com.whdc.model.enums;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @author xusan
* @date 2022/7/14 16:55
*
*/
public enum Role {
R000("0", "普通管理员"),
R001("1", "政区管理员"),
R099("99", "系统管理员");
private String name;
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
private Role(String name, String value) {
this.name = name;
this.value = value;
}
public static Map<String, Role> map() {
Map<String, Role> map = new HashMap<>();
Role[] values = Role.values();
for (Role e : values) {
map.put(e.getValue(), e);
}
return map;
}
public static Map<String, Role> mapName() {
Map<String, Role> map = new HashMap<>();
Role[] values = Role.values();
for (Role e : values) {
map.put(e.getName(), e);
}
return map;
}
public static Role getByValue(String value) {
if (Objects.isNull(value)) return null;
return map().get(value);
}
public static Role getByName(String name) {
if (StringUtils.isEmpty(name)) return null;
return mapName().get(name);
}
}

View File

@ -0,0 +1,44 @@
package com.whdc.model.vo;
import cn.dev33.satoken.stp.SaTokenInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
/**
* SaTokenInfo swagger
*
* @author
* @date 2022-07-18 8:10
* {
* "tokenName": "satoken", // token名称
* "tokenValue": "e67b99f1-3d7a-4a8d-bb2f-e888a0805633", // token值
* "isLogin": true, // 此token是否已经登录
* "loginId": "10001", // 此token对应的LoginId未登录时为null
* "loginType": "login", // 账号类型标识
* "tokenTimeout": 2591977, // token剩余有效期 (单位: 秒)
* "sessionTimeout": 2591977, // User-Session剩余有效时间 (单位: 秒)
* "tokenSessionTimeout": -2, // Token-Session剩余有效时间 (单位: 秒)
* "tokenActivityTimeout": -1, // token剩余无操作有效时间 (单位: 秒)
* "loginDevice": "default-device" // 登录设备类型
* }
*/
@Data
@ApiModel("授权 token 信息")
public class AuthToken extends SaTokenInfo {
@ApiModelProperty("token 名称")
public String tokenName;
@ApiModelProperty("token 值")
public String tokenValue;
@ApiModelProperty("token 剩余有效期 (单位: 秒)")
public long tokenTimeout;
public AuthToken(SaTokenInfo info) throws InvocationTargetException, IllegalAccessException {
BeanUtils.copyProperties(this, info);
}
}

View File

@ -0,0 +1,26 @@
package com.whdc.model.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.whdc.model.entity.AddressBook;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Author xusan
* @Date 2024/5/13 10:17
* @Notes
**/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(description = "常用联系人置顶联系人通讯录")
public class FcVo extends AddressBook{
@TableField("FSORT")
@ApiModelProperty(value = "常用联系人置顶联系人序号")
private Integer fsort;
}

View File

@ -0,0 +1,39 @@
package com.whdc.model.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* @author
* @date 2022-07-01 1:22
*/
@Data
@Accessors(chain = true) // chain = true 实现链式调用
@JsonInclude(JsonInclude.Include.NON_NULL) // 表示序列化非null属性
public class LoginVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键ID")
private Integer id;
@ApiModelProperty(value = "类型")
private Integer type;
@ApiModelProperty(value = "登录名")
private String loginName;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "token 信息")
private AuthToken tokenInfo;
@ApiModelProperty(value = "角色")
private String role;
}

View File

@ -2,7 +2,9 @@ package com.whdc.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.whdc.model.dto.FcDto;
import com.whdc.model.entity.Fc; import com.whdc.model.entity.Fc;
import com.whdc.model.vo.FcVo;
import java.util.List; import java.util.List;
@ -16,7 +18,7 @@ import java.util.List;
public interface IFcService extends IService<Fc> { public interface IFcService extends IService<Fc> {
// 获取所有规则分页 // 获取所有规则分页
IPage<Fc> page(Fc dto); IPage<FcVo> page(FcDto dto);
// 获取所有规则 // 获取所有规则
List<Fc> find(Fc dto); List<Fc> find(Fc dto);

View File

@ -2,6 +2,7 @@ package com.whdc.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.whdc.model.dto.FindPageDto;
import com.whdc.model.entity.LoginInfo; import com.whdc.model.entity.LoginInfo;
import java.util.List; import java.util.List;
@ -16,7 +17,7 @@ import java.util.List;
public interface ILoginInfoService extends IService<LoginInfo> { public interface ILoginInfoService extends IService<LoginInfo> {
// 获取所有规则分页 // 获取所有规则分页
IPage<LoginInfo> page(LoginInfo dto); IPage<LoginInfo> page(FindPageDto dto);
// 获取所有规则 // 获取所有规则
List<LoginInfo> find(LoginInfo dto); List<LoginInfo> find(LoginInfo dto);

View File

@ -2,7 +2,11 @@ package com.whdc.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.whdc.model.dto.LoginDto;
import com.whdc.model.entity.User; import com.whdc.model.entity.User;
import com.whdc.model.vo.LoginVo;
import org.apache.poi.ss.formula.functions.T;
import java.util.List; import java.util.List;
@ -21,4 +25,14 @@ public interface IUserService extends IService<User> {
// 获取所有规则 // 获取所有规则
List<User> find(User dto); List<User> find(User dto);
LoginVo login(LoginDto obj);
boolean register(User entity);
String getRole(Integer id);
boolean register(String phone, Integer abId);
boolean updateLastDate(Integer id);
} }

View File

@ -1,8 +1,11 @@
package com.whdc.service.impl; package com.whdc.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.whdc.mapper.FcMapper; import com.whdc.mapper.FcMapper;
import com.whdc.model.dto.FcDto;
import com.whdc.model.entity.Fc; import com.whdc.model.entity.Fc;
import com.whdc.model.vo.FcVo;
import com.whdc.service.IFcService; import com.whdc.service.IFcService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -21,8 +24,8 @@ public class FcServiceImpl extends ServiceImpl<FcMapper, Fc> implements IFcServi
@Override @Override
public IPage<Fc> page(Fc dto) { public IPage<FcVo> page(FcDto dto) {
return baseMapper.page(new Page<>(), dto); return baseMapper.page(dto.getPage(), dto);
} }

View File

@ -2,6 +2,7 @@ package com.whdc.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.whdc.mapper.LoginInfoMapper; import com.whdc.mapper.LoginInfoMapper;
import com.whdc.model.dto.FindPageDto;
import com.whdc.model.entity.LoginInfo; import com.whdc.model.entity.LoginInfo;
import com.whdc.service.ILoginInfoService; import com.whdc.service.ILoginInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -21,8 +22,8 @@ public class LoginInfoServiceImpl extends ServiceImpl<LoginInfoMapper, LoginInfo
@Override @Override
public IPage<LoginInfo> page(LoginInfo dto) { public IPage<LoginInfo> page(FindPageDto dto) {
return baseMapper.page(new Page<>(), dto); return baseMapper.page(dto.getPage(), dto);
} }

View File

@ -1,13 +1,22 @@
package com.whdc.service.impl; package com.whdc.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.whdc.exception.MyException;
import com.whdc.mapper.UserMapper; import com.whdc.mapper.UserMapper;
import com.whdc.model.dto.LoginDto;
import com.whdc.model.entity.User; import com.whdc.model.entity.User;
import com.whdc.model.vo.LoginVo;
import com.whdc.service.IUserService; import com.whdc.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
* <p> * <p>
@ -19,6 +28,7 @@ import java.util.List;
@Service @Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
public static final String DEFAULT_PASSWORD = "Fxhk@123456";
@Override @Override
public IPage<User> page(User dto) { public IPage<User> page(User dto) {
@ -33,4 +43,72 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
@Override
public LoginVo login(LoginDto obj) {
User sysUser = findByLoginName(obj.getLoginName());
if (sysUser == null) {
throw new MyException("用户名或密码错误");
}
if (getPassword(sysUser.getSalt() ,obj.getPassword()).equals(sysUser.getPassword())) {
LoginVo out = new LoginVo();
BeanUtils.copyProperties(sysUser, out);
return out;
}
throw new MyException("用户名或密码错误");
}
@Override
public boolean register(User entity) {
// 生成盐值
String salt = UUID.randomUUID().toString().replaceAll("-", "");
// 生成密码
entity.setSalt(salt)
.setPassword(getPassword(salt, DEFAULT_PASSWORD));
return this.save(entity);
}
@Override
public String getRole(Integer id) {
User byId = this.getById(id);
if (byId == null){
throw new MyException("该用户不存在");
}
return byId.getRole();
}
@Override
public boolean register(String phone, Integer abId) {
User user = new User();
user.setAbId(abId)
.setUsername(phone);
return register(user);
}
@Override
public boolean updateLastDate(Integer id) {
return this.lambdaUpdate()
.set(User::getLastLoginDate,new Date())
.eq(User::getId,id)
.update();
}
private User findByLoginName(String loginName) {
if (loginName == null) {
throw new MyException("登录名不能为空");
}
return this.lambdaQuery().eq(User::getUsername, loginName).one();
}
private String getPassword(String salt,String password) {
return DigestUtils.md5DigestAsHex((salt + password).getBytes());
}
} }

View File

@ -3,7 +3,26 @@
<mapper namespace="com.whdc.mapper.FcMapper"> <mapper namespace="com.whdc.mapper.FcMapper">
<select id="page" resultType="com.whdc.model.entity.Fc"> <select id="page" resultType="com.whdc.model.entity.FcVo">
SELECT
AB.*,F.SORT FSORT
FROM
FC F
LEFT JOIN ADDRESS_BOOK AB ON F.AB_ID = AB.ID
WHERE 1=1
<if test="obj.userId != null and obj.userId != '' ">
AND F.USER_ID = #{obj.userId}
</if>
<if test="obj.type != null and obj.userId != '' ">
AND F.TYPE = #{obj.type}
</if>
<if test="obj.name != null and obj.name != '' ">
AND AB.NAME LIKE CONCAT('%', #{obj.name}, '%')
</if>
<if test="obj.phone != null and obj.phone != '' ">
AND AB.PHONE = #{obj.phone}
</if>
ORDER BY F.SORT
</select> </select>

View File

@ -4,6 +4,18 @@
<select id="page" resultType="com.whdc.model.entity.LoginInfo"> <select id="page" resultType="com.whdc.model.entity.LoginInfo">
SELECT
*
FROM
LOGIN_INFO
WHERE 1=1
<if test="obj.createId != null and obj.createId != '' ">
AND CREATE_ID = #{obj.createId}
</if>
<if test="obj.type != null and obj.type != '' ">
AND TYPE= #{obj.type}
</if>
</select> </select>

View File

@ -10,4 +10,19 @@
<select id="find" resultType="com.whdc.model.entity.User"> <select id="find" resultType="com.whdc.model.entity.User">
</select> </select>
<select id="findByLoginName" resultType="com.whdc.model.vo.LoginVo">
SELECT
U.ID,
U.USERNAME,
U.PASSWORD,
U.SALT,
U.ROLE,
U.AB_ID.AB.NAME
FROM
USER U
LEFT JOIN ADDRESS_BOOK AB ON U.AB_ID = AB.ID
WHERE
U.USERNAME = #{username}
</select>
</mapper> </mapper>