From a712b5be1d79a294f105c0098713207e83c2f1ef Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 10 Dec 2024 11:33:41 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TbVersionController.java | 7 ++++ .../ysk/cashier/service/TbVersionService.java | 2 + .../service/impl/TbVersionServiceImpl.java | 40 ++++++++++--------- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbVersionController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbVersionController.java index 7eb2f419..157162b9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbVersionController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbVersionController.java @@ -1,6 +1,7 @@ package cn.ysk.cashier.controller; import cn.ysk.cashier.annotation.Log; +import cn.ysk.cashier.annotation.rest.AnonymousGetMapping; import cn.ysk.cashier.dto.TbVersionQueryCriteria; import cn.ysk.cashier.pojo.TbVersion; import cn.ysk.cashier.service.TbVersionService; @@ -27,6 +28,12 @@ public class TbVersionController { return new ResponseEntity<>(tbVersionService.queryAllPage(criteria),HttpStatus.OK); } + @GetMapping("findBySource") + @ApiOperation("查询所属渠道升级版本") + public ResponseEntity findBySource(String source){ + return new ResponseEntity<>(tbVersionService.findBySource(source),HttpStatus.OK); + } + @PostMapping @Log("版本管理 新增") @ApiOperation("新增版本") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/TbVersionService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/TbVersionService.java index decc3ddc..5da5ace0 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/TbVersionService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/TbVersionService.java @@ -32,6 +32,8 @@ public interface TbVersionService { */ List queryAll(TbVersionQueryCriteria criteria); + TbVersion findBySource(String source); + /** * 根据ID查询 * @param id ID diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbVersionServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbVersionServiceImpl.java index 58ff97b2..91fcabab 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbVersionServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/TbVersionServiceImpl.java @@ -8,17 +8,21 @@ import cn.ysk.cashier.pojo.TbVersion; import cn.ysk.cashier.repository.TbVersionRepository; import cn.ysk.cashier.service.TbVersionService; import cn.ysk.cashier.utils.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.persistence.criteria.Predicate; import java.time.Instant; import java.util.List; import java.util.Map; +import java.util.Optional; /** * @author ww @@ -47,6 +51,22 @@ public class TbVersionServiceImpl implements TbVersionService { return tbVersionMapper.toDto(tbVersionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder))); } + @Override + public TbVersion findBySource(String source) { + Specification spec = (root, criteriaQuery, criteriaBuilder) -> { + Predicate param1 = criteriaBuilder.equal(root.get("source"), source); + Predicate param2 = criteriaBuilder.equal(root.get("sel"), 1); + // 使用or方法将两个条件组合起来,表示满足其中一个条件即可 + return criteriaBuilder.and(param1, param2); + }; + Optional one = tbVersionRepository.findOne(spec); + if(one.isPresent()){ + return one.get(); + }else { + return null; + } + } + @Override @Transactional public TbVersionDto findById(Integer id) { @@ -58,17 +78,12 @@ public class TbVersionServiceImpl implements TbVersionService { @Override @Transactional(rollbackFor = Exception.class) public TbVersionDto create(TbVersion resources) { - int exist = tbVersionRepository.isExist(resources.getSource(), resources.getVersion()); + int exist = tbVersionRepository.isExist(resources.getSource(), resources.getVersion()); if (exist > 0) { throw new BadRequestException("该版本已存在。"); } resources.setCreatedAt(Instant.now().toEpochMilli()); TbVersionDto dto = tbVersionMapper.toDto(tbVersionRepository.save(resources)); -// if (dto.getIsUp() == 1) { -// //产品标识:型号:版本 -// //VERSION:PC::version 存在即需要强制更新 -// redisUtils.set(CacheKey.VERSION + dto.getSource() + ":" + dto.getVersion(), dto); -// } return dto; } @@ -77,23 +92,15 @@ public class TbVersionServiceImpl implements TbVersionService { public void update(TbVersion resources) { TbVersion tbVersion = tbVersionRepository.findById(resources.getId()).orElseGet(TbVersion::new); ValidationUtil.isNull(tbVersion.getId(), "TbVersion", "id", resources.getId()); -// redisUtils.del(tbVersion.getSource() + "_VERSION:" + tbVersion.getType() + ":" + tbVersion.getVersion()); tbVersion.copy(resources); tbVersion.setUpdatedAt(Instant.now().toEpochMilli()); tbVersionRepository.save(tbVersion); -// if (resources.getIsUp() == 1) { -// //产品标识:型号:版本 -// //LDBL_APP_VERSION:ios:version 存在即需要强制更新 -// redisUtils.set(tbVersion.getSource() + "_VERSION:" + tbVersion.getType() + ":" + tbVersion.getVersion(), tbVersion.getMessage()); -// } else { -// redisUtils.del(tbVersion.getSource() + "_VERSION:" + tbVersion.getType() + ":" + tbVersion.getVersion()); -// } } @Override @Transactional(rollbackFor = Exception.class) public void updateSel(TbVersion resources) { - tbVersionRepository.updateSelBySource(resources.getSource(),resources.getId()); + tbVersionRepository.updateSelBySource(resources.getSource(), resources.getId()); } @Override @@ -102,9 +109,6 @@ public class TbVersionServiceImpl implements TbVersionService { TbVersion tbVersion = tbVersionRepository.findById(id).orElseGet(TbVersion::new); ValidationUtil.isNull(tbVersion.getId(), "TbVersion", "id", id); tbVersionRepository.deleteById(id); -// if (tbVersion.getIsUp() == 1) { -// redisUtils.del(tbVersion.getSource() + "_VERSION:" + tbVersion.getType() + ":" + tbVersion.getVersion()); -// } } } From a938d0e3928ad8161c859c71484755ac4ce4f45f Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 10 Dec 2024 14:44:18 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/ysk/cashier/controller/TbVersionController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbVersionController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbVersionController.java index 157162b9..163650a8 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbVersionController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbVersionController.java @@ -28,7 +28,7 @@ public class TbVersionController { return new ResponseEntity<>(tbVersionService.queryAllPage(criteria),HttpStatus.OK); } - @GetMapping("findBySource") + @AnonymousGetMapping("findBySource") @ApiOperation("查询所属渠道升级版本") public ResponseEntity findBySource(String source){ return new ResponseEntity<>(tbVersionService.findBySource(source),HttpStatus.OK); From 5b1e497bb6106d1383470965d4331a8334b3a2f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 10 Dec 2024 15:29:06 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=8E=88=E6=9D=83=E8=BF=87=E6=9C=9F=E6=97=A5?= =?UTF-8?q?=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rest/AuthorizationController.java | 74 ++++++++++++------- 1 file changed, 46 insertions(+), 28 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java index 43d1eb96..27b20e07 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java @@ -1,46 +1,44 @@ package cn.ysk.cashier.config.security.rest; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.ysk.cashier.annotation.rest.AnonymousDeleteMapping; +import cn.ysk.cashier.annotation.rest.AnonymousGetMapping; +import cn.ysk.cashier.annotation.rest.AnonymousPostMapping; +import cn.ysk.cashier.config.RsaProperties; import cn.ysk.cashier.config.security.config.bean.LoginCodeEnum; +import cn.ysk.cashier.config.security.config.bean.LoginProperties; +import cn.ysk.cashier.config.security.config.bean.SecurityProperties; import cn.ysk.cashier.config.security.security.TokenProvider; +import cn.ysk.cashier.config.security.service.OnlineUserService; +import cn.ysk.cashier.config.security.service.dto.AuthUserDto; +import cn.ysk.cashier.config.security.service.dto.JwtUserDto; +import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.mybatis.mapper.MpShopInfoMapper; import cn.ysk.cashier.mybatis.mapper.TbMerchantAccountMapper; import cn.ysk.cashier.mybatis.service.MpShopUserService; -import cn.ysk.cashier.pojo.TbToken; import cn.ysk.cashier.pojo.shop.TbMerchantAccount; import cn.ysk.cashier.pojo.shop.TbPlussShopStaff; +import cn.ysk.cashier.pojo.shop.TbShopInfo; import cn.ysk.cashier.repository.TbTokenRepository; import cn.ysk.cashier.repository.shop.TbMerchantAccountRepository; import cn.ysk.cashier.repository.shop.TbPlussShopStaffRepository; -import cn.ysk.cashier.utils.*; +import cn.ysk.cashier.repository.shop.TbShopInfoRepository; +import cn.ysk.cashier.utils.RedisUtils; +import cn.ysk.cashier.utils.RsaUtils; +import cn.ysk.cashier.utils.SecurityUtils; +import cn.ysk.cashier.utils.StringUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.wf.captcha.base.Captcha; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import cn.ysk.cashier.annotation.Log; -import cn.ysk.cashier.annotation.rest.AnonymousDeleteMapping; -import cn.ysk.cashier.annotation.rest.AnonymousGetMapping; -import cn.ysk.cashier.annotation.rest.AnonymousPostMapping; -import cn.ysk.cashier.config.RsaProperties; -import cn.ysk.cashier.exception.BadRequestException; - -import cn.ysk.cashier.config.security.config.bean.LoginProperties; -import cn.ysk.cashier.config.security.config.bean.SecurityProperties; -import cn.ysk.cashier.config.security.service.dto.AuthUserDto; -import cn.ysk.cashier.config.security.service.dto.JwtUserDto; -import cn.ysk.cashier.config.security.service.OnlineUserService; -import cn.ysk.cashier.pojo.shop.TbShopInfo; -import cn.ysk.cashier.repository.shop.TbShopInfoRepository; -import org.springframework.data.repository.query.Param; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.core.Authentication; @@ -50,10 +48,9 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.Set; import java.util.concurrent.TimeUnit; /** @@ -99,8 +96,8 @@ public class AuthorizationController { if (authUser.isChecked() && StringUtils.isBlank(authUser.getCode()) || authUser.isChecked() && !authUser.getCode().equalsIgnoreCase(code)) { throw new BadRequestException("验证码错误"); } - String loginpre=""; - String shopId=""; + String loginpre = ""; + String shopId = ""; // 判断是否是员工登录 if (authUser.getLoginType() != null && "staff".equals(authUser.getLoginType())) { if (StrUtil.isBlank(authUser.getMerchantName())) { @@ -117,7 +114,7 @@ public class AuthorizationController { //生成token UsernamePasswordAuthenticationToken authenticationToken = - new UsernamePasswordAuthenticationToken(loginpre+authUser.getUsername(), password); + new UsernamePasswordAuthenticationToken(loginpre + authUser.getUsername(), password); Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); SecurityContextHolder.getContext().setAuthentication(authentication); // 生成令牌与第三方系统获取令牌方式 @@ -128,7 +125,7 @@ public class AuthorizationController { // TbShopInfo byAccount = tbShopInfoRepository.findByAccount(jwtUserDto.getUsername()); TbPlussShopStaff tbPlussShopStaff; if (authUser.getLoginType() != null && "staff".equals(authUser.getLoginType())) { - tbPlussShopStaff = staffRepository.queryByAccount(authUser.getUsername(),shopId); + tbPlussShopStaff = staffRepository.queryByAccount(authUser.getUsername(), shopId); } else { tbPlussShopStaff = staffRepository.queryByAccount(authUser.getUsername()); } @@ -151,8 +148,8 @@ public class AuthorizationController { put("user", jwtUserDto); if (byAccount != null) { put("shopId", byAccount.getId()); - put("mainId", org.apache.commons.lang3.StringUtils.isNotBlank(byAccount.getMainId())?byAccount.getMainId():byAccount.getId()); - put("loginType", org.apache.commons.lang3.StringUtils.isNotBlank(authUser.getLoginType())?authUser.getLoginType():"merchant"); + put("mainId", org.apache.commons.lang3.StringUtils.isNotBlank(byAccount.getMainId()) ? byAccount.getMainId() : byAccount.getId()); + put("loginType", org.apache.commons.lang3.StringUtils.isNotBlank(authUser.getLoginType()) ? authUser.getLoginType() : "merchant"); put("shopName", byAccount.getShopName()); put("logo", byAccount.getLogo()); } @@ -165,6 +162,16 @@ public class AuthorizationController { //踢掉之前已经登录的token onlineUserService.checkLoginOnUser(authUser.getUsername(), token); } + // 店铺使用有效期是否过期 + authInfo.put("expireDate", null); + if (StrUtil.isNotEmpty(shopId)) { + TbShopInfo shopInfo = shopInfoMapper.selectById(shopId); + if (shopInfo != null) { + Long expireAt = shopInfo.getExpireAt(); + Date time = DateUtil.calendar(expireAt).getTime(); + authInfo.put("expireDate", DateUtil.formatDate(time)); + } + } return ResponseEntity.ok(authInfo); } @@ -188,7 +195,7 @@ public class AuthorizationController { // Integer staffId = shopStaff.getId(); // List onlineUserList = tbTokenRepository.findListByAccountIdAndStaffId(accountId, staffId); shopStaff.setPassword(null); - return ResponseEntity.ok(new HashMap(){{ + return ResponseEntity.ok(new HashMap() {{ put("shopInfo", shopInfo); put("shopStaff", shopStaff); }}); @@ -231,6 +238,16 @@ public class AuthorizationController { //踢掉之前已经登录的token onlineUserService.checkLoginOnUser(authUser.getUsername(), token); } + // 店铺使用有效期是否过期 + authInfo.put("expireDate", null); + if (byAccount != null) { + TbShopInfo shopInfo = shopInfoMapper.selectById(byAccount.getId()); + if (shopInfo != null) { + Long expireAt = shopInfo.getExpireAt(); + Date time = DateUtil.calendar(expireAt).getTime(); + authInfo.put("expireDate", DateUtil.formatDate(time)); + } + } return ResponseEntity.ok(authInfo); } @@ -275,4 +292,5 @@ public class AuthorizationController { onlineUserService.logout(tokenProvider.getToken(request)); return new ResponseEntity<>(HttpStatus.OK); } + } From 4a755cfed5a48ec4af1f0c5bfcf450ad8a33bfec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 10 Dec 2024 15:35:49 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=8E=88=E6=9D=83=E8=BF=87=E6=9C=9F=E6=97=A5?= =?UTF-8?q?=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/config/security/rest/AuthorizationController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java index 27b20e07..5b125b70 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java @@ -164,8 +164,8 @@ public class AuthorizationController { } // 店铺使用有效期是否过期 authInfo.put("expireDate", null); - if (StrUtil.isNotEmpty(shopId)) { - TbShopInfo shopInfo = shopInfoMapper.selectById(shopId); + if (tbPlussShopStaff != null) { + TbShopInfo shopInfo = shopInfoMapper.selectById(tbPlussShopStaff.getShopId()); if (shopInfo != null) { Long expireAt = shopInfo.getExpireAt(); Date time = DateUtil.calendar(expireAt).getTime(); From c5a7d86f0bb8a601b2488245016fcc1e6095f796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 10 Dec 2024 15:40:33 +0800 Subject: [PATCH 5/6] =?UTF-8?q?fix=E9=85=8D=E7=BD=AEpad=E7=AB=AF=E8=8F=9C?= =?UTF-8?q?=E5=93=81bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/security/rest/AuthorizationController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java index 5b125b70..89385aa8 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java @@ -170,6 +170,9 @@ public class AuthorizationController { Long expireAt = shopInfo.getExpireAt(); Date time = DateUtil.calendar(expireAt).getTime(); authInfo.put("expireDate", DateUtil.formatDate(time)); + if (DateUtil.compare(new Date(), time) > 0) { + throw new BadRequestException("店铺已到期,请联系区域经理续费"); + } } } return ResponseEntity.ok(authInfo); @@ -246,6 +249,9 @@ public class AuthorizationController { Long expireAt = shopInfo.getExpireAt(); Date time = DateUtil.calendar(expireAt).getTime(); authInfo.put("expireDate", DateUtil.formatDate(time)); + if (DateUtil.compare(new Date(), time) > 0) { + throw new BadRequestException("店铺已到期,请联系区域经理续费"); + } } } return ResponseEntity.ok(authInfo); From 7e8c0121e1502f645a8388295cb3a2b5d99a6cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 10 Dec 2024 16:19:23 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=BA=97=E9=93=BA=E6=8E=88=E6=9D=83=E8=BF=87=E6=9C=9F=E6=97=A5?= =?UTF-8?q?=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/config/security/rest/AuthorizationController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java index 89385aa8..8a7e1f2a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java @@ -166,7 +166,7 @@ public class AuthorizationController { authInfo.put("expireDate", null); if (tbPlussShopStaff != null) { TbShopInfo shopInfo = shopInfoMapper.selectById(tbPlussShopStaff.getShopId()); - if (shopInfo != null) { + if (shopInfo != null && shopInfo.getExpireAt() != null) { Long expireAt = shopInfo.getExpireAt(); Date time = DateUtil.calendar(expireAt).getTime(); authInfo.put("expireDate", DateUtil.formatDate(time)); @@ -245,7 +245,7 @@ public class AuthorizationController { authInfo.put("expireDate", null); if (byAccount != null) { TbShopInfo shopInfo = shopInfoMapper.selectById(byAccount.getId()); - if (shopInfo != null) { + if (shopInfo != null && shopInfo.getExpireAt() != null) { Long expireAt = shopInfo.getExpireAt(); Date time = DateUtil.calendar(expireAt).getTime(); authInfo.put("expireDate", DateUtil.formatDate(time));