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