From e3577b1cd9eccbefaf3ac5791f5440cce270399b Mon Sep 17 00:00:00 2001 From: xjm Date: Tue, 4 Jun 2024 14:18:15 +0800 Subject: [PATCH 1/5] =?UTF-8?q?wx=E6=89=8B=E6=9C=BA=E5=8F=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E4=BF=AE=E6=94=B9,=20wxopenid=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=96=B0=E5=A2=9E,=E9=80=9A=E8=AE=AF=E5=BD=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/data.sql | 25 +++--- .../controller/AddressBookController.java | 18 +++++ .../com/whdc/controller/UserController.java | 20 +++++ .../com/whdc/mapper/AddressBookMapper.java | 2 + .../com/whdc/model/entity/AddressBook.java | 4 + src/main/java/com/whdc/model/vo/LoginVo.java | 3 + .../java/com/whdc/service/IUserService.java | 2 + .../whdc/service/impl/AdinfoServiceImpl.java | 2 +- .../whdc/service/impl/UserServiceImpl.java | 81 ++++++++++++++++++- src/main/resources/application.yml | 2 +- .../resources/mapper/AddressBookMapper.xml | 13 +++ 11 files changed, 158 insertions(+), 14 deletions(-) diff --git a/sql/data.sql b/sql/data.sql index a8b7120..1fc6a19 100644 --- a/sql/data.sql +++ b/sql/data.sql @@ -2,16 +2,19 @@ DELETE FROM FXKH_TXL.ORGANIZATION; SET IDENTITY_INSERT FXKH_TXL.ORGANIZATION ON; insert into "FXKH_TXL"."ORGANIZATION"("ID", "NAME") VALUES - ('1','湖北省防汛抗旱指挥部成员' ), - ('2','国家防汛抗旱总指挥部办公室(应急部防汛抗旱司)' ), - ('3','长江委水旱灾害防御局' ), - ('4','湖北省省直机关有关单位和部队联系处(室)' ), - ('5','湖北省应急管理厅机关' ), - ('6','湖北省水利厅' ), - ('7','市、州、县防指(防办)' ), - ('8','有关单位' ), - ('9','省应急管理厅机关常用电话' ); + ('1','国家防汛抗旱总指挥部办公室' ), + ('2','长江防汛抗旱总指挥部办公室' ), + ('3','省防办' ), + ('4','省防指成员单位' ), + ('5','市、州、县防指(防办)' ), + ('6','湖北省大型水库安全管理责任人' ), + ('7','湖北省3级及以上河道堤防防汛行政责任人名单' ), + ('8','湖北省蓄滞洪区防汛行政责任人名单' ), + ('9','湖北省湖堤堤防防汛行政责任人名单' ), + ('10','湖北省重点排涝泵站责任人名单' ), + ('11','湖北省大中型涵闸防汛责任人名单' ); SET IDENTITY_INSERT FXKH_TXL.ORGANIZATION Off; +COMMIT; insert into "FXKH_TXL"."USERS"("USERNAME", "PASSWORD", "SALT", "ROLE", "AB_ID") VALUES ('superadmin','0d36b3ff219df5a7f7d2d3961588f50c','3517548df1ac46198dbfec4f1176ec93','99',0) @@ -28,6 +31,10 @@ insert into "FXKH_TXL"."ADDRESS_BOOK"("NAME", "PHONE", "ORGANIZATION", "POSITION comment on column "FXKH_TXL"."AB_INFO"."ADCD" is '行政区划'; + alter table "FXKH_TXL"."ADDRESS_BOOK" add column("OPENID" VARCHAR(50)); + + comment on column "FXKH_TXL"."ADDRESS_BOOK"."OPENID" is 'openid'; + alter table "FXKH_TXL"."ADDRESS_BOOK" add column("IS_PASS" TINYINT default (FALSE)); comment on column "FXKH_TXL"."ADDRESS_BOOK"."IS_PASS" is '是否放行, 放行:true,拦截:false'; diff --git a/src/main/java/com/whdc/controller/AddressBookController.java b/src/main/java/com/whdc/controller/AddressBookController.java index f8db911..6d63945 100644 --- a/src/main/java/com/whdc/controller/AddressBookController.java +++ b/src/main/java/com/whdc/controller/AddressBookController.java @@ -32,6 +32,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; @@ -615,4 +616,21 @@ public class AddressBookController { response); } + @ApiOperation(value = "行政区划联系人导入") + @GetMapping(value = "uploadExcel") + public void uploadExcel(MultipartFile file) { + + List appends = ExcelCommon.importExcel(file, 0, 1, ExcelABVo.class); + + if (CollectionUtils.isEmpty(appends)) { + throw new MyException("文件为空"); + } + + List tree = adinfoService.tree(null, null); + + appends.forEach(vo ->{ + + }); + } + } diff --git a/src/main/java/com/whdc/controller/UserController.java b/src/main/java/com/whdc/controller/UserController.java index 2a593e8..98fdbbc 100644 --- a/src/main/java/com/whdc/controller/UserController.java +++ b/src/main/java/com/whdc/controller/UserController.java @@ -79,6 +79,26 @@ public class UserController { } } + + @ApiOperation(value = "wx登录", notes = "登录后,从 tokenInfo 中获取 token 相关信息。headers[tokenName] = tokenValue ") + @GetMapping("wxLogin/{openid}") + public ResultJson getWxLogin(@PathVariable("openid") String openid) throws InvocationTargetException, IllegalAccessException { + LoginVo loginVo = service.wxLogin(openid); + + 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 isLogin() { diff --git a/src/main/java/com/whdc/mapper/AddressBookMapper.java b/src/main/java/com/whdc/mapper/AddressBookMapper.java index 3142aef..0d0905f 100644 --- a/src/main/java/com/whdc/mapper/AddressBookMapper.java +++ b/src/main/java/com/whdc/mapper/AddressBookMapper.java @@ -22,4 +22,6 @@ public interface AddressBookMapper extends BaseMapper { List getListByAdnm(@Param("adcd") String adcd); AddressBookVo getVoById(@Param("id") Integer id); + AddressBookVo getVoByOpenid(@Param("id") String id); + } \ No newline at end of file diff --git a/src/main/java/com/whdc/model/entity/AddressBook.java b/src/main/java/com/whdc/model/entity/AddressBook.java index 76b0cb9..53366b1 100644 --- a/src/main/java/com/whdc/model/entity/AddressBook.java +++ b/src/main/java/com/whdc/model/entity/AddressBook.java @@ -106,4 +106,8 @@ public class AddressBook extends Model implements Serializable { @ApiModelProperty(value = "是否放行, 放行:true,拦截:false") private Boolean isPass; + @TableField("OPENID") + @ApiModelProperty(value = "openid") + private String openid; + } \ No newline at end of file diff --git a/src/main/java/com/whdc/model/vo/LoginVo.java b/src/main/java/com/whdc/model/vo/LoginVo.java index 48e5f7e..7a5d7a4 100644 --- a/src/main/java/com/whdc/model/vo/LoginVo.java +++ b/src/main/java/com/whdc/model/vo/LoginVo.java @@ -30,6 +30,9 @@ public class LoginVo implements Serializable { @ApiModelProperty(value = "姓名") private String name; + @ApiModelProperty(value = "vx openid") + private String openid; + @ApiModelProperty(value = "token 信息") private AuthToken tokenInfo; diff --git a/src/main/java/com/whdc/service/IUserService.java b/src/main/java/com/whdc/service/IUserService.java index 0023771..20d9df7 100644 --- a/src/main/java/com/whdc/service/IUserService.java +++ b/src/main/java/com/whdc/service/IUserService.java @@ -30,6 +30,8 @@ public interface IUserService extends IService { LoginVo wxLogin(VxLoginDto obj); + LoginVo wxLogin(String openid); + boolean register(User entity); User getRole(Integer id); diff --git a/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java b/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java index 82ae102..42a1014 100644 --- a/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java @@ -57,7 +57,7 @@ public class AdinfoServiceImpl extends ServiceImpl impleme * @param adcd * @return */ -// @Cacheable(cacheNames = {REDIS_KEY}, key = "getMethodName()", condition = "#adcd", unless = "false", cacheResolver = "redisExpireCacheResolver") + @Cacheable(cacheNames = {ADINFO_REDIS_KEY}, key = "getMethodName()", condition = "#adcd + #adnm", unless = "false") public List tree(String adcd, String adnm) { List list = treeList(adcd, adnm); diff --git a/src/main/java/com/whdc/service/impl/UserServiceImpl.java b/src/main/java/com/whdc/service/impl/UserServiceImpl.java index 253fa54..612ee04 100644 --- a/src/main/java/com/whdc/service/impl/UserServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/UserServiceImpl.java @@ -159,17 +159,90 @@ public class UserServiceImpl extends ServiceImpl implements IU User sysUser = findByLoginName(phone); if (sysUser == null) { - throw new MyException("用户名或密码错误"); + throw new MyException("当前手机号未注册"); } + + LoginVo out = new LoginVo(); BeanUtils.copyProperties(sysUser, out); AddressBookVo book = addressBookMapper.getVoById(sysUser.getAbId()); if (Objects.nonNull(book)) { - if (!book.getIsPass()){ - throw new MyException("当前账号无法登录,请联系上级管理员!"); + + if (StringUtils.isNotBlank(book.getOpenid())){ + + if(!openid.equals(book.getOpenid())){ + throw new MyException("当前手机号已绑定其他账号,请先解绑!"); + } + + }else{ + book.setOpenid(openid); + if (!book.updateById()) { + throw new MyException("openid保存失败"); + } } + + if (!book.getIsPass()){ +// throw new MyException("当前账号无法登录,请联系上级管理员!"); + } + + + + String adcd = book.getAdcd(); + if (StringUtils.isNotBlank(adcd)) { + + out.setAdlevel(2); + out.setAdcd(adcd.substring(0, 4)); + + } + out.setOpenid(openid); + out.setName(book.getName()); + out.setOname(book.getOname()); + if (StringUtils.isNotBlank(book.getAdnm())) { + out.setOname(book.getAdnm()); + } + }else{ + throw new MyException("该用户未绑定通讯录"); + } + return out; + + } + + @Override + public LoginVo wxLogin(String openid) { + + LoginVo out = new LoginVo(); + + AddressBookVo book = addressBookMapper.getVoByOpenid(openid); + if (Objects.nonNull(book)) { + + User sysUser = findByLoginName(book.getPhone()); + + if (sysUser == null) { + throw new MyException("当前手机号未注册"); + } + BeanUtils.copyProperties(sysUser, out); + + if (StringUtils.isNotBlank(book.getOpenid())){ + + if(!openid.equals(book.getOpenid())){ + throw new MyException("当前手机号已绑定其他账号,请先解绑!"); + } + + }else{ + book.setOpenid(openid); + if (!book.updateById()) { + throw new MyException("openid保存失败"); + } + } + + if (!book.getIsPass()){ +// throw new MyException("当前账号无法登录,请联系上级管理员!"); + } + + + String adcd = book.getAdcd(); if (StringUtils.isNotBlank(adcd)) { @@ -182,6 +255,8 @@ public class UserServiceImpl extends ServiceImpl implements IU if (StringUtils.isNotBlank(book.getAdnm())) { out.setOname(book.getAdnm()); } + }else{ + throw new MyException("该用户未绑定通讯录"); } return out; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c5ccf7d..3e87f50 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,7 +10,7 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: dm.jdbc.driver.DmDriver -# url: jdbc:dm://local.gunshiiot.com:5236?schema=FXKH_TXL +# url: jdbc:dm://10.0.41.113:5236?schema=FXKH_TXL # username: SYSDBA # password: SYSDBA001 url: jdbc:dm://10.42.6.247:5236?schema=FXKH_TXL diff --git a/src/main/resources/mapper/AddressBookMapper.xml b/src/main/resources/mapper/AddressBookMapper.xml index 66b1e03..b62ef67 100644 --- a/src/main/resources/mapper/AddressBookMapper.xml +++ b/src/main/resources/mapper/AddressBookMapper.xml @@ -78,4 +78,17 @@ + + + + \ No newline at end of file From f25631558e73bb08d5c1f3162c196f5565f36deb Mon Sep 17 00:00:00 2001 From: xjm Date: Tue, 4 Jun 2024 14:46:00 +0800 Subject: [PATCH 2/5] =?UTF-8?q?wx=E6=89=8B=E6=9C=BA=E5=8F=B7=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E4=BF=AE=E6=94=B9,=20wxopenid=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=96=B0=E5=A2=9E,=E9=80=9A=E8=AE=AF=E5=BD=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/whdc/service/impl/UserServiceImpl.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/main/java/com/whdc/service/impl/UserServiceImpl.java b/src/main/java/com/whdc/service/impl/UserServiceImpl.java index 612ee04..18be664 100644 --- a/src/main/java/com/whdc/service/impl/UserServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/UserServiceImpl.java @@ -224,19 +224,6 @@ public class UserServiceImpl extends ServiceImpl implements IU } BeanUtils.copyProperties(sysUser, out); - if (StringUtils.isNotBlank(book.getOpenid())){ - - if(!openid.equals(book.getOpenid())){ - throw new MyException("当前手机号已绑定其他账号,请先解绑!"); - } - - }else{ - book.setOpenid(openid); - if (!book.updateById()) { - throw new MyException("openid保存失败"); - } - } - if (!book.getIsPass()){ // throw new MyException("当前账号无法登录,请联系上级管理员!"); } From 31e95b7582402218f23c0fbd7794858a5f81a439 Mon Sep 17 00:00:00 2001 From: xjm Date: Tue, 4 Jun 2024 15:05:47 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/whdc/controller/AddressBookController.java | 5 +++-- src/main/java/com/whdc/controller/AdinfoController.java | 4 +++- src/main/java/com/whdc/controller/WarningController.java | 3 ++- src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java | 7 +++++++ src/main/java/com/whdc/service/impl/UserServiceImpl.java | 4 ++++ 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/whdc/controller/AddressBookController.java b/src/main/java/com/whdc/controller/AddressBookController.java index 6d63945..cb5a48d 100644 --- a/src/main/java/com/whdc/controller/AddressBookController.java +++ b/src/main/java/com/whdc/controller/AddressBookController.java @@ -42,6 +42,7 @@ import java.util.Objects; import java.util.stream.Collectors; import static com.whdc.model.MyConstant.REDIS_KEY; +import static com.whdc.service.impl.AdinfoServiceImpl.TREE_ALL; /** * @author xusan @@ -545,7 +546,7 @@ public class AddressBookController { adnm = ""; } - List tree = adinfoService.tree(null, null); + List tree = adinfoService.tree(TREE_ALL, TREE_ALL); if (CollectionUtils.isEmpty(tree)) { throw new MyException("当前行政区划不存在"); @@ -626,7 +627,7 @@ public class AddressBookController { throw new MyException("文件为空"); } - List tree = adinfoService.tree(null, null); + List tree = adinfoService.tree(TREE_ALL, TREE_ALL); appends.forEach(vo ->{ diff --git a/src/main/java/com/whdc/controller/AdinfoController.java b/src/main/java/com/whdc/controller/AdinfoController.java index b855b61..24ac7fd 100644 --- a/src/main/java/com/whdc/controller/AdinfoController.java +++ b/src/main/java/com/whdc/controller/AdinfoController.java @@ -21,6 +21,8 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import static com.whdc.service.impl.AdinfoServiceImpl.TREE_ALL; + /** * @author xusan * @date 2024-05-11 @@ -60,7 +62,7 @@ public class AdinfoController { String adcdOradnm) { - List list = service.tree(null, null); + List list = service.tree(TREE_ALL, TREE_ALL); // 查询全部标识 if ("all".equals(adcdOradnm)) { return ResultJson.ok(list); diff --git a/src/main/java/com/whdc/controller/WarningController.java b/src/main/java/com/whdc/controller/WarningController.java index 48d55a0..921dac9 100644 --- a/src/main/java/com/whdc/controller/WarningController.java +++ b/src/main/java/com/whdc/controller/WarningController.java @@ -32,6 +32,7 @@ import java.util.*; import java.util.stream.Collectors; import static com.whdc.model.MyConstant.REDIS_KEY; +import static com.whdc.service.impl.AdinfoServiceImpl.TREE_ALL; /** * Description: @@ -390,7 +391,7 @@ public class WarningController { // 进行行政区划匹配 if (CollectionUtils.isNotEmpty(voList)) { - List tree = adinfoService.tree(null, null); + List tree = adinfoService.tree(TREE_ALL, TREE_ALL); Map> areaMap = voList.stream() .collect(Collectors .groupingBy(WarningHistoryListVo::getEffectArea, Collectors.toList())); diff --git a/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java b/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java index 42a1014..d9f1d4d 100644 --- a/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java @@ -32,6 +32,7 @@ import static com.whdc.model.MyConstant.REDIS_KEY; public class AdinfoServiceImpl extends ServiceImpl implements IAdinfoService { public static final String ADINFO_REDIS_KEY = REDIS_KEY + "adinfo"; + public static final String TREE_ALL = REDIS_KEY + "tree_all"; @Override public IPage page(Adinfo dto) { @@ -60,6 +61,12 @@ public class AdinfoServiceImpl extends ServiceImpl impleme @Cacheable(cacheNames = {ADINFO_REDIS_KEY}, key = "getMethodName()", condition = "#adcd + #adnm", unless = "false") public List tree(String adcd, String adnm) { + if (TREE_ALL.equals(adcd)){ + adcd = null; + } + if (TREE_ALL.equals(adnm)){ + adnm = null; + } List list = treeList(adcd, adnm); if (CollectionUtils.isNotEmpty(list)){ diff --git a/src/main/java/com/whdc/service/impl/UserServiceImpl.java b/src/main/java/com/whdc/service/impl/UserServiceImpl.java index 18be664..c18d334 100644 --- a/src/main/java/com/whdc/service/impl/UserServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/UserServiceImpl.java @@ -172,6 +172,10 @@ public class UserServiceImpl extends ServiceImpl implements IU if (StringUtils.isNotBlank(book.getOpenid())){ + System.out.println("openid1:"+sysUser.getAbId()); + System.out.println("openid2:"+openid); + System.out.println("openid3:"+book.getOpenid()); + if(!openid.equals(book.getOpenid())){ throw new MyException("当前手机号已绑定其他账号,请先解绑!"); } From ffc58cb9015c0724569cf822c094e9df27719268 Mon Sep 17 00:00:00 2001 From: xjm Date: Tue, 4 Jun 2024 17:56:05 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B8=82=E5=8E=BF?= =?UTF-8?q?=E9=80=9A=E8=AE=AF=E5=BD=95=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AddressBookController.java | 156 ++++++++++++++---- .../whdc/service/impl/AdinfoServiceImpl.java | 2 +- .../service/impl/OrganizationServiceImpl.java | 10 +- .../resources/mapper/AddressBookMapper.xml | 6 +- 4 files changed, 140 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/whdc/controller/AddressBookController.java b/src/main/java/com/whdc/controller/AddressBookController.java index cb5a48d..139be07 100644 --- a/src/main/java/com/whdc/controller/AddressBookController.java +++ b/src/main/java/com/whdc/controller/AddressBookController.java @@ -2,6 +2,7 @@ package com.whdc.controller; import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.whdc.exception.MyException; import com.whdc.model.dto.AddressBootDto; @@ -30,15 +31,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.DigestUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import static com.whdc.model.MyConstant.REDIS_KEY; @@ -295,7 +296,7 @@ public class AddressBookController { organization = model.getAdcd().replaceFirst("000000", ""); } Integer sort = model.getSort(); - if (0 != sort){ + if (0 != sort) { boolean update = abUdRService.lambdaUpdate() .set(AbUdR::getSort, sort) .set(AbUdR::getDictId, organization) @@ -405,7 +406,6 @@ public class AddressBookController { } - @ApiOperation(value = "设置白名单") @PostMapping(value = "setWhitelists") public ResultJson setWhitelists(@RequestBody @Validated(Update.class) AddressBook model) { @@ -437,7 +437,7 @@ public class AddressBookController { .set(AddressBook::getIsPass, model.getIsPass()) .eq(AddressBook::getId, model.getId()) .update(); - if (!update){ + if (!update) { throw new MyException("操作数据库失败"); } return ResultJson.ok(update); @@ -458,7 +458,7 @@ public class AddressBookController { } User delUser = userService.lambdaQuery() - .eq(User::getAbId,model.getId()) + .eq(User::getAbId, model.getId()) .one(); switch (Objects.requireNonNull(Role.getByName(user.getRole()))) { @@ -474,8 +474,6 @@ public class AddressBookController { } - - // List list = versionsService.lambdaQuery() // .eq(Versions::getAbId, model.getId()) // .list(); @@ -552,7 +550,9 @@ public class AddressBookController { throw new MyException("当前行政区划不存在"); } - List addressBooks = service.lambdaQuery().isNotNull(AddressBook::getAdcd) +// List addressBooks = service.lambdaQuery().isNotNull(AddressBook::getAdcd) +// .list(); + List addressBooks = service.lambdaQuery().likeLeft(AddressBook::getAdcd, "000000000") .list(); if (CollectionUtils.isEmpty(addressBooks)) { @@ -567,21 +567,21 @@ public class AddressBookController { String finalAdnm = adnm; for (int i = 0; i < tree.size(); i++) { AdcdTree t = tree.get(i); - String adcd = t.getAdcd(); +// String adcd = t.getAdcd(); String cityAdnm = t.getAdnm(); - List books = abMap.get(adcd); - if (CollectionUtils.isEmpty(books)) { - continue; - } - books.forEach(b -> { - if (StringUtils.isNotBlank(finalAdnm)) { - if (cityAdnm.equals(finalAdnm)) { - data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone())); - } - } else { - data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone())); - } - }); +// List books = abMap.get(adcd); +// if (CollectionUtils.isEmpty(books)) { +// continue; +// } +// books.forEach(b -> { +// if (StringUtils.isNotBlank(finalAdnm)) { +// if (cityAdnm.equals(finalAdnm)) { +// data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone())); +// } +// } else { +// data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone())); +// } +// }); List children = t.getChildren(); if (CollectionUtils.isNotEmpty(children)) { @@ -606,7 +606,6 @@ public class AddressBookController { } } - ; if (CollectionUtils.isEmpty(data)) { throw new MyException("当前行政区划责任人为空"); @@ -618,8 +617,8 @@ public class AddressBookController { } @ApiOperation(value = "行政区划联系人导入") - @GetMapping(value = "uploadExcel") - public void uploadExcel(MultipartFile file) { + @PostMapping(value = "uploadExcel") + public ResultJson uploadExcel(MultipartFile file) { List appends = ExcelCommon.importExcel(file, 0, 1, ExcelABVo.class); @@ -627,11 +626,112 @@ public class AddressBookController { throw new MyException("文件为空"); } + Set set = appends.stream().map(vo -> vo.getName() + "_" + vo.getPhone()).collect(Collectors.toSet()); + if (set.size() != appends.size()){ + throw new MyException("联系人重复"); + } + List tree = adinfoService.tree(TREE_ALL, TREE_ALL); - appends.forEach(vo ->{ + List abs = Lists.newArrayList(); + appends.forEach(vo -> { + String phone = vo.getPhone(); + String name = vo.getName(); + String position = vo.getPosition(); + String city = vo.getCity(); + String county = vo.getCounty(); + AddressBook e = new AddressBook(); + e.setName(name) + .setPhone(phone) + .setAdcd(getAdcd(tree, city, county)) + .setPosition(position); + abs.add(e); }); + + // 原数据删除 + removeAdcd(); + + + if (!service.saveBatch(abs)) { + throw new MyException("表格数据新增失败"); + } + List users = Lists.newArrayList(); + List abUdRs = Lists.newArrayList(); + + AtomicReference sort = new AtomicReference<>(0); + // 新增关联数据 + abs.forEach(a -> { + String phone = a.getPhone(); + if (StringUtils.isNotBlank(phone)){ + User user = new User(); + String salt = UUID.randomUUID().toString().replaceAll("-", ""); + user + .setUsername(phone) + .setAbId(a.getId()) + .setRole("1") + .setSalt(salt) + .setPassword(DigestUtils.md5DigestAsHex((salt + "Fxkh@123456").getBytes())); + users.add(user); + } + + AbUdR au = new AbUdR(); + Integer i = sort.get() + 1; + au.setType("1") + .setAdId(a.getId()) + .setDictId(a.getAdcd().replaceFirst("000000", "")) + .setSort(i); + abUdRs.add(au); + sort.set(i); + }); + + if (!userService.saveBatch(users)) { + throw new MyException("用户数据新增失败"); + } + + if (!abUdRService.saveBatch(abUdRs)) { + throw new MyException("关联数据新增失败"); + } + return ResultJson.ok("数据新增成功"); } + private String getAdcd(List tree, String city, String county) { + for (AdcdTree a : tree) { + if (a.getAdnm().equals(city)) { + List children = a.getChildren(); + if (a.getAdnm().equals(county)) { + county = "市本级"; + } + for (AdcdTree b : children) { + if (b.getAdnm().equals(county)) { + return b.getAdcd(); + } + } + } + } + throw new MyException("当前市行政区划匹配失败"); + } + + + private void removeAdcd() { + List addressBooks = service.lambdaQuery().likeLeft(AddressBook::getAdcd, "000000000") + .list(); + boolean r1 = service.removeBatchByIds(addressBooks); + if (!r1) { + throw new MyException("通讯录数据删除失败"); + } + List abIds = addressBooks.stream().map(AddressBook::getId).collect(Collectors.toList()); + LambdaQueryWrapper aurQueryWrapper = new LambdaQueryWrapper<>(); + aurQueryWrapper.in(AbUdR::getAdId, abIds); + boolean remove1 = abUdRService.remove(aurQueryWrapper); + if (!remove1) { + throw new MyException("关联数据删除失败"); + } + LambdaQueryWrapper userQueryWrapper = new LambdaQueryWrapper<>(); + userQueryWrapper.in(User::getAbId, abIds); + boolean remove2 = userService.remove(userQueryWrapper); + if (!remove2) { + throw new MyException("用户账号删除失败"); + } + } } diff --git a/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java b/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java index d9f1d4d..00f1502 100644 --- a/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java @@ -58,7 +58,7 @@ public class AdinfoServiceImpl extends ServiceImpl impleme * @param adcd * @return */ - @Cacheable(cacheNames = {ADINFO_REDIS_KEY}, key = "getMethodName()", condition = "#adcd + #adnm", unless = "false") +// @Cacheable(cacheNames = {ADINFO_REDIS_KEY}, key = "getMethodName()", condition = "#adcd + #adnm", unless = "false") public List tree(String adcd, String adnm) { if (TREE_ALL.equals(adcd)){ diff --git a/src/main/java/com/whdc/service/impl/OrganizationServiceImpl.java b/src/main/java/com/whdc/service/impl/OrganizationServiceImpl.java index 0d05a69..d632719 100644 --- a/src/main/java/com/whdc/service/impl/OrganizationServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/OrganizationServiceImpl.java @@ -6,11 +6,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.whdc.mapper.OrganizationMapper; import com.whdc.model.entity.Organization; import com.whdc.model.entity.UnitDict; -import com.whdc.model.vo.AdcdTree; import com.whdc.service.IAdinfoService; import com.whdc.service.IOrganizationService; import com.whdc.service.IUnitDictService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,6 +18,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static com.whdc.service.impl.AdinfoServiceImpl.TREE_ALL; + /** *

* 服务实现类 @@ -48,17 +50,21 @@ public class OrganizationServiceImpl extends ServiceImpl findByUserId(String userId,String adcd) { + if (StringUtils.isBlank(adcd)){ + adcd = TREE_ALL; + } List organizations = baseMapper.findByUserId(userId); List list = unitDictService.findByUserId(userId); Map> collect = list.stream().collect(Collectors.groupingBy(UnitDict::getOId)); + String finalAdcd = adcd; organizations.forEach(organization -> { List unitDicts = collect.get(organization.getId()); organization.setUnitDicts(unitDicts); String name = organization.getName(); if (name.contains("市") && name.contains("县")){ - organization.setAdinfoList(adinfoService.tree(adcd, adcd)); + organization.setAdinfoList(adinfoService.tree(finalAdcd, finalAdcd)); } }); diff --git a/src/main/resources/mapper/AddressBookMapper.xml b/src/main/resources/mapper/AddressBookMapper.xml index b62ef67..9286bdf 100644 --- a/src/main/resources/mapper/AddressBookMapper.xml +++ b/src/main/resources/mapper/AddressBookMapper.xml @@ -5,7 +5,7 @@ SELECT - AB.*,IF(O.NAME IS NULL,UD.NAME,O.NAME) ONAME,A.ADNM + AB.*,IF(UD.NAME IS NOT NULL,UD.NAME,O.NAME) ONAME,A.ADNM FROM ADDRESS_BOOK AB LEFT JOIN ORGANIZATION O ON AB.ORGANIZATION = O.ID @@ -81,7 +81,7 @@