From fa6f63948be3dd05e121a29c4619114fc54f8c04 Mon Sep 17 00:00:00 2001 From: "anran.war" Date: Fri, 10 Dec 2021 13:00:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=8E=E9=99=A9=E9=A1=B9=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E6=B2=BB=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/code-criterion.md | 2 +- .../java/com/geekq/admin/entity/Account.java | 74 +-- .../com/geekq/admin/entity/BaseDomain.java | 2 +- .../java/com/geekq/admin/entity/IpLog.java | 51 +- .../com/geekq/admin/entity/Logininfo.java | 18 +- .../geekq/admin/entity/SystemDictionary.java | 27 +- .../admin/entity/SystemDictionaryItem.java | 34 +- .../java/com/geekq/admin/entity/Userinfo.java | 122 ++-- .../com/geekq/admin/pojo/OrdersExample.java | 76 +-- .../geekq/admin/query/IpLogQueryObject.java | 42 +- .../com/geekq/admin/query/PageResult.java | 88 +-- .../com/geekq/admin/query/QueryObject.java | 10 +- .../query/SystemDictionaryQueryObject.java | 10 +- .../geekq/admin/service/IAccountService.java | 12 +- .../admin/service/ILogininfoService.java | 71 +-- .../service/ISystemDictionaryService.java | 14 +- .../com/geekq/admin/service/IUserService.java | 17 +- .../geekq/admin/service/OrdersService.java | 18 +- .../service/RedisCacheStorageService.java | 3 - miaosha-admin/miaosha-admin-common/pom.xml | 31 +- .../com/geekq/common/enums/Constants.java | 2 +- .../com/geekq/common/enums/MessageStatus.java | 16 +- .../geekq/common/enums/OrderStatusEnum.java | 59 +- .../com/geekq/common/enums/ResultStatus.java | 47 +- .../java/com/geekq/common/enums/SexEnum.java | 31 +- .../java/com/geekq/common/enums/YesOrNo.java | 27 +- .../com/geekq/common/utils/Constanst.java | 10 +- .../com/geekq/common/utils/DBContextUtil.java | 19 +- .../java/com/geekq/common/utils/DateUtil.java | 14 +- .../com/geekq/common/utils/JsonUtils.java | 53 +- .../com/geekq/common/utils/MD5/MD5Utils.java | 29 +- .../geekq/common/utils/SnowflakeIdWorker.java | 98 ++-- .../com/geekq/common/utils/ValidatorUtil.java | 22 +- .../geekq/common/utils/numcal/BidConst.java | 120 ++-- .../common/utils/numcal/BitStatesUtils.java | 75 +-- .../common/utils/numcal/CalculatetUtil.java | 451 +++++++-------- .../utils/numcal/DecimalFormatUtil.java | 51 +- .../utils/resultbean/AbstractResult.java | 5 +- .../common/utils/resultbean/ResultGeekQ.java | 3 + .../common/utils/resultbean/ResultJSON.java | 30 +- .../geekq/common/validator/MobileCheck.java | 2 +- .../common/validator/MobileValidator.java | 18 +- .../java/com/geekq/common/vo/LoginVo.java | 4 +- miaosha-admin/miaosha-admin-service/pom.xml | 54 +- .../com/geekq/admin/mapper/AccountMapper.java | 10 +- .../com/geekq/admin/mapper/IpLogMapper.java | 4 +- .../geekq/admin/mapper/LogininfoMapper.java | 20 +- .../com/geekq/admin/mapper/OrdersMapper.java | 7 +- .../mapper/SystemDictionaryItemMapper.java | 27 +- .../admin/mapper/SystemDictionaryMapper.java | 14 +- .../geekq/admin/mapper/UserinfoMapper.java | 10 +- .../com/geekq/admin/redis/RedisClient.java | 236 ++++---- .../service/impl/AccountServiceImpl.java | 50 +- .../admin/service/impl/IpLogServiceImpl.java | 34 +- .../service/impl/LogininfoServiceImpl.java | 150 ++--- .../admin/service/impl/OrdersServiceImpl.java | 40 +- .../impl/RedisCacheStorageServiceImpl.java | 45 +- .../impl/SystemDictionaryServiceImpl.java | 98 ++-- .../service/impl/SystemDictionaryUtil.java | 12 +- .../admin/service/impl/UserServiceImpl.java | 35 +- .../com/geekq/admin/utils/UserContext.java | 46 +- miaosha-admin/miaosha-admin-web/pom.xml | 210 +++---- .../geekq/web/controller/PayController.java | 19 +- .../web/controller/RegisterController.java | 8 +- .../interceptor/AddGlobalUtilInterceptor.java | 24 +- .../web/interceptor/LoginInterceptor.java | 42 +- .../com/geekq/web/service/CulsterService.java | 12 +- .../web/service/impl/CulsterServiceImpl.java | 53 +- miaosha-admin/pom.xml | 198 ++----- miaosha-order/miaosha-order-api/pom.xml | 14 - .../main/java/com/geekq/api/entity/Goods.java | 14 +- .../com/geekq/api/entity/GoodsVoOrder.java | 22 +- .../com/geekq/api/entity/MiaoshaGoods.java | 10 +- .../com/geekq/api/service/GoodsService.java | 5 +- .../geekq/api/service/GoodsServiceMock.java | 1 - .../geekq/api/utils/AbstractResultOrder.java | 4 +- .../com/geekq/api/utils/ResultGeekQOrder.java | 5 +- .../geekq/api/utils/ResultStatusOrder.java | 45 +- .../provider/DubboProviderApplication.java | 3 +- .../service/impl/GoodsServiceImpl.java | 8 +- miaosha-order/pom.xml | 17 - .../main/java/dto/CapitalTradeOrderDto.java | 4 +- .../com/geekq/dubbo/springboot/AppTest.java | 12 +- miaosha-rpc/dubbo-consumer/pom.xml | 26 - miaosha-rpc/dubbo-provider/pom.xml | 34 -- miaosha-rpc/pom.xml | 11 - miaosha-v1/pom.xml | 94 ---- .../geekq/miaosha/GeekQMainApplication.java | 42 -- .../miaosha/access/AccessInterceptor.java | 164 +++--- .../com/geekq/miaosha/access/AccessKey.java | 16 +- .../com/geekq/miaosha/access/AccessLimit.java | 8 +- .../com/geekq/miaosha/access/UserContext.java | 26 +- .../com/geekq/miaosha/common/Constanst.java | 10 +- .../miaosha/common/SnowflakeIdWorker.java | 98 ++-- .../miaosha/common/enums/MessageStatus.java | 16 +- .../miaosha/common/enums/ResultStatus.java | 43 +- .../common/resultbean/AbstractResult.java | 1 + .../common/resultbean/ResultGeekQ.java | 4 +- .../com/geekq/miaosha/config/DruidConfig.java | 371 ++++++------ .../miaosha/config/UserArgumentResolver.java | 5 +- .../com/geekq/miaosha/config/WebConfig.java | 2 +- .../miaosha/controller/BaseController.java | 45 +- .../miaosha/controller/GoodsController.java | 56 +- .../miaosha/controller/LoginController.java | 7 +- .../controller/MiaoShaMessageController.java | 16 +- .../miaosha/controller/MiaoshaController.java | 8 +- .../miaosha/controller/OrderController.java | 62 +-- .../controller/RegisterController.java | 21 +- .../java/com/geekq/miaosha/dao/GoodsDao.java | 16 +- .../geekq/miaosha/dao/MiaoShaMessageDao.java | 34 +- .../com/geekq/miaosha/dao/MiaoShaUserDao.java | 4 +- .../java/com/geekq/miaosha/dao/OrderDao.java | 32 +- .../java/com/geekq/miaosha/dao/UserDao.java | 14 +- .../java/com/geekq/miaosha/domain/Goods.java | 14 +- .../miaosha/domain/MiaoShaMessageInfo.java | 22 +- .../miaosha/domain/MiaoShaMessageUser.java | 8 +- .../geekq/miaosha/domain/MiaoshaGoods.java | 10 +- .../geekq/miaosha/domain/MiaoshaOrder.java | 8 +- .../com/geekq/miaosha/domain/MiaoshaUser.java | 43 +- .../com/geekq/miaosha/domain/OrderInfo.java | 22 +- .../java/com/geekq/miaosha/domain/User.java | 4 +- .../miaosha/exception/GlobleException.java | 2 +- .../exception/GlobleExceptionHandler.java | 19 +- .../miaosha/mybatis/Mapper/UserMapper.java | 12 +- .../miaosha/mybatis/vo/TeacherListVo.java | 6 +- .../geekq/miaosha/mybatis/vo/TeacherVo.java | 8 +- .../com/geekq/miaosha/rabbitmq/MQConfig.java | 174 +++--- .../geekq/miaosha/rabbitmq/MQReceiver.java | 88 ++- .../com/geekq/miaosha/rabbitmq/MQSender.java | 48 +- .../miaosha/rabbitmq/MiaoshaMessage.java | 32 +- .../com/geekq/miaosha/redis/BasePrefix.java | 13 +- .../miaosha/redis/DistributedLocker.java | 2 +- .../com/geekq/miaosha/redis/GoodsKey.java | 14 +- .../com/geekq/miaosha/redis/KeyPrefix.java | 4 +- .../geekq/miaosha/redis/MiaoShaUserKey.java | 10 +- .../com/geekq/miaosha/redis/MiaoshaKey.java | 16 +- .../com/geekq/miaosha/redis/OrderKey.java | 10 +- .../com/geekq/miaosha/redis/RedisConfig.java | 16 +- .../geekq/miaosha/redis/RedisPoolFactory.java | 29 +- .../com/geekq/miaosha/redis/RedisService.java | 526 +++++++++--------- .../geekq/miaosha/redis/RedissLockUtil.java | 7 +- .../java/com/geekq/miaosha/redis/Userkey.java | 9 +- .../redismanager/OptimisticLockTest.java | 213 ++++--- .../miaosha/redis/redismanager/RedisLock.java | 45 +- .../miaosha/redis/redismanager/RedisLua.java | 24 +- .../redis/redismanager/RedisManager.java | 6 +- .../miaosha/redis/redismanager/RedisUtil.java | 108 +--- .../geekq/miaosha/service/GoodsService.java | 35 +- .../service/MiaoShaMessageService.java | 8 +- .../miaosha/service/MiaoShaUserService.java | 88 ++- .../geekq/miaosha/service/MiaoshaService.java | 338 ++++++----- .../geekq/miaosha/service/OrderService.java | 82 +-- .../geekq/miaosha/service/UserService.java | 12 +- .../rpchander/RpcCompensateService.java | 6 +- .../miaosha/service/rpchander/RpcHandler.java | 2 +- .../service/rpchander/enums/PlanStepType.java | 10 +- .../miaosha/timeTask/OrderCloseTask.java | 46 +- .../java/com/geekq/miaosha/utils/DBUtil.java | 44 +- .../geekq/miaosha/utils/DateTimeUtils.java | 19 +- .../com/geekq/miaosha/utils/HttpUtil.java | 61 +- .../java/com/geekq/miaosha/utils/MD5Util.java | 56 +- .../com/geekq/miaosha/utils/MD5Utils.java | 28 +- .../com/geekq/miaosha/utils/UUIDUtil.java | 4 +- .../com/geekq/miaosha/utils/UserUtil.java | 168 +++--- .../geekq/miaosha/utils/ValidatorUtil.java | 26 +- .../geekq/miaosha/validator/MobileCheck.java | 2 +- .../miaosha/validator/MobileValidator.java | 18 +- .../com/geekq/miaosha/vo/GoodsDetailVo.java | 8 +- .../java/com/geekq/miaosha/vo/GoodsVo.java | 13 +- .../java/com/geekq/miaosha/vo/LoginVo.java | 4 +- .../geekq/miaosha/vo/MiaoShaMessageVo.java | 23 +- .../com/geekq/miaosha/vo/OrderDetailVo.java | 32 +- .../com/geekq/miasha/entity/BaseDomain.java | 2 +- .../java/com/geekq/miasha/entity/Goods.java | 14 +- .../java/com/geekq/miasha/entity/IpLog.java | 51 +- .../com/geekq/miasha/entity/Logininfo.java | 18 +- .../miasha/entity/MiaoShaMessageInfo.java | 22 +- .../miasha/entity/MiaoShaMessageUser.java | 8 +- .../com/geekq/miasha/entity/MiaoshaGoods.java | 10 +- .../com/geekq/miasha/entity/MiaoshaOrder.java | 8 +- .../com/geekq/miasha/entity/MiaoshaUser.java | 43 +- .../com/geekq/miasha/entity/OrderInfo.java | 22 +- .../com/geekq/miasha/enums/Constanst.java | 10 +- .../com/geekq/miasha/enums/Constants.java | 2 +- .../com/geekq/miasha/enums/MessageStatus.java | 16 +- .../geekq/miasha/enums/OrderStatusEnum.java | 59 +- .../java/com/geekq/miasha/enums/SexEnum.java | 31 +- .../java/com/geekq/miasha/enums/YesOrNo.java | 27 +- .../miasha/enums/enums/MessageStatus.java | 16 +- .../miasha/enums/enums/ResultStatus.java | 43 +- .../enums/resultbean/AbstractResult.java | 5 +- .../miasha/enums/resultbean/ResultGeekQ.java | 5 +- .../miasha/exception/GlobleException.java | 2 +- .../com/geekq/miasha/utils/DateTimeUtils.java | 19 +- .../java/com/geekq/miasha/utils/MD5Utils.java | 24 +- .../geekq/miasha/utils/SnowflakeIdWorker.java | 98 ++-- .../java/com/geekq/miasha/utils/UUIDUtil.java | 4 +- .../com/geekq/miasha/utils/UserContext.java | 26 +- .../com/geekq/miasha/utils/UserContext2.java | 4 +- .../com/geekq/miasha/utils/ValidatorUtil.java | 22 +- .../geekq/miasha/validator/MobileCheck.java | 2 +- .../miasha/validator/MobileValidator.java | 18 +- .../com/geekq/miasha/vo/GoodsDetailVo.java | 8 +- .../java/com/geekq/miasha/vo/GoodsVo.java | 8 +- .../java/com/geekq/miasha/vo/LoginVo.java | 2 +- .../com/geekq/miasha/vo/MiaoShaMessageVo.java | 22 +- .../com/geekq/miasha/vo/OrderDetailVo.java | 32 +- .../geekq/miaosha/mapper/LogininfoMapper.java | 18 +- .../miaosha/mapper/MiaoShaUserMapper.java | 4 +- .../com/geekq/miaosha/rabbitmq/MQConfig.java | 174 +++--- .../geekq/miaosha/rabbitmq/MQReceiver.java | 79 ++- .../com/geekq/miaosha/rabbitmq/MQSender.java | 48 +- .../miaosha/rabbitmq/MiaoshaMessage.java | 32 +- .../com/geekq/miaosha/redis/BasePrefix.java | 11 +- .../com/geekq/miaosha/redis/GoodsKey.java | 12 +- .../com/geekq/miaosha/redis/KeyPrefix.java | 4 +- .../geekq/miaosha/redis/MiaoShaUserKey.java | 10 +- .../com/geekq/miaosha/redis/MiaoshaKey.java | 16 +- .../com/geekq/miaosha/redis/OrderKey.java | 10 +- .../com/geekq/miaosha/redis/RedisConfig.java | 16 +- .../geekq/miaosha/redis/RedisPoolFactory.java | 28 +- .../com/geekq/miaosha/redis/RedisService.java | 520 ++++++++--------- .../geekq/miaosha/redis/RedissLockUtil.java | 7 +- .../java/com/geekq/miaosha/redis/Userkey.java | 9 +- .../redismanager/RedisLimitRateWithLUA.java | 8 +- .../miaosha/redis/redismanager/RedisLock.java | 44 +- .../miaosha/redis/redismanager/RedisLua.java | 28 +- .../redis/redismanager/RedisManager.java | 6 +- .../geekq/miaosha/service/GoodsService.java | 35 +- .../service/MiaoShaMessageService.java | 8 - .../miaosha/service/MiaoShaUserService.java | 96 ++-- .../geekq/miaosha/service/MiaoshaService.java | 342 ++++++------ .../geekq/miaosha/service/OrderService.java | 83 ++- .../service/impl/LoginInfoServiceImpl.java | 11 +- .../geekq/miaosha/GeekQMainApplication.java | 42 +- .../com/geekq/miaosha/config/DruidConfig.java | 371 ++++++------ .../miaosha/config/UserArgumentResolver.java | 5 +- .../com/geekq/miaosha/config/WebConfig.java | 5 +- .../miaosha/controller/BaseController.java | 44 +- .../miaosha/controller/GoodsController.java | 71 ++- .../miaosha/controller/LoginController.java | 10 +- .../controller/MiaoShaMessageController.java | 10 +- .../miaosha/controller/MiaoshaController.java | 5 +- .../miaosha/controller/OrderController.java | 60 +- .../controller/RegisterController.java | 31 +- .../geekq/miaosha/interceptor/AccessKey.java | 16 +- .../interceptor/GlobalExceptionHandler.java | 16 +- .../interceptor/GlobalParamAdvice.java | 6 +- .../miaosha/interceptor/LoginInterceptor.java | 166 +++--- .../miaosha/interceptor/RequireLogin.java | 8 +- miaosha-v2/pom.xml | 11 - pom.xml | 20 +- 252 files changed, 5190 insertions(+), 5590 deletions(-) diff --git a/docs/code-criterion.md b/docs/code-criterion.md index 5af8f0f..201a252 100644 --- a/docs/code-criterion.md +++ b/docs/code-criterion.md @@ -4,7 +4,7 @@ 有问题或者宝贵意见联系我的QQ,非常希望你的加入! ##要求: -1.lombook-- idea插件请大家下载 ,去除setget构造方法等,阿里巴巴代码规范插件请自行下载
+1.lombok-- idea插件请大家下载 ,去除setget构造方法等,阿里巴巴代码规范插件请自行下载
2.**尽量将长的类名,方法名,变量名精简**
1.长的类名会使开发者不易生命该类型的变量 diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Account.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Account.java index 4d8b46a..2d29238 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Account.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Account.java @@ -10,54 +10,54 @@ import java.math.BigDecimal; /** * 用户的帐户信息账户 一个LoginInfo 对应一个UserInfo对应一个Account - * + * * @author 邱润泽 */ @Getter @Setter @Alias("Account") public class Account extends BaseDomain { - private static final long serialVersionUID = 6760287512112252557L; - private int version; - private String tradePassword; // 交易密码 - private BigDecimal usableAmount = BidConst.ZERO; // 可用余额 - private BigDecimal freezedAmount = BidConst.ZERO; // 冻结金额 - private BigDecimal unReceiveInterest = BidConst.ZERO; // 账户待收利息 - private BigDecimal unReceivePrincipal = BidConst.ZERO; // 账户待收本金 - private BigDecimal unReturnAmount = BidConst.ZERO; // 账户待还金额 - private BigDecimal remainBorrowLimit = BidConst.ZERO; // 账户剩余授信额度 - private BigDecimal borrowLimitAmount; // 授信额度(当前还可以信用借款额度) + private static final long serialVersionUID = 6760287512112252557L; + private int version; + private String tradePassword; // 交易密码 + private BigDecimal usableAmount = BidConst.ZERO; // 可用余额 + private BigDecimal freezedAmount = BidConst.ZERO; // 冻结金额 + private BigDecimal unReceiveInterest = BidConst.ZERO; // 账户待收利息 + private BigDecimal unReceivePrincipal = BidConst.ZERO; // 账户待收本金 + private BigDecimal unReturnAmount = BidConst.ZERO; // 账户待还金额 + private BigDecimal remainBorrowLimit = BidConst.ZERO; // 账户剩余授信额度 + private BigDecimal borrowLimitAmount; // 授信额度(当前还可以信用借款额度) - private String abstractInfo;//摘要信息用于防篡改检查; + private String abstractInfo;//摘要信息用于防篡改检查; - public String getAbstractInfo() {//可用余额 + 冻结金额 + 账户神域的授权额度 - return MD5Utils.MD5(usableAmount.add(freezedAmount) - .add(remainBorrowLimit).toString()); - } + public static Account empty(Long id) { + Account account = new Account(); + account.setId(id); + account.setBorrowLimitAmount(BidConst.DEFALUT_BORROWLIMITAMOUNT); + account.setRemainBorrowLimit(BidConst.DEFALUT_BORROWLIMITAMOUNT); + return account; + } - public boolean checkAbstractInfo() {//可用余额 + 冻结金额 + 账户神域的授权额度 - return MD5Utils.MD5( - usableAmount.add(freezedAmount).add(remainBorrowLimit) - .toString()).equals(abstractInfo); - } + public String getAbstractInfo() {//可用余额 + 冻结金额 + 账户神域的授权额度 + return MD5Utils.MD5(usableAmount.add(freezedAmount) + .add(remainBorrowLimit).toString()); + } - public BigDecimal getTotalAmount() { - return usableAmount.add(freezedAmount).add(unReceivePrincipal); - } + public boolean checkAbstractInfo() {//可用余额 + 冻结金额 + 账户神域的授权额度 + return MD5Utils.MD5( + usableAmount.add(freezedAmount).add(remainBorrowLimit) + .toString()).equals(abstractInfo); + } - public void addUseableAmount(BigDecimal amount) { - this.usableAmount = this.usableAmount.add(amount); - } + public BigDecimal getTotalAmount() { + return usableAmount.add(freezedAmount).add(unReceivePrincipal); + } - public void addFreezedAmount(BigDecimal amount) { - this.freezedAmount = this.freezedAmount.add(amount); - } + public void addUseableAmount(BigDecimal amount) { + this.usableAmount = this.usableAmount.add(amount); + } - public static Account empty(Long id) { - Account account = new Account(); - account.setId(id); - account.setBorrowLimitAmount(BidConst.DEFALUT_BORROWLIMITAMOUNT); - account.setRemainBorrowLimit(BidConst.DEFALUT_BORROWLIMITAMOUNT); - return account; - } + public void addFreezedAmount(BigDecimal amount) { + this.freezedAmount = this.freezedAmount.add(amount); + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/BaseDomain.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/BaseDomain.java index fc19ab0..2e70783 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/BaseDomain.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/BaseDomain.java @@ -12,6 +12,6 @@ import java.io.Serializable; @Setter public class BaseDomain implements Serializable { - protected Long id; + protected Long id; } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/IpLog.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/IpLog.java index 640de1c..1cc35d8 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/IpLog.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/IpLog.java @@ -8,39 +8,40 @@ import java.util.Date; /** * 登陆日志 + * * @author Administrator */ @Getter @Setter @Alias("IpLog") public class IpLog extends BaseDomain { - public static int LOGINSTATE_FAILD = 0;//登陆失败 - public static int LOGINSTATE_SUCCESS = 1;//登陆成功 + public static int LOGINSTATE_FAILD = 0;//登陆失败 + public static int LOGINSTATE_SUCCESS = 1;//登陆成功 - private String username; - private Date loginTime; - private String ip; + private String username; + private Date loginTime; + private String ip; - private int loginState; - private int loginType; - private Long loginInfoId; - - public String getDisplayState(){ - return this.loginState==LOGINSTATE_FAILD?"登录失败":"登录成功"; - } + private int loginState; + private int loginType; + private Long loginInfoId; - public IpLog() { - super(); - } + public IpLog() { + super(); + } - public IpLog(String username, Date loginTime, String ip, int loginType, - Long loginInfoId) { - super(); - this.username = username; - this.loginTime = loginTime; - this.ip = ip; - this.loginState = IpLog.LOGINSTATE_FAILD; - this.loginType = loginType; - this.loginInfoId = loginInfoId; - } + public IpLog(String username, Date loginTime, String ip, int loginType, + Long loginInfoId) { + super(); + this.username = username; + this.loginTime = loginTime; + this.ip = ip; + this.loginState = IpLog.LOGINSTATE_FAILD; + this.loginType = loginType; + this.loginInfoId = loginInfoId; + } + + public String getDisplayState() { + return this.loginState == LOGINSTATE_FAILD ? "登录失败" : "登录成功"; + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Logininfo.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Logininfo.java index f90dde1..ab7422e 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Logininfo.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Logininfo.java @@ -15,13 +15,13 @@ import java.util.Date; @NoArgsConstructor public class Logininfo implements Serializable { - private Long id; - private String nickname; - private String password; - private String salt; - private Date registerDate; - private Date lastLoginDate; - private int state = Constants.STATE_NORMAL; - private int userType;//用户类型 - private boolean admin = false; + private Long id; + private String nickname; + private String password; + private String salt; + private Date registerDate; + private Date lastLoginDate; + private int state = Constants.STATE_NORMAL; + private int userType;//用户类型 + private boolean admin = false; } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/SystemDictionary.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/SystemDictionary.java index 792ca2b..99ec8bf 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/SystemDictionary.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/SystemDictionary.java @@ -10,25 +10,24 @@ import java.util.Map; /** * 数据字典 - * + * * @author Stef - * */ @Getter @Setter @Alias("SystemDictionary") public class SystemDictionary extends BaseDomain { - private static final long serialVersionUID = 3382007784095246946L; - private String sn; // 编码 - private String title; // 名称 - private String intro; // 简介 + private static final long serialVersionUID = 3382007784095246946L; + private String sn; // 编码 + private String title; // 名称 + private String intro; // 简介 - public String getJsonString() { - Map m = new HashMap<>(); - m.put("id", getId()); - m.put("sn", sn); - m.put("title", title); - m.put("intro", intro); - return JSONObject.toJSONString(m); - } + public String getJsonString() { + Map m = new HashMap<>(); + m.put("id", getId()); + m.put("sn", sn); + m.put("title", title); + m.put("intro", intro); + return JSONObject.toJSONString(m); + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/SystemDictionaryItem.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/SystemDictionaryItem.java index 2497f6b..6b2e79b 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/SystemDictionaryItem.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/SystemDictionaryItem.java @@ -10,7 +10,7 @@ import java.util.Map; /** * 数据字典明细 - * + * * @author Stef */ @Getter @@ -18,21 +18,21 @@ import java.util.Map; @Alias("SystemDictionaryItem") public class SystemDictionaryItem extends BaseDomain { - private static final long serialVersionUID = 4520006109163647891L; - private Long parentId; // 系统目录 - private String title; // 名称 - private String tvalue; // 值 - private Integer sequence; // 序列 - private String intro; // 说明 + private static final long serialVersionUID = 4520006109163647891L; + private Long parentId; // 系统目录 + private String title; // 名称 + private String tvalue; // 值 + private Integer sequence; // 序列 + private String intro; // 说明 - public String getJsonString() { - Map m = new HashMap<>(); - m.put("id", getId()); - m.put("parentId", parentId); - m.put("title", title); - m.put("tvalue", tvalue); - m.put("sequence", sequence); - m.put("intro", intro); - return JSONObject.toJSONString(m); - } + public String getJsonString() { + Map m = new HashMap<>(); + m.put("id", getId()); + m.put("parentId", parentId); + m.put("title", title); + m.put("tvalue", tvalue); + m.put("sequence", sequence); + m.put("intro", intro); + return JSONObject.toJSONString(m); + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Userinfo.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Userinfo.java index 1bb6b7b..71bb1d2 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Userinfo.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/entity/Userinfo.java @@ -36,7 +36,7 @@ public class Userinfo extends BaseDomain { */ private String email; /** - * 手机号 + * 手机号 */ private String phoneNumber = ""; /** @@ -54,7 +54,7 @@ public class Userinfo extends BaseDomain { */ private SystemDictionaryItem incomeGrade; /** - * 婚姻情况 + * 婚姻情况 */ private SystemDictionaryItem marriage; /** @@ -72,68 +72,15 @@ public class Userinfo extends BaseDomain { public static Userinfo empty(Long id) { Userinfo userinfo = new Userinfo(); - userinfo.setId(id); - userinfo.setBitState(BitStatesUtils.OP_BASIC_INFO); + userinfo.setId(id); + userinfo.setBitState(BitStatesUtils.OP_BASIC_INFO); return userinfo; } - public void addState(Long state) { - this.bitState = BitStatesUtils.addState(this.bitState, state); - } - - public void removeState(Long state) { - this.bitState = BitStatesUtils.removeState(this.bitState, state); - } - - public boolean getIsBindPhone() { - - return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_BIND_PHONE); - } - - public boolean getIsBindEmail() { - return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_BIND_EMAIL); - } - - public boolean getBaseInfo() { - return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_BASE_INFO); - } - - public boolean getRealAuth() { - return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_REAL_AUTH); - } - - public boolean getVedioAuth() { - return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_VEDIO_AUTH); - } - - public boolean getHasBidRequest(){ - return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_HAS_BIDRQUEST); - } - /** * 获取用户真实名字的隐藏字符串,只显示姓氏 * - * @param 真实名字 - * @return - */ - public String getAnonymousRealName() { - if (StringUtils.hasLength(realName)) { - int len = realName.length(); - String replace = ""; - replace += realName.charAt(0); - for (int i = 1; i < len; i++) { - replace += "*"; - } - return replace; - } - return realName; - } - - /** - * 获取用户真实名字的隐藏字符串,只显示姓氏 - * - * @param realName - * 真实名字 + * @param realName 真实名字 * @return */ public static String getAnonymousRealName(String realName) { @@ -171,12 +118,10 @@ public class Userinfo extends BaseDomain { return idNumber; } - /** * 获取用户手机号码的隐藏字符串 * - * @param phoneNumber - * 用户手机号码 + * @param phoneNumber 用户手机号码 * @return */ public static String getAnonymousPhoneNumber(String phoneNumber) { @@ -198,8 +143,7 @@ public class Userinfo extends BaseDomain { /** * 获取用户住址的隐藏字符串 * - * @param currentAddress - * 用户住址 + * @param currentAddress 用户住址 * @return */ public static String getAnonymousCurrentAddress(String currentAddress) { @@ -215,4 +159,56 @@ public class Userinfo extends BaseDomain { } return currentAddress; } + + public void addState(Long state) { + this.bitState = BitStatesUtils.addState(this.bitState, state); + } + + public void removeState(Long state) { + this.bitState = BitStatesUtils.removeState(this.bitState, state); + } + + public boolean getIsBindPhone() { + + return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_BIND_PHONE); + } + + public boolean getIsBindEmail() { + return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_BIND_EMAIL); + } + + public boolean getBaseInfo() { + return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_BASE_INFO); + } + + public boolean getRealAuth() { + return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_REAL_AUTH); + } + + public boolean getVedioAuth() { + return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_VEDIO_AUTH); + } + + public boolean getHasBidRequest() { + return BitStatesUtils.hasState(bitState, BitStatesUtils.OP_HAS_BIDRQUEST); + } + + /** + * 获取用户真实名字的隐藏字符串,只显示姓氏 + * + * @param 真实名字 + * @return + */ + public String getAnonymousRealName() { + if (StringUtils.hasLength(realName)) { + int len = realName.length(); + String replace = ""; + replace += realName.charAt(0); + for (int i = 1; i < len; i++) { + replace += "*"; + } + return replace; + } + return realName; + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/pojo/OrdersExample.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/pojo/OrdersExample.java index 620983b..3fcc382 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/pojo/OrdersExample.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/pojo/OrdersExample.java @@ -14,22 +14,22 @@ public class OrdersExample { oredCriteria = new ArrayList(); } - public void setOrderByClause(String orderByClause) { - this.orderByClause = orderByClause; - } - public String getOrderByClause() { return orderByClause; } - public void setDistinct(boolean distinct) { - this.distinct = distinct; + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; } public boolean isDistinct() { return distinct; } + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + public List getOredCriteria() { return oredCriteria; } @@ -339,38 +339,6 @@ public class OrdersExample { private String typeHandler; - public String getCondition() { - return condition; - } - - public Object getValue() { - return value; - } - - public Object getSecondValue() { - return secondValue; - } - - public boolean isNoValue() { - return noValue; - } - - public boolean isSingleValue() { - return singleValue; - } - - public boolean isBetweenValue() { - return betweenValue; - } - - public boolean isListValue() { - return listValue; - } - - public String getTypeHandler() { - return typeHandler; - } - protected Criterion(String condition) { super(); this.condition = condition; @@ -406,5 +374,37 @@ public class OrdersExample { protected Criterion(String condition, Object value, Object secondValue) { this(condition, value, secondValue, null); } + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } } } \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/IpLogQueryObject.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/IpLogQueryObject.java index a5fd8b4..3e99a30 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/IpLogQueryObject.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/IpLogQueryObject.java @@ -9,35 +9,35 @@ import java.util.Date; /** * IpLog查询对象 - * @author 邱润泽 * + * @author 邱润泽 */ @Setter @Getter public class IpLogQueryObject extends QueryObject { - private Date beginDate; - private Date endDate; - private String username; - private int userType=-1; - private boolean like; - private int state=-1; + private Date beginDate; + private Date endDate; + private String username; + private int userType = -1; + private boolean like; + private int state = -1; - @DateTimeFormat(pattern = "yyyy-MM-dd") - public void setBeginDate(Date beginDate) { - this.beginDate = beginDate; - } + @DateTimeFormat(pattern = "yyyy-MM-dd") + public void setBeginDate(Date beginDate) { + this.beginDate = beginDate; + } - @DateTimeFormat(pattern = "yyyy-MM-dd") - public void setEndDate(Date endDate) { - this.endDate = endDate; - } + public Date getEndDate() { + if (endDate != null) { + return DateUtil.endOfDay(endDate); + } + return null; + } - public Date getEndDate() { - if (endDate != null) { - return DateUtil.endOfDay(endDate); - } - return null; - } + @DateTimeFormat(pattern = "yyyy-MM-dd") + public void setEndDate(Date endDate) { + this.endDate = endDate; + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/PageResult.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/PageResult.java index f15723f..c408301 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/PageResult.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/PageResult.java @@ -5,62 +5,62 @@ import java.util.List; public class PageResult { - private Integer totalCount; - private Integer pageSize = 10; - private Integer currentPage = 1; - private List result; + private Integer totalCount; + private Integer pageSize = 10; + private Integer currentPage = 1; + private List result; - public PageResult() { + public PageResult() { - } + } - public static PageResult empty(int pageSize) { - return new PageResult(0, pageSize, 1, new ArrayList()); - } + public PageResult(Integer totalCount, Integer pageSize, + Integer currentPage, List result) { + super(); + this.totalCount = totalCount; + this.pageSize = pageSize; + this.currentPage = currentPage; + this.result = result; + } - public PageResult(Integer totalCount, Integer pageSize, - Integer currentPage, List result) { - super(); - this.totalCount = totalCount; - this.pageSize = pageSize; - this.currentPage = currentPage; - this.result = result; - } + public static PageResult empty(int pageSize) { + return new PageResult(0, pageSize, 1, new ArrayList()); + } - public Integer getTotalPage() { - return Math.max((totalCount + pageSize - 1) / pageSize, 1); - } + public Integer getTotalPage() { + return Math.max((totalCount + pageSize - 1) / pageSize, 1); + } - public Integer getPrev() { - return Math.max(currentPage - 1, 1); - } + public Integer getPrev() { + return Math.max(currentPage - 1, 1); + } - public Integer getNext() { - return Math.min(currentPage + 1, getTotalPage()); - } + public Integer getNext() { + return Math.min(currentPage + 1, getTotalPage()); + } - public Integer getTotalCount() { - return totalCount; - } + public Integer getTotalCount() { + return totalCount; + } - public List getResult() { - return result; - } + public List getResult() { + return result; + } - public Integer getCurrentPage() { - return currentPage; - } + public Integer getCurrentPage() { + return currentPage; + } - public void setCurrentPage(Integer currentPage) { - this.currentPage = currentPage; - } + public void setCurrentPage(Integer currentPage) { + this.currentPage = currentPage; + } - public Integer getPageSize() { - return pageSize; - } + public Integer getPageSize() { + return pageSize; + } - public void setPageSize(Integer pageSize) { - this.pageSize = pageSize; - } + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/QueryObject.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/QueryObject.java index cd43e60..71943cd 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/QueryObject.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/QueryObject.java @@ -8,11 +8,11 @@ import lombok.Setter; @Setter public class QueryObject { - private Integer currentPage = 1; - private Integer pageSize = 10; + private Integer currentPage = 1; + private Integer pageSize = 10; - public int getStart() { - return (currentPage - 1) * pageSize; - } + public int getStart() { + return (currentPage - 1) * pageSize; + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/SystemDictionaryQueryObject.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/SystemDictionaryQueryObject.java index e11488b..1810d57 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/SystemDictionaryQueryObject.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/query/SystemDictionaryQueryObject.java @@ -7,10 +7,10 @@ import org.springframework.util.StringUtils; @Getter @Setter public class SystemDictionaryQueryObject extends QueryObject { - private String keyword; - private Long parentId; + private String keyword; + private Long parentId; - public String getKeyword() { - return StringUtils.hasLength(keyword) ? keyword : null; - } + public String getKeyword() { + return StringUtils.hasLength(keyword) ? keyword : null; + } } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/IAccountService.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/IAccountService.java index 2cfe823..92cdf3d 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/IAccountService.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/IAccountService.java @@ -7,11 +7,11 @@ import java.util.List; public interface IAccountService { - void update(Account account); + void update(Account account); - Account get(Long id); - - void recreateAbstractInfo(); - - List listAll(); + Account get(Long id); + + void recreateAbstractInfo(); + + List listAll(); } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/ILogininfoService.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/ILogininfoService.java index 55a1f7e..3e49b76 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/ILogininfoService.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/ILogininfoService.java @@ -5,44 +5,49 @@ import com.geekq.common.utils.resultbean.ResultGeekQ; import java.util.List; import java.util.Map; + public interface ILogininfoService { - /** - * 注册 - * @param username - * @param password - */ - void register(String username, String password); + /** + * 注册 + * + * @param username + * @param password + */ + void register(String username, String password); - /** - * 检查是否有重复的用户名 - */ - boolean checkUsername(String name, int userType); + /** + * 检查是否有重复的用户名 + */ + boolean checkUsername(String name, int userType); - /** - * 用户登陆 - * @param name - * @param password - * @return - */ - ResultGeekQ login(String name, String password, int userType, String ip); + /** + * 用户登陆 + * + * @param name + * @param password + * @return + */ + ResultGeekQ login(String name, String password, int userType, String ip); - /** - * 是否有管理员 - * @return - */ - boolean hasAdmin(); + /** + * 是否有管理员 + * + * @return + */ + boolean hasAdmin(); - /** - * 创建默认的管理员 - */ - void createDefaultAdmin(); + /** + * 创建默认的管理员 + */ + void createDefaultAdmin(); - /** - * 查询用户的id和name - * @param word - * @param userType - * @return - */ - List> autoComplate(String word, int userType); + /** + * 查询用户的id和name + * + * @param word + * @param userType + * @return + */ + List> autoComplate(String word, int userType); } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/ISystemDictionaryService.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/ISystemDictionaryService.java index 5d5631e..c1912eb 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/ISystemDictionaryService.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/ISystemDictionaryService.java @@ -9,16 +9,16 @@ import java.util.List; public interface ISystemDictionaryService { - PageResult queryDic(SystemDictionaryQueryObject qo); + PageResult queryDic(SystemDictionaryQueryObject qo); - void saveOrUpdate(SystemDictionary sd); + void saveOrUpdate(SystemDictionary sd); - PageResult queryDicItem(SystemDictionaryQueryObject qo); + PageResult queryDicItem(SystemDictionaryQueryObject qo); - void saveOrUpdateItem(SystemDictionaryItem item); + void saveOrUpdateItem(SystemDictionaryItem item); - List listDics(); - - List queryBySn(String sn); + List listDics(); + + List queryBySn(String sn); } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/IUserService.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/IUserService.java index b18ee3d..93c2cd5 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/IUserService.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/IUserService.java @@ -5,15 +5,16 @@ import com.geekq.admin.entity.Userinfo; public interface IUserService { - void update(Userinfo userinfo); + void update(Userinfo userinfo); - Userinfo get(Long id); + Userinfo get(Long id); - boolean bindPhone(String phoneNumber, String verifyCode); + boolean bindPhone(String phoneNumber, String verifyCode); - /** - * 修改基本信息 - * @param userinfo - */ - void updateBasicInfo(Userinfo userinfo); + /** + * 修改基本信息 + * + * @param userinfo + */ + void updateBasicInfo(Userinfo userinfo); } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/OrdersService.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/OrdersService.java index c70561b..be0e624 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/OrdersService.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/OrdersService.java @@ -4,15 +4,15 @@ import com.geekq.admin.pojo.Orders; public interface OrdersService { - /** - * @Description: 根据订单id查询订单 - */ - public Orders getOrder(String orderId); - - /** - * @Description: 下订单 - */ - public boolean createOrder(String itemId); + /** + * @Description: 根据订单id查询订单 + */ + public Orders getOrder(String orderId); + + /** + * @Description: 下订单 + */ + public boolean createOrder(String itemId); } diff --git a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/RedisCacheStorageService.java b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/RedisCacheStorageService.java index 799bb21..9705ead 100644 --- a/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/RedisCacheStorageService.java +++ b/miaosha-admin/miaosha-admin-api/src/main/java/com/geekq/admin/service/RedisCacheStorageService.java @@ -2,8 +2,6 @@ package com.geekq.admin.service; import com.geekq.admin.entity.Logininfo; -import java.util.Map; - public interface RedisCacheStorageService { /** @@ -16,6 +14,5 @@ public interface RedisCacheStorageService { boolean set(String key, V value); - Logininfo get(String key); } diff --git a/miaosha-admin/miaosha-admin-common/pom.xml b/miaosha-admin/miaosha-admin-common/pom.xml index e89870a..bc7ce94 100644 --- a/miaosha-admin/miaosha-admin-common/pom.xml +++ b/miaosha-admin/miaosha-admin-common/pom.xml @@ -13,46 +13,19 @@ org.apache.commons commons-lang3 - - commons-net - commons-net - - com.fasterxml.jackson.core jackson-databind - javax.validation validation-api - 2.0.1.Final org.projectlombok lombok provided - - org.hibernate - hibernate-validator - 7.0.1.Final - - - - org.apache.httpcomponents - httpclient - - - javax.servlet - servlet-api - provided - - - javax.servlet - jsp-api - provided - com.alibaba fastjson @@ -61,5 +34,9 @@ org.springframework spring-context + + commons-codec + commons-codec + \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/Constants.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/Constants.java index edd44d5..39c9ce6 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/Constants.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/Constants.java @@ -4,7 +4,7 @@ package com.geekq.common.enums; * @author 邱润泽 * 常用数据静态变量类型集合 */ -public class Constants { +public class Constants { public static final int STATE_NORMAL = 0; public static final int STATE_LOCK = 1; diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/MessageStatus.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/MessageStatus.java index a31029e..5139307 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/MessageStatus.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/MessageStatus.java @@ -2,17 +2,18 @@ package com.geekq.common.enums; public class MessageStatus { - public static final Integer ZORE = 0; + public static final Integer ZORE = 0; + /** * 消息类型 */ - public enum messageType { + public enum messageType { maiosha_message("秒杀消息"), buy_message("购买消息"), system_message("系统消息"); private String message; - private messageType(String message){ + private messageType(String message) { this.message = message; } @@ -24,10 +25,10 @@ public class MessageStatus { /** * 消息内容 */ - public enum ContentEnum { - system_message_register(7000,"尊敬的用户你好,你已经成功注册!"), + public enum ContentEnum { + system_message_register(7000, "尊敬的用户你好,你已经成功注册!"), - system_message_register_head(7001,"注册成功"); + system_message_register_head(7001, "注册成功"); private int code; private String message; @@ -45,10 +46,11 @@ public class MessageStatus { return message; } } + /** * 消息类型 */ - public enum sendType { + public enum sendType { // maiosha_message("秒杀消息"), // buy_message("购买消息"), // system_message("系统消息"); diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/OrderStatusEnum.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/OrderStatusEnum.java index b471588..2440d9a 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/OrderStatusEnum.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/OrderStatusEnum.java @@ -1,40 +1,39 @@ package com.geekq.common.enums; /** - * * @Description: 订单状态 */ public enum OrderStatusEnum { - WAIT_PAY(10, "待付款"), // 代付款 - PAYING(20, "付款中"), // 付款中 - PAID(30, "已付款"), // 已付款 - PAID_FAILD(40, "付款失败"), // 付款失败 - CANCELED(50, "已取消"), // 已取消 - CLOSED(60, "交易关闭"); // 超时未支付, 交易关闭 - - public final int key; - public final String value; - - OrderStatusEnum(int key, String value) { - this.key = key; - this.value = value; - } + WAIT_PAY(10, "待付款"), // 代付款 + PAYING(20, "付款中"), // 付款中 + PAID(30, "已付款"), // 已付款 + PAID_FAILD(40, "付款失败"), // 付款失败 + CANCELED(50, "已取消"), // 已取消 + CLOSED(60, "交易关闭"); // 超时未支付, 交易关闭 - public static String getName(int key) { - for (OrderStatusEnum status : OrderStatusEnum.values()) { - if (status.getKey() == key) { - return status.value; - } - } - return null; - } - - public int getKey() { - return key; - } + public final int key; + public final String value; - public String getValue() { - return value; - } + OrderStatusEnum(int key, String value) { + this.key = key; + this.value = value; + } + + public static String getName(int key) { + for (OrderStatusEnum status : OrderStatusEnum.values()) { + if (status.getKey() == key) { + return status.value; + } + } + return null; + } + + public int getKey() { + return key; + } + + public String getValue() { + return value; + } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/ResultStatus.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/ResultStatus.java index 814a0b9..0d0408f 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/ResultStatus.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/ResultStatus.java @@ -8,6 +8,7 @@ package com.geekq.common.enums; * 4 秒杀错误 * 5 商品错误 * 6 订单错误 + * * @author qiurunze */ public enum ResultStatus { @@ -28,38 +29,38 @@ public enum ResultStatus { /** * 注册登录 */ - RESIGETR_SUCCESS(20000,"注册成功!"), - RESIGETER_FAIL(200001,"注册失败!"), - CODE_FAIL(200002,"验证码不一致!"), - RESIGETER_NICKNAMEEXIST(200003,"用户名已经存在!"), - LOGIN_FIAL(200004,"登录失败!"), + RESIGETR_SUCCESS(20000, "注册成功!"), + RESIGETER_FAIL(200001, "注册失败!"), + CODE_FAIL(200002, "验证码不一致!"), + RESIGETER_NICKNAMEEXIST(200003, "用户名已经存在!"), + LOGIN_FIAL(200004, "登录失败!"), /** * check */ - BIND_ERROR (30001,"参数校验异常:%s"), - ACCESS_LIMIT_REACHED (30002,"请求非法!"), - REQUEST_ILLEGAL (30004,"访问太频繁!"), - SESSION_ERROR (30005,"Session不存在或者已经失效!"), - PASSWORD_EMPTY (30006,"登录密码不能为空!"), - MOBILE_EMPTY (30007,"手机号不能为空!"), - MOBILE_ERROR (30008,"手机号格式错误!"), - MOBILE_NOT_EXIST (30009,"手机号不存在!"), - PASSWORD_ERROR (30010,"密码错误!"), - USER_NOT_EXIST(30011,"用户不存在!"), + BIND_ERROR(30001, "参数校验异常:%s"), + ACCESS_LIMIT_REACHED(30002, "请求非法!"), + REQUEST_ILLEGAL(30004, "访问太频繁!"), + SESSION_ERROR(30005, "Session不存在或者已经失效!"), + PASSWORD_EMPTY(30006, "登录密码不能为空!"), + MOBILE_EMPTY(30007, "手机号不能为空!"), + MOBILE_ERROR(30008, "手机号格式错误!"), + MOBILE_NOT_EXIST(30009, "手机号不存在!"), + PASSWORD_ERROR(30010, "密码错误!"), + USER_NOT_EXIST(30011, "用户不存在!"), /** * 订单模块 */ - ORDER_NOT_EXIST(60001,"订单不存在"), + ORDER_NOT_EXIST(60001, "订单不存在"), /** * 秒杀模块 */ - MIAO_SHA_OVER(40001,"商品已经秒杀完毕"), - REPEATE_MIAOSHA(40002,"不能重复秒杀"), - MIAOSHA_FAIL(40003,"秒杀失败"); + MIAO_SHA_OVER(40001, "商品已经秒杀完毕"), + REPEATE_MIAOSHA(40002, "不能重复秒杀"), + MIAOSHA_FAIL(40003, "秒杀失败"); /** * 商品模块 @@ -72,6 +73,10 @@ public enum ResultStatus { this.message = message; } + private ResultStatus(Object... args) { + this.message = String.format(this.message, args); + } + public int getCode() { return this.code; } @@ -99,8 +104,4 @@ public enum ResultStatus { public String toString() { return this.getName(); } - - private ResultStatus(Object... args) { - this.message = String.format(this.message, args); - } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/SexEnum.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/SexEnum.java index 5c661ba..6a02f2b 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/SexEnum.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/SexEnum.java @@ -1,23 +1,22 @@ package com.geekq.common.enums; /** - * * @Description: 男女枚举 */ public enum SexEnum { - - GIRL(0), // 女 - BOY(1), // 男 - SECRET(2); // 保密 - - public final int value; - - SexEnum(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - + + GIRL(0), // 女 + BOY(1), // 男 + SECRET(2); // 保密 + + public final int value; + + SexEnum(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/YesOrNo.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/YesOrNo.java index 6508d3d..8b651ca 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/YesOrNo.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/enums/YesOrNo.java @@ -1,22 +1,21 @@ package com.geekq.common.enums; /** - * * @Description: 是否枚举 */ public enum YesOrNo { - YES(1), // 是 有错误 - NO(0); // 否 无错误 - - public final int value; - - YesOrNo(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - + YES(1), // 是 有错误 + NO(0); // 否 无错误 + + public final int value; + + YesOrNo(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/Constanst.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/Constanst.java index 331083d..9049256 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/Constanst.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/Constanst.java @@ -6,14 +6,14 @@ public class Constanst { public static String COUNTLOGIN = "count:login"; - public enum orderStaus{ + public enum orderStaus { ORDER_NOT_PAY("新建未支付"); - orderStaus(String name){ - this.name=name; - } + private String name; - private String name; + orderStaus(String name) { + this.name = name; + } public String getName() { return name; diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/DBContextUtil.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/DBContextUtil.java index 4c7efb8..bea0dc7 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/DBContextUtil.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/DBContextUtil.java @@ -2,17 +2,16 @@ package com.geekq.common.utils; public class DBContextUtil { - private static ThreadLocal dbPools = new ThreadLocal<>(); + public static final String DBMASTER = "dbmaster"; + public static final String DBREAD = "dbread"; + private static ThreadLocal dbPools = new ThreadLocal<>(); - public static final String DBMASTER = "dbmaster"; - public static final String DBREAD = "dbread"; + public static String getDB() { + return dbPools.get(); + } - public static void setDB(String db) { - dbPools.set(db); - } - - public static String getDB() { - return dbPools.get(); - } + public static void setDB(String db) { + dbPools.set(db); + } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/DateUtil.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/DateUtil.java index 868b35b..3153757 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/DateUtil.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/DateUtil.java @@ -8,12 +8,12 @@ import java.util.Date; public class DateUtil { - public static Date endOfDay(Date d) { - return DateUtils.addSeconds( - DateUtils.addDays(DateUtils.truncate(d, Calendar.DATE), 1), -1); - } + public static Date endOfDay(Date d) { + return DateUtils.addSeconds( + DateUtils.addDays(DateUtils.truncate(d, Calendar.DATE), 1), -1); + } - public static long getSecondsBetweenDates(Date d1, Date d2) { - return Math.abs((d1.getTime() - d2.getTime()) / 1000); - } + public static long getSecondsBetweenDates(Date d1, Date d2) { + return Math.abs((d1.getTime() - d2.getTime()) / 1000); + } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/JsonUtils.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/JsonUtils.java index e8713b1..0ffcde5 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/JsonUtils.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/JsonUtils.java @@ -1,13 +1,12 @@ package com.geekq.common.utils; -import java.util.List; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.List; + /** - * * @Description: 自定义响应结构, 转换类 */ public class JsonUtils { @@ -19,24 +18,25 @@ public class JsonUtils { * 将对象转换成json字符串。 *

Title: pojoToJson

*

Description:

+ * * @param data * @return */ public static String objectToJson(Object data) { - try { - String string = MAPPER.writeValueAsString(data); - return string; - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - return null; + try { + String string = MAPPER.writeValueAsString(data); + return string; + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return null; } - + /** * 将json结果集转化为对象 - * + * * @param jsonData json数据 - * @param clazz 对象中的object类型 + * @param clazz 对象中的object类型 * @return */ public static T jsonToPojo(String jsonData, Class beanType) { @@ -44,29 +44,30 @@ public class JsonUtils { T t = MAPPER.readValue(jsonData, beanType); return t; } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); } return null; } - + /** * 将json数据转换成pojo对象list *

Title: jsonToList

*

Description:

+ * * @param jsonData * @param beanType * @return */ - public static List jsonToList(String jsonData, Class beanType) { - JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); - try { - List list = MAPPER.readValue(jsonData, javaType); - return list; - } catch (Exception e) { - e.printStackTrace(); - } - - return null; + public static List jsonToList(String jsonData, Class beanType) { + JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); + try { + List list = MAPPER.readValue(jsonData, javaType); + return list; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; } - + } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/MD5/MD5Utils.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/MD5/MD5Utils.java index cd559cb..39f4517 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/MD5/MD5Utils.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/MD5/MD5Utils.java @@ -1,10 +1,9 @@ package com.geekq.common.utils.MD5; +import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.digest.DigestUtils; import java.security.SecureRandom; -import java.util.Arrays; -import java.util.Random; /** * @author 邱润泽 @@ -12,16 +11,17 @@ import java.util.Random; public class MD5Utils { - public static final String getSaltT (){ + private static String getSalt = getSaltT(); + + public static final String getSaltT() { SecureRandom random = new SecureRandom(); byte bytes[] = new byte[15]; random.nextBytes(bytes); - String salt = org.apache.commons.codec.binary.Base64.encodeBase64String(bytes); + String salt = Base64.encodeBase64String(bytes); return salt; } - private static String getSalt = getSaltT(); - public static String MD5( String keyName ){ + public static String MD5(String keyName) { /** * 返回16 */ @@ -32,32 +32,35 @@ public class MD5Utils { /** * 测试使用 + * * @param inputPass * @return */ - public static String inputPassFormPass ( String inputPass ){ - String str = "" + getSalt.charAt(0) + getSalt.charAt(2) + inputPass + getSalt.charAt(4) + getSalt.charAt(6) ; + public static String inputPassFormPass(String inputPass) { + String str = "" + getSalt.charAt(0) + getSalt.charAt(2) + inputPass + getSalt.charAt(4) + getSalt.charAt(6); return MD5(str); } /** * 盐值salt 随机 二次加密 + * * @param inputPass * @return */ - public static String formPassFormPass ( String inputPass ){ - String str = "" + getSalt.charAt(0) + getSalt.charAt(2) +inputPass + getSalt.charAt(4) + getSalt.charAt(6) ; + public static String formPassFormPass(String inputPass) { + String str = "" + getSalt.charAt(0) + getSalt.charAt(2) + inputPass + getSalt.charAt(4) + getSalt.charAt(6); return MD5(str); } /** - * 第二次md5--反解密 用户登录验证 --- salt 可随机  + * 第二次md5--反解密 用户登录验证 --- salt 可随机 + * * @param formPass * @param salt * @return */ - public static String formPassToDBPass ( String formPass ,String salt ) { - String str = "" + salt.charAt(0) + salt.charAt(2)+ formPass + salt.charAt(4) + salt.charAt(6) ; + public static String formPassToDBPass(String formPass, String salt) { + String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(4) + salt.charAt(6); return MD5(str); } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/SnowflakeIdWorker.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/SnowflakeIdWorker.java index 0f99e84..be16406 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/SnowflakeIdWorker.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/SnowflakeIdWorker.java @@ -1,4 +1,5 @@ package com.geekq.common.utils; + /** * Twitter_Snowflake
* SnowFlake的结构如下(每部分用-分开):
@@ -14,52 +15,82 @@ package com.geekq.common.utils; public class SnowflakeIdWorker { // ==============================Fields=========================================== - /** 开始时间截 (2015-01-01) */ + /** + * 开始时间截 (2015-01-01) + */ private final long twepoch = 1420041600000L; - /** 机器id所占的位数 */ + /** + * 机器id所占的位数 + */ private final long workerIdBits = 5L; - /** 数据标识id所占的位数 */ + /** + * 数据标识id所占的位数 + */ private final long datacenterIdBits = 5L; - /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */ + /** + * 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) + */ private final long maxWorkerId = -1L ^ (-1L << workerIdBits); - /** 支持的最大数据标识id,结果是31 */ + /** + * 支持的最大数据标识id,结果是31 + */ private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); - /** 序列在id中占的位数 */ + /** + * 序列在id中占的位数 + */ private final long sequenceBits = 12L; - /** 机器ID向左移12位 */ + /** + * 机器ID向左移12位 + */ private final long workerIdShift = sequenceBits; - /** 数据标识id向左移17位(12+5) */ + /** + * 数据标识id向左移17位(12+5) + */ private final long datacenterIdShift = sequenceBits + workerIdBits; - /** 时间截向左移22位(5+5+12) */ + /** + * 时间截向左移22位(5+5+12) + */ private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; - /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */ + /** + * 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) + */ private final long sequenceMask = -1L ^ (-1L << sequenceBits); - /** 工作机器ID(0~31) */ + /** + * 工作机器ID(0~31) + */ private long workerId; - /** 数据中心ID(0~31) */ + /** + * 数据中心ID(0~31) + */ private long datacenterId; - /** 毫秒内序列(0~4095) */ + /** + * 毫秒内序列(0~4095) + */ private long sequence = 0L; - /** 上次生成ID的时间截 */ + /** + * 上次生成ID的时间截 + */ private long lastTimestamp = -1L; //==============================Constructors===================================== + /** * 构造函数 - * @param workerId 工作ID (0~31) + * + * @param workerId 工作ID (0~31) * @param datacenterId 数据中心ID (0~31) */ public SnowflakeIdWorker(long workerId, long datacenterId) { @@ -75,18 +106,33 @@ public class SnowflakeIdWorker { /** * 生成订单唯一ID + * * @param workerId * @param datacenterId * @return */ - public static long getOrderId(long workerId, long datacenterId){ + public static long getOrderId(long workerId, long datacenterId) { SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); return idWorker.nextId(); } // ==============================Methods========================================== + + /** + * 测试 + */ + public static void main(String[] args) { + SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); + for (int i = 0; i < 1000; i++) { + long id = idWorker.nextId(); + System.out.println(Long.toBinaryString(id)); + System.out.println(id); + } + } + /** * 获得下一个ID (该方法是线程安全的) + * * @return SnowflakeId */ public synchronized long nextId() { @@ -124,6 +170,7 @@ public class SnowflakeIdWorker { /** * 阻塞到下一个毫秒,直到获得新的时间戳 + * * @param lastTimestamp 上次生成ID的时间截 * @return 当前时间戳 */ @@ -135,29 +182,16 @@ public class SnowflakeIdWorker { return timestamp; } + //==============================Test============================================= + /** * 返回以毫秒为单位的当前时间 + * * @return 当前时间(毫秒) */ protected long timeGen() { return System.currentTimeMillis(); } - //==============================Test============================================= - /** 测试 */ - public static void main(String[] args) { - SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); - for (int i = 0; i < 1000; i++) { - long id = idWorker.nextId(); - System.out.println(Long.toBinaryString(id)); - System.out.println(id); - } - } - - - - - - } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/ValidatorUtil.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/ValidatorUtil.java index ae82575..51383ec 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/ValidatorUtil.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/ValidatorUtil.java @@ -6,16 +6,16 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class ValidatorUtil { - - private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}"); - - public static boolean isMobile(String src) { - if(StringUtils.isEmpty(src)) { - return false; - } - Matcher m = mobile_pattern.matcher(src); - return m.matches(); - } - + + private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}"); + + public static boolean isMobile(String src) { + if (StringUtils.isEmpty(src)) { + return false; + } + Matcher m = mobile_pattern.matcher(src); + return m.matches(); + } + } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/BidConst.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/BidConst.java index 8f3aad1..119fc1c 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/BidConst.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/BidConst.java @@ -4,69 +4,75 @@ import java.math.BigDecimal; /** * 系统需要的常量 - * @author 邱润泽 * + * @author 邱润泽 */ public class BidConst { - public static final int DISPLAY_SCALE = 2;//显示精度 - public static final int CAL_SCALE = 8;//计算精度 - public static final int STORE_SCALE = 4;//保存精度 + public static final int DISPLAY_SCALE = 2;//显示精度 + public static final int CAL_SCALE = 8;//计算精度 + public static final int STORE_SCALE = 4;//保存精度 - public static final BigDecimal ZERO = new BigDecimal("0.0000");//系统中需要的zero - public static final BigDecimal DEFALUT_BORROWLIMITAMOUNT = new BigDecimal( - "2000.0000");//初始用户授信额度 - public static final BigDecimal ACCOUNT_MANAGER_CHARGE_RATE=new BigDecimal("0.0500"); + public static final BigDecimal ZERO = new BigDecimal("0.0000");//系统中需要的zero + public static final BigDecimal DEFALUT_BORROWLIMITAMOUNT = new BigDecimal( + "2000.0000");//初始用户授信额度 + public static final BigDecimal ACCOUNT_MANAGER_CHARGE_RATE = new BigDecimal("0.0500"); - public static final String DEFAULT_ADMIN_NAME = "admin"; - public static final String DEFAULT_ADMIN_PASSWORD = "1111"; + public static final String DEFAULT_ADMIN_NAME = "admin"; + public static final String DEFAULT_ADMIN_PASSWORD = "1111"; - public static final int CREDIT_BORROW_SCORE = 30;//信用信用分数 + public static final int CREDIT_BORROW_SCORE = 30;//信用信用分数 - public final static int RETURN_TYPE_MONTH_INTEREST_PRINCIPAL = 0; // 还款方式 按月分期还款(等额本息) - public final static int RETURN_TYPE_MONTH_INTEREST = 1; // 还款方式 按月到期还款(每月还利息,到期还本息) - - public final static int BIDREQUEST_TYPE_NORMAL = 0; // 普通信用标 - - public final static int BIDREQUEST_STATE_PUBLISH_PENDING = 0; // 待发布 - public final static int BIDREQUEST_STATE_BIDDING = 1; // 招标中 - public final static int BIDREQUEST_STATE_UNDO = 2; // 已撤销 - public final static int BIDREQUEST_STATE_BIDDING_OVERDUE = 3; // 流标 - public final static int BIDREQUEST_STATE_APPROVE_PENDING_1 = 4; // 满标1审 - public final static int BIDREQUEST_STATE_APPROVE_PENDING_2 = 5; // 满标2审 - public final static int BIDREQUEST_STATE_REJECTED = 6; // 满标审核被拒绝 - public final static int BIDREQUEST_STATE_PAYING_BACK = 7; // 还款中 - public final static int BIDREQUEST_STATE_COMPLETE_PAY_BACK = 8; // 已还清 - public final static int BIDREQUEST_STATE_PAY_BACK_OVERDUE = 9; // 逾期 - public final static int BIDREQUEST_STATE_PUBLISH_REFUSE = 10; // 发标审核拒绝状态 - - public static final BigDecimal SMALLEST_BID_AMOUNT = new BigDecimal("50.0000");//系统规定的最小投标金额 - public static final BigDecimal SMALLEST_BIDREQUEST_AMOUNT = new BigDecimal("500.0000");//系统规定的最小借款金额 - - /**=============================账户流水类型================================ */ - public final static int ACCOUNT_ACTIONTYPE_DEPOSIT_OFFLINE_LOCAL = 0;// 资金流水类别:线下充值 - public final static int ACCOUNT_ACTIONTYPE_WITHDRAW = 1;// 资金流水类别:提现 - public final static int ACCOUNT_ACTIONTYPE_BIDREQUEST_SUCCESSFUL = 2;// 资金流水类别:成功借款 - public final static int ACCOUNT_ACTIONTYPE_BID_SUCCESSFUL = 3;// 资金流水类别:成功投标 - public final static int ACCOUNT_ACTIONTYPE_RETURN_MONEY = 4;// 资金流水类别:还款 - public final static int ACCOUNT_ACTIONTYPE_CALLBACK_MONEY = 5;// 资金流水类别:回款 - public final static int ACCOUNT_ACTIONTYPE_CHARGE = 6;// 资金流水类别:平台管理费 - public final static int ACCOUNT_ACTIONTYPE_INTEREST_SHARE = 7;// 资金流水类别:利息管理费 - public final static int ACCOUNT_ACTIONTYPE_WITHDRAW_MANAGE_CHARGE = 8;// 资金流水类别:提现手续费 - public final static int ACCOUNT_ACTIONTYPE_RECHARGE_CHARGE = 9;// 资金流水类别:充值手续费 - public final static int ACCOUNT_ACTIONTYPE_BID_FREEZED = 10;// 资金流水类别:投标冻结金额 - public final static int ACCOUNT_ACTIONTYPE_BID_UNFREEZED = 11;// 资金流水类别:取消投标冻结金额 - public final static int ACCOUNT_ACTIONTYPE_WITHDRAW_FREEZED = 12;// 资金流水类别:提现申请冻结金额 - public final static int ACCOUNT_ACTIONTYPE_WITHDRAW_UNFREEZED = 13;// 资金流水类别:提现申请失败取消冻结金额 - - /**=========还款状态===============*/ - public final static int PAYMENT_STATE_NORMAL = 0; //正常待还 - public final static int PAYMENT_STATE_DONE = 1; //已还 - public final static int PAYMENT_STATE_OVERDUE = 2; //逾期 - - /**============系统账户流水类型=============*/ - public final static int SYSTEM_ACCOUNT_NONE = -1; //未指定 - public final static int SYSTEM_ACCOUNT_ACTIONTYPE_MANAGE_CHARGE = 1;//系统账户收到账户管理费(借款管理费) - public final static int SYSTEM_ACCOUNT_ACTIONTYPE_INTREST_MANAGE_CHARGE = 2;//系统账户收到利息管理费 - public final static int SYSTEM_ACCOUNT_ACTIONTYPE_WITHDRAW_MANAGE_CHARGE = 3;//系统账户收到提现手续费 + public final static int RETURN_TYPE_MONTH_INTEREST_PRINCIPAL = 0; // 还款方式 按月分期还款(等额本息) + public final static int RETURN_TYPE_MONTH_INTEREST = 1; // 还款方式 按月到期还款(每月还利息,到期还本息) + + public final static int BIDREQUEST_TYPE_NORMAL = 0; // 普通信用标 + + public final static int BIDREQUEST_STATE_PUBLISH_PENDING = 0; // 待发布 + public final static int BIDREQUEST_STATE_BIDDING = 1; // 招标中 + public final static int BIDREQUEST_STATE_UNDO = 2; // 已撤销 + public final static int BIDREQUEST_STATE_BIDDING_OVERDUE = 3; // 流标 + public final static int BIDREQUEST_STATE_APPROVE_PENDING_1 = 4; // 满标1审 + public final static int BIDREQUEST_STATE_APPROVE_PENDING_2 = 5; // 满标2审 + public final static int BIDREQUEST_STATE_REJECTED = 6; // 满标审核被拒绝 + public final static int BIDREQUEST_STATE_PAYING_BACK = 7; // 还款中 + public final static int BIDREQUEST_STATE_COMPLETE_PAY_BACK = 8; // 已还清 + public final static int BIDREQUEST_STATE_PAY_BACK_OVERDUE = 9; // 逾期 + public final static int BIDREQUEST_STATE_PUBLISH_REFUSE = 10; // 发标审核拒绝状态 + + public static final BigDecimal SMALLEST_BID_AMOUNT = new BigDecimal("50.0000");//系统规定的最小投标金额 + public static final BigDecimal SMALLEST_BIDREQUEST_AMOUNT = new BigDecimal("500.0000");//系统规定的最小借款金额 + + /** + * =============================账户流水类型================================ + */ + public final static int ACCOUNT_ACTIONTYPE_DEPOSIT_OFFLINE_LOCAL = 0;// 资金流水类别:线下充值 + public final static int ACCOUNT_ACTIONTYPE_WITHDRAW = 1;// 资金流水类别:提现 + public final static int ACCOUNT_ACTIONTYPE_BIDREQUEST_SUCCESSFUL = 2;// 资金流水类别:成功借款 + public final static int ACCOUNT_ACTIONTYPE_BID_SUCCESSFUL = 3;// 资金流水类别:成功投标 + public final static int ACCOUNT_ACTIONTYPE_RETURN_MONEY = 4;// 资金流水类别:还款 + public final static int ACCOUNT_ACTIONTYPE_CALLBACK_MONEY = 5;// 资金流水类别:回款 + public final static int ACCOUNT_ACTIONTYPE_CHARGE = 6;// 资金流水类别:平台管理费 + public final static int ACCOUNT_ACTIONTYPE_INTEREST_SHARE = 7;// 资金流水类别:利息管理费 + public final static int ACCOUNT_ACTIONTYPE_WITHDRAW_MANAGE_CHARGE = 8;// 资金流水类别:提现手续费 + public final static int ACCOUNT_ACTIONTYPE_RECHARGE_CHARGE = 9;// 资金流水类别:充值手续费 + public final static int ACCOUNT_ACTIONTYPE_BID_FREEZED = 10;// 资金流水类别:投标冻结金额 + public final static int ACCOUNT_ACTIONTYPE_BID_UNFREEZED = 11;// 资金流水类别:取消投标冻结金额 + public final static int ACCOUNT_ACTIONTYPE_WITHDRAW_FREEZED = 12;// 资金流水类别:提现申请冻结金额 + public final static int ACCOUNT_ACTIONTYPE_WITHDRAW_UNFREEZED = 13;// 资金流水类别:提现申请失败取消冻结金额 + + /** + * =========还款状态=============== + */ + public final static int PAYMENT_STATE_NORMAL = 0; //正常待还 + public final static int PAYMENT_STATE_DONE = 1; //已还 + public final static int PAYMENT_STATE_OVERDUE = 2; //逾期 + + /** + * ============系统账户流水类型============= + */ + public final static int SYSTEM_ACCOUNT_NONE = -1; //未指定 + public final static int SYSTEM_ACCOUNT_ACTIONTYPE_MANAGE_CHARGE = 1;//系统账户收到账户管理费(借款管理费) + public final static int SYSTEM_ACCOUNT_ACTIONTYPE_INTREST_MANAGE_CHARGE = 2;//系统账户收到利息管理费 + public final static int SYSTEM_ACCOUNT_ACTIONTYPE_WITHDRAW_MANAGE_CHARGE = 3;//系统账户收到提现手续费 } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/BitStatesUtils.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/BitStatesUtils.java index b0eb02c..6779529 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/BitStatesUtils.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/BitStatesUtils.java @@ -2,47 +2,48 @@ package com.geekq.common.utils.numcal; /** * 用户状态类,记录用户在平台使用系统中所有的状态。 + * * @author 邱润泽 */ public class BitStatesUtils { - public final static Long OP_BASIC_INFO = 1L; //用户注册成功的标示,及为默认初始状态 - public final static Long OP_BIND_PHONE = 2L << 0; //用户绑定手机状态码 - public final static Long OP_BIND_EMAIL = 2L << 1;//用户绑定邮箱 - public final static Long OP_BASE_INFO = 2L << 2;//填写基本资料 - public final static Long OP_REAL_AUTH = 2L << 3;//用户实名认证 - public final static Long OP_VEDIO_AUTH = 2L << 4;//视频认证 - public final static Long OP_HAS_BIDRQUEST=2l<<5;//当前用户有一个借款还在借款流程当中 + public final static Long OP_BASIC_INFO = 1L; //用户注册成功的标示,及为默认初始状态 + public final static Long OP_BIND_PHONE = 2L << 0; //用户绑定手机状态码 + public final static Long OP_BIND_EMAIL = 2L << 1;//用户绑定邮箱 + public final static Long OP_BASE_INFO = 2L << 2;//填写基本资料 + public final static Long OP_REAL_AUTH = 2L << 3;//用户实名认证 + public final static Long OP_VEDIO_AUTH = 2L << 4;//视频认证 + public final static Long OP_HAS_BIDRQUEST = 2l << 5;//当前用户有一个借款还在借款流程当中 - /** - * @param states 所有状态值 - * @param value 需要判断状态值 - * @return 是否存在 - */ - public static boolean hasState(long states, long value) { - return (states & value) != 0; - } + /** + * @param states 所有状态值 + * @param value 需要判断状态值 + * @return 是否存在 + */ + public static boolean hasState(long states, long value) { + return (states & value) != 0; + } - /** - * @param states 已有状态值 - * @param value 需要添加状态值 - * @return 新的状态值 - */ - public static long addState(long states, long value) { - if (hasState(states, value)) { - return states; - } - return (states | value); - } + /** + * @param states 已有状态值 + * @param value 需要添加状态值 + * @return 新的状态值 + */ + public static long addState(long states, long value) { + if (hasState(states, value)) { + return states; + } + return (states | value); + } - /** - * @param states 已有状态值 - * @param value 需要删除状态值 - * @return 新的状态值 - */ - public static long removeState(long states, long value) { - if (!hasState(states, value)) { - return states; - } - return states ^ value; - } + /** + * @param states 已有状态值 + * @param value 需要删除状态值 + * @return 新的状态值 + */ + public static long removeState(long states, long value) { + if (!hasState(states, value)) { + return states; + } + return states ^ value; + } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/CalculatetUtil.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/CalculatetUtil.java index ee6b5f5..09eb670 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/CalculatetUtil.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/CalculatetUtil.java @@ -7,254 +7,231 @@ import java.math.RoundingMode; * 计算器Util * * @author 邱润泽 - * */ public class CalculatetUtil { - public static final BigDecimal ONE_HUNDRED = new BigDecimal("100.0000"); - public static final BigDecimal NUMBER_MONTHS_OF_YEAR = new BigDecimal( - "12.0000"); + public static final BigDecimal ONE_HUNDRED = new BigDecimal("100.0000"); + public static final BigDecimal NUMBER_MONTHS_OF_YEAR = new BigDecimal( + "12.0000"); - /** - * 获取月利率 - */ - public static BigDecimal getMonthlyRate(BigDecimal yearRate) { - if (yearRate == null) - return BigDecimal.ZERO; - return yearRate.divide(ONE_HUNDRED).divide(NUMBER_MONTHS_OF_YEAR, - BidConst.CAL_SCALE, RoundingMode.HALF_UP); - } + /** + * 获取月利率 + */ + public static BigDecimal getMonthlyRate(BigDecimal yearRate) { + if (yearRate == null) + return BigDecimal.ZERO; + return yearRate.divide(ONE_HUNDRED).divide(NUMBER_MONTHS_OF_YEAR, + BidConst.CAL_SCALE, RoundingMode.HALF_UP); + } - /** - * 计算借款总利息 - * - * @param returnType - * 还款类型 - * @param bidRequestAmount - * 借款金额 - * @param yearRate - * 年利率 - * @param monthes2Return - * 还款期限 - * @return - */ - public static BigDecimal calTotalInterest(int returnType, - BigDecimal bidRequestAmount, BigDecimal yearRate, int monthes2Return) { - BigDecimal totalInterest = BigDecimal.ZERO; - BigDecimal monthlyRate = getMonthlyRate(yearRate); - if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST_PRINCIPAL) {// 按月分期 - // 只借款一个月 - if (monthes2Return == 1) { - totalInterest = bidRequestAmount.multiply(monthlyRate) - .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); - } else { - BigDecimal temp1 = bidRequestAmount.multiply(monthlyRate); - BigDecimal temp2 = (BigDecimal.ONE.add(monthlyRate)) - .pow(monthes2Return); - BigDecimal temp3 = (BigDecimal.ONE.add(monthlyRate)).pow( - monthes2Return).subtract(BigDecimal.ONE); - // 算出每月还款 - BigDecimal monthToReturnMoney = temp1.multiply(temp2).divide( - temp3, BidConst.CAL_SCALE, RoundingMode.HALF_UP); - // 算出总还款 - BigDecimal totalReturnMoney = monthToReturnMoney - .multiply(new BigDecimal(monthes2Return)); - // 算出总利息 - totalInterest = totalReturnMoney.subtract(bidRequestAmount); - } - } else if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST) {// 按月到期 - BigDecimal monthlyInterest = DecimalFormatUtil - .amountFormat(bidRequestAmount.multiply(monthlyRate)); - totalInterest = monthlyInterest.multiply(new BigDecimal( - monthes2Return)); - } - return DecimalFormatUtil.formatBigDecimal(totalInterest, - BidConst.STORE_SCALE); - } + /** + * 计算借款总利息 + * + * @param returnType 还款类型 + * @param bidRequestAmount 借款金额 + * @param yearRate 年利率 + * @param monthes2Return 还款期限 + * @return + */ + public static BigDecimal calTotalInterest(int returnType, + BigDecimal bidRequestAmount, BigDecimal yearRate, int monthes2Return) { + BigDecimal totalInterest = BigDecimal.ZERO; + BigDecimal monthlyRate = getMonthlyRate(yearRate); + if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST_PRINCIPAL) {// 按月分期 + // 只借款一个月 + if (monthes2Return == 1) { + totalInterest = bidRequestAmount.multiply(monthlyRate) + .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); + } else { + BigDecimal temp1 = bidRequestAmount.multiply(monthlyRate); + BigDecimal temp2 = (BigDecimal.ONE.add(monthlyRate)) + .pow(monthes2Return); + BigDecimal temp3 = (BigDecimal.ONE.add(monthlyRate)).pow( + monthes2Return).subtract(BigDecimal.ONE); + // 算出每月还款 + BigDecimal monthToReturnMoney = temp1.multiply(temp2).divide( + temp3, BidConst.CAL_SCALE, RoundingMode.HALF_UP); + // 算出总还款 + BigDecimal totalReturnMoney = monthToReturnMoney + .multiply(new BigDecimal(monthes2Return)); + // 算出总利息 + totalInterest = totalReturnMoney.subtract(bidRequestAmount); + } + } else if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST) {// 按月到期 + BigDecimal monthlyInterest = DecimalFormatUtil + .amountFormat(bidRequestAmount.multiply(monthlyRate)); + totalInterest = monthlyInterest.multiply(new BigDecimal( + monthes2Return)); + } + return DecimalFormatUtil.formatBigDecimal(totalInterest, + BidConst.STORE_SCALE); + } - /** - * 计算每期利息 - * - * @param returnType - * 还款类型 - * @param bidRequestAmount - * 借款金额 - * @param yearRate - * 年利率 - * @param monthIndex - * 第几期 - * @param monthes2Return - * 还款期限 - * @return - */ - public static BigDecimal calMonthlyInterest(int returnType, - BigDecimal bidRequestAmount, BigDecimal yearRate, int monthIndex, - int monthes2Return) { - BigDecimal monthlyInterest = BigDecimal.ZERO; - BigDecimal monthlyRate = getMonthlyRate(yearRate); - if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST_PRINCIPAL) {// 按月分期 - // 只借款一个月 - if (monthes2Return == 1) { - monthlyInterest = bidRequestAmount.multiply(monthlyRate) - .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); - } else { - BigDecimal temp1 = bidRequestAmount.multiply(monthlyRate); - BigDecimal temp2 = (BigDecimal.ONE.add(monthlyRate)) - .pow(monthes2Return); - BigDecimal temp3 = (BigDecimal.ONE.add(monthlyRate)).pow( - monthes2Return).subtract(BigDecimal.ONE); - BigDecimal temp4 = (BigDecimal.ONE.add(monthlyRate)) - .pow(monthIndex - 1); - // 算出每月还款 - BigDecimal monthToReturnMoney = temp1.multiply(temp2).divide( - temp3, BidConst.CAL_SCALE, RoundingMode.HALF_UP); - // 算出总还款 - BigDecimal totalReturnMoney = monthToReturnMoney - .multiply(new BigDecimal(monthes2Return)); - // 算出总利息 - BigDecimal totalInterest = totalReturnMoney - .subtract(bidRequestAmount); + /** + * 计算每期利息 + * + * @param returnType 还款类型 + * @param bidRequestAmount 借款金额 + * @param yearRate 年利率 + * @param monthIndex 第几期 + * @param monthes2Return 还款期限 + * @return + */ + public static BigDecimal calMonthlyInterest(int returnType, + BigDecimal bidRequestAmount, BigDecimal yearRate, int monthIndex, + int monthes2Return) { + BigDecimal monthlyInterest = BigDecimal.ZERO; + BigDecimal monthlyRate = getMonthlyRate(yearRate); + if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST_PRINCIPAL) {// 按月分期 + // 只借款一个月 + if (monthes2Return == 1) { + monthlyInterest = bidRequestAmount.multiply(monthlyRate) + .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); + } else { + BigDecimal temp1 = bidRequestAmount.multiply(monthlyRate); + BigDecimal temp2 = (BigDecimal.ONE.add(monthlyRate)) + .pow(monthes2Return); + BigDecimal temp3 = (BigDecimal.ONE.add(monthlyRate)).pow( + monthes2Return).subtract(BigDecimal.ONE); + BigDecimal temp4 = (BigDecimal.ONE.add(monthlyRate)) + .pow(monthIndex - 1); + // 算出每月还款 + BigDecimal monthToReturnMoney = temp1.multiply(temp2).divide( + temp3, BidConst.CAL_SCALE, RoundingMode.HALF_UP); + // 算出总还款 + BigDecimal totalReturnMoney = monthToReturnMoney + .multiply(new BigDecimal(monthes2Return)); + // 算出总利息 + BigDecimal totalInterest = totalReturnMoney + .subtract(bidRequestAmount); - if (monthIndex < monthes2Return) { - monthlyInterest = (temp1.subtract(monthToReturnMoney)) - .multiply(temp4).add(monthToReturnMoney) - .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); - } else if (monthIndex == monthes2Return) { - BigDecimal temp6 = BigDecimal.ZERO; - // 汇总最后一期之前所有利息之和 - for (int i = 1; i < monthes2Return; i++) { - BigDecimal temp5 = (BigDecimal.ONE.add(monthlyRate)) - .pow(i - 1); - monthlyInterest = (temp1.subtract(monthToReturnMoney)) - .multiply(temp5) - .add(monthToReturnMoney) - .setScale(BidConst.CAL_SCALE, - RoundingMode.HALF_UP); - temp6 = temp6.add(monthlyInterest); - } - monthlyInterest = totalInterest.subtract(temp6); - } + if (monthIndex < monthes2Return) { + monthlyInterest = (temp1.subtract(monthToReturnMoney)) + .multiply(temp4).add(monthToReturnMoney) + .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); + } else if (monthIndex == monthes2Return) { + BigDecimal temp6 = BigDecimal.ZERO; + // 汇总最后一期之前所有利息之和 + for (int i = 1; i < monthes2Return; i++) { + BigDecimal temp5 = (BigDecimal.ONE.add(monthlyRate)) + .pow(i - 1); + monthlyInterest = (temp1.subtract(monthToReturnMoney)) + .multiply(temp5) + .add(monthToReturnMoney) + .setScale(BidConst.CAL_SCALE, + RoundingMode.HALF_UP); + temp6 = temp6.add(monthlyInterest); + } + monthlyInterest = totalInterest.subtract(temp6); + } - } - } else if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST) {// 按月到期 - monthlyInterest = DecimalFormatUtil.amountFormat(bidRequestAmount - .multiply(monthlyRate)); - } - return monthlyInterest; - } + } + } else if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST) {// 按月到期 + monthlyInterest = DecimalFormatUtil.amountFormat(bidRequestAmount + .multiply(monthlyRate)); + } + return monthlyInterest; + } - /** - * 计算每期还款 - * - * @param returnType - * 还款类型 - * @param bidRequestAmount - * 借款金额 - * @param yearRate - * 年利率 - * @param monthIndex - * 第几期 - * @param monthes2Return - * 还款期限 - * @return - */ - public static BigDecimal calMonthToReturnMoney(int returnType, - BigDecimal bidRequestAmount, BigDecimal yearRate, int monthIndex, - int monthes2Return) { - BigDecimal monthToReturnMoney = BigDecimal.ZERO; - BigDecimal monthlyRate = getMonthlyRate(yearRate); - if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST_PRINCIPAL) {// 按月分期 - if (monthes2Return == 1) { - monthToReturnMoney = bidRequestAmount.add( - bidRequestAmount.multiply(monthlyRate)).setScale( - BidConst.CAL_SCALE, RoundingMode.HALF_UP); - } else { - BigDecimal temp1 = bidRequestAmount.multiply(monthlyRate); - BigDecimal temp2 = (BigDecimal.ONE.add(monthlyRate)) - .pow(monthes2Return); - BigDecimal temp3 = (BigDecimal.ONE.add(monthlyRate)).pow( - monthes2Return).subtract(BigDecimal.ONE); - // 算出每月还款 - monthToReturnMoney = temp1.multiply(temp2).divide(temp3, - BidConst.CAL_SCALE, RoundingMode.HALF_UP); - } - } else if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST) {// 按月到期 - BigDecimal monthlyInterest = bidRequestAmount.multiply(monthlyRate) - .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); - if (monthIndex == monthes2Return) { - monthToReturnMoney = bidRequestAmount.add(monthlyInterest) - .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); - } else if (monthIndex < monthes2Return) { - monthToReturnMoney = monthlyInterest; - } - } - return DecimalFormatUtil.formatBigDecimal(monthToReturnMoney, - BidConst.STORE_SCALE); - } + /** + * 计算每期还款 + * + * @param returnType 还款类型 + * @param bidRequestAmount 借款金额 + * @param yearRate 年利率 + * @param monthIndex 第几期 + * @param monthes2Return 还款期限 + * @return + */ + public static BigDecimal calMonthToReturnMoney(int returnType, + BigDecimal bidRequestAmount, BigDecimal yearRate, int monthIndex, + int monthes2Return) { + BigDecimal monthToReturnMoney = BigDecimal.ZERO; + BigDecimal monthlyRate = getMonthlyRate(yearRate); + if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST_PRINCIPAL) {// 按月分期 + if (monthes2Return == 1) { + monthToReturnMoney = bidRequestAmount.add( + bidRequestAmount.multiply(monthlyRate)).setScale( + BidConst.CAL_SCALE, RoundingMode.HALF_UP); + } else { + BigDecimal temp1 = bidRequestAmount.multiply(monthlyRate); + BigDecimal temp2 = (BigDecimal.ONE.add(monthlyRate)) + .pow(monthes2Return); + BigDecimal temp3 = (BigDecimal.ONE.add(monthlyRate)).pow( + monthes2Return).subtract(BigDecimal.ONE); + // 算出每月还款 + monthToReturnMoney = temp1.multiply(temp2).divide(temp3, + BidConst.CAL_SCALE, RoundingMode.HALF_UP); + } + } else if (returnType == BidConst.RETURN_TYPE_MONTH_INTEREST) {// 按月到期 + BigDecimal monthlyInterest = bidRequestAmount.multiply(monthlyRate) + .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); + if (monthIndex == monthes2Return) { + monthToReturnMoney = bidRequestAmount.add(monthlyInterest) + .setScale(BidConst.CAL_SCALE, RoundingMode.HALF_UP); + } else if (monthIndex < monthes2Return) { + monthToReturnMoney = monthlyInterest; + } + } + return DecimalFormatUtil.formatBigDecimal(monthToReturnMoney, + BidConst.STORE_SCALE); + } - /** - * 计算一次投标实际获得的利息=投标金额/借款金额 *总利息 - * - * @param bidRequestAmount - * 借款金额 - * @param monthes2Return - * 还款期数 - * @param yearRate - * 年利率 - * @param returnType - * 还款类型 - * @param acturalBidAmount - * 投标金额 - * @return - */ - public static BigDecimal calBidInterest(BigDecimal bidRequestAmount, - int monthes2Return, BigDecimal yearRate, int returnType, - BigDecimal acturalBidAmount) { - // 借款产生的总利息 - BigDecimal totalInterest = calTotalInterest(returnType, - bidRequestAmount, yearRate, monthes2Return); - // 所占比例 - BigDecimal proportion = acturalBidAmount.divide(bidRequestAmount, - BidConst.CAL_SCALE, RoundingMode.HALF_UP); - BigDecimal bidInterest = totalInterest.multiply(proportion); - return DecimalFormatUtil.formatBigDecimal(bidInterest, - BidConst.STORE_SCALE); - } + /** + * 计算一次投标实际获得的利息=投标金额/借款金额 *总利息 + * + * @param bidRequestAmount 借款金额 + * @param monthes2Return 还款期数 + * @param yearRate 年利率 + * @param returnType 还款类型 + * @param acturalBidAmount 投标金额 + * @return + */ + public static BigDecimal calBidInterest(BigDecimal bidRequestAmount, + int monthes2Return, BigDecimal yearRate, int returnType, + BigDecimal acturalBidAmount) { + // 借款产生的总利息 + BigDecimal totalInterest = calTotalInterest(returnType, + bidRequestAmount, yearRate, monthes2Return); + // 所占比例 + BigDecimal proportion = acturalBidAmount.divide(bidRequestAmount, + BidConst.CAL_SCALE, RoundingMode.HALF_UP); + BigDecimal bidInterest = totalInterest.multiply(proportion); + return DecimalFormatUtil.formatBigDecimal(bidInterest, + BidConst.STORE_SCALE); + } - /** - * 计算利息管理费 - * - * @param interest - * 利息 - * @param interestManagerChargeRate - * 利息管理费比例 - * @return - */ - /** - public static BigDecimal calInterestManagerCharge(BigDecimal interest) { - return DecimalFormatUtil.formatBigDecimal( - interest.multiply(BidConst.INTEREST_MANAGER_CHARGE_RATE), BidConst.SCALE); - } - */ + /** + * 计算利息管理费 + * + * @param interest + * 利息 + * @param interestManagerChargeRate + * 利息管理费比例 + * @return + */ + /** + public static BigDecimal calInterestManagerCharge(BigDecimal interest) { + return DecimalFormatUtil.formatBigDecimal( + interest.multiply(BidConst.INTEREST_MANAGER_CHARGE_RATE), BidConst.SCALE); + } + */ - /** - * 计算借款管理费 - * - * @param bidRequestAmount - * 借款金额 - * @param returnType - * 还款类型 - * @param monthes2Return - * 还款期限 - * @return - */ - public static BigDecimal calAccountManagementCharge( - BigDecimal bidRequestAmount) { - BigDecimal accountManagementCharge = DecimalFormatUtil - .formatBigDecimal(bidRequestAmount - .multiply(BidConst.ACCOUNT_MANAGER_CHARGE_RATE), - BidConst.CAL_SCALE); - return accountManagementCharge; - } + /** + * 计算借款管理费 + * + * @param bidRequestAmount 借款金额 + * @param returnType 还款类型 + * @param monthes2Return 还款期限 + * @return + */ + public static BigDecimal calAccountManagementCharge( + BigDecimal bidRequestAmount) { + BigDecimal accountManagementCharge = DecimalFormatUtil + .formatBigDecimal(bidRequestAmount + .multiply(BidConst.ACCOUNT_MANAGER_CHARGE_RATE), + BidConst.CAL_SCALE); + return accountManagementCharge; + } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/DecimalFormatUtil.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/DecimalFormatUtil.java index 2dba84a..2327190 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/DecimalFormatUtil.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/numcal/DecimalFormatUtil.java @@ -5,35 +5,36 @@ import java.math.RoundingMode; /** * 大数字格式化工具类 + * * @author 邱润泽 - * */ + */ public class DecimalFormatUtil { - //金额 - public static BigDecimal amountFormat(BigDecimal number) { - number = number.setScale(BidConst.STORE_SCALE, RoundingMode.HALF_UP); - return number; - } + //金额 + public static BigDecimal amountFormat(BigDecimal number) { + number = number.setScale(BidConst.STORE_SCALE, RoundingMode.HALF_UP); + return number; + } - //利率 - public static BigDecimal rateFormat(BigDecimal number) { - number = number.setScale(BidConst.STORE_SCALE, RoundingMode.HALF_UP); - return number; - } + //利率 + public static BigDecimal rateFormat(BigDecimal number) { + number = number.setScale(BidConst.STORE_SCALE, RoundingMode.HALF_UP); + return number; + } - public static BigDecimal decimalRateFormat(BigDecimal number) { - return number.multiply(BigDecimal.valueOf(100)); - } + public static BigDecimal decimalRateFormat(BigDecimal number) { + return number.multiply(BigDecimal.valueOf(100)); + } - //月利率 - public static BigDecimal monthRateFormat(BigDecimal number) { - return number.multiply(BigDecimal.valueOf(100)).divide( - BigDecimal.valueOf(12), BidConst.CAL_SCALE, - RoundingMode.HALF_UP); - } + //月利率 + public static BigDecimal monthRateFormat(BigDecimal number) { + return number.multiply(BigDecimal.valueOf(100)).divide( + BigDecimal.valueOf(12), BidConst.CAL_SCALE, + RoundingMode.HALF_UP); + } - public static BigDecimal formatBigDecimal(BigDecimal data, int scal) { - if (null == data) - return new BigDecimal(0.00); - return data.setScale(scal, BigDecimal.ROUND_HALF_UP); - } + public static BigDecimal formatBigDecimal(BigDecimal data, int scal) { + if (null == data) + return new BigDecimal(0.00); + return data.setScale(scal, BigDecimal.ROUND_HALF_UP); + } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/AbstractResult.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/AbstractResult.java index 615e101..cd64e94 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/AbstractResult.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/AbstractResult.java @@ -8,7 +8,9 @@ public class AbstractResult { private int code; private String message; - AbstractResult() {} + AbstractResult() { + } + protected AbstractResult(ResultStatus status, String message) { this.code = status.getCode(); this.status = status; @@ -47,6 +49,7 @@ public class AbstractResult { this.status = ResultStatus.SUCCESS; return this; } + public ResultStatus getStatus() { return this.status; } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/ResultGeekQ.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/ResultGeekQ.java index 8965044..5372063 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/ResultGeekQ.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/ResultGeekQ.java @@ -11,12 +11,15 @@ public class ResultGeekQ extends AbstractResult implements Serializable { protected ResultGeekQ() { } + protected ResultGeekQ(ResultStatus status, String message) { super(status, message); } + protected ResultGeekQ(ResultStatus status) { super(status); } + public static ResultGeekQ build() { return new ResultGeekQ(ResultStatus.SUCCESS, "构造函数"); } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/ResultJSON.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/ResultJSON.java index 0527c45..23a80bb 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/ResultJSON.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/utils/resultbean/ResultJSON.java @@ -4,27 +4,27 @@ import lombok.Getter; import lombok.Setter; /** - * @author 邱润泽 + * @author 邱润泽 */ @Getter @Setter public class ResultJSON { - private Boolean success = false; - private String msg; + private Boolean success = false; + private String msg; - public ResultJSON() { - super(); - } + public ResultJSON() { + super(); + } - public ResultJSON(Boolean success, String msg) { - super(); - this.success = success; - this.msg = msg; - } + public ResultJSON(Boolean success, String msg) { + super(); + this.success = success; + this.msg = msg; + } - public ResultJSON(String msg) { - super(); - this.msg = msg; - } + public ResultJSON(String msg) { + super(); + this.msg = msg; + } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/validator/MobileCheck.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/validator/MobileCheck.java index d787ac4..7907931 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/validator/MobileCheck.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/validator/MobileCheck.java @@ -9,7 +9,7 @@ import java.lang.annotation.*; @Documented @Constraint(validatedBy = {MobileValidator.class}) public @interface MobileCheck { - boolean required() default true ; + boolean required() default true; String message() default "手机号码格式有误!"; diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/validator/MobileValidator.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/validator/MobileValidator.java index 4dfedb2..763b177 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/validator/MobileValidator.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/validator/MobileValidator.java @@ -8,22 +8,22 @@ import javax.validation.ConstraintValidatorContext; public class MobileValidator implements ConstraintValidator { - private boolean require = false ; + private boolean require = false; @Override public void initialize(MobileCheck isMobile) { - require = isMobile.required() ; + require = isMobile.required(); } @Override public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { - if(require){ - return ValidatorUtil.isMobile(value) ; - }else{ - if(StringUtils.isEmpty(value)){ - return true ; - }else { - return ValidatorUtil.isMobile(value) ; + if (require) { + return ValidatorUtil.isMobile(value); + } else { + if (StringUtils.isEmpty(value)) { + return true; + } else { + return ValidatorUtil.isMobile(value); } } } diff --git a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/vo/LoginVo.java b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/vo/LoginVo.java index f926a85..ea63f69 100644 --- a/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/vo/LoginVo.java +++ b/miaosha-admin/miaosha-admin-common/src/main/java/com/geekq/common/vo/LoginVo.java @@ -5,7 +5,6 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotNull; @@ -19,10 +18,9 @@ import javax.validation.constraints.NotNull; public class LoginVo { @NotNull @MobileCheck - private String mobile ; + private String mobile; @NotNull - @Length(min=32) private String password; @Override diff --git a/miaosha-admin/miaosha-admin-service/pom.xml b/miaosha-admin/miaosha-admin-service/pom.xml index 47589dd..c84db68 100644 --- a/miaosha-admin/miaosha-admin-service/pom.xml +++ b/miaosha-admin/miaosha-admin-service/pom.xml @@ -23,7 +23,6 @@ com.geekq miaosha-admin-common - com.alibaba dubbo @@ -81,57 +80,8 @@ javax.servlet - servlet-api + javax.servlet-api + provided - - - - - src/main/java - - **/*.properties - **/*.xml - - false - - - src/main/resources - - **/*.properties - **/*.xml - **/*.ini - - false - - - - - - org.apache.tomcat.maven - tomcat7-maven-plugin - - 8082 - / - true - UTF-8 - - - - - maven-eclipse-plugin - - - org.springframework.ide.eclipse.core.springnature - - - org.springframework.ide.eclipse.core.springbuilder - - true - true - - - - - \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/AccountMapper.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/AccountMapper.java index 83d7109..bca1ada 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/AccountMapper.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/AccountMapper.java @@ -6,13 +6,13 @@ import com.geekq.admin.entity.Account; import java.util.List; public interface AccountMapper { - int deleteByPrimaryKey(Long id); + int deleteByPrimaryKey(Long id); - int insert(Account record); + int insert(Account record); - Account selectByPrimaryKey(Long id); + Account selectByPrimaryKey(Long id); - List selectAll(); + List selectAll(); - int updateByPrimaryKey(Account record); + int updateByPrimaryKey(Account record); } \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/IpLogMapper.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/IpLogMapper.java index be5f4ed..bdf5035 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/IpLogMapper.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/IpLogMapper.java @@ -16,7 +16,7 @@ public interface IpLogMapper { int updateByPrimaryKey(IpLog record); - int queryForCount(IpLogQueryObject qo); + int queryForCount(IpLogQueryObject qo); - List query(IpLogQueryObject qo); + List query(IpLogQueryObject qo); } \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/LogininfoMapper.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/LogininfoMapper.java index 04d07ea..09f6482 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/LogininfoMapper.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/LogininfoMapper.java @@ -8,24 +8,24 @@ import java.util.Map; public interface LogininfoMapper { - int deleteByPrimaryKey(Long id); + int deleteByPrimaryKey(Long id); - int insert(Logininfo record); + int insert(Logininfo record); - Logininfo selectByPrimaryKey(Long id); + Logininfo selectByPrimaryKey(Long id); - List selectAll(); + List selectAll(); - int updateByPrimaryKey(Logininfo record); + int updateByPrimaryKey(Logininfo record); - int getCountByNickname(@Param("nickname") String nickname, + int getCountByNickname(@Param("nickname") String nickname, @Param("userType") int userType); - Logininfo getLoginInfoByNickname(@Param("nickname") String nickname, - @Param("userType") int userType); + Logininfo getLoginInfoByNickname(@Param("nickname") String nickname, + @Param("userType") int userType); - Logininfo login(@Param("name") String name, + Logininfo login(@Param("name") String name, @Param("password") String password, @Param("userType") int userType); - List> autoComplate(@Param("word") String word, @Param("userType") int userType); + List> autoComplate(@Param("word") String word, @Param("userType") int userType); } \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/OrdersMapper.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/OrdersMapper.java index 28235c4..c7e8ea3 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/OrdersMapper.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/OrdersMapper.java @@ -1,11 +1,10 @@ package com.geekq.admin.mapper; -import java.util.List; - -import org.apache.ibatis.annotations.Param; - import com.geekq.admin.pojo.Orders; import com.geekq.admin.pojo.OrdersExample; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface OrdersMapper { int countByExample(OrdersExample example); diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/SystemDictionaryItemMapper.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/SystemDictionaryItemMapper.java index 350c959..91aafb8 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/SystemDictionaryItemMapper.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/SystemDictionaryItemMapper.java @@ -8,24 +8,25 @@ import java.util.List; public interface SystemDictionaryItemMapper { - int deleteByPrimaryKey(Long id); + int deleteByPrimaryKey(Long id); - int insert(SystemDictionaryItem record); + int insert(SystemDictionaryItem record); - SystemDictionaryItem selectByPrimaryKey(Long id); + SystemDictionaryItem selectByPrimaryKey(Long id); - List selectAll(); + List selectAll(); - int updateByPrimaryKey(SystemDictionaryItem record); + int updateByPrimaryKey(SystemDictionaryItem record); - int queryForCount(SystemDictionaryQueryObject qo); + int queryForCount(SystemDictionaryQueryObject qo); - List query(SystemDictionaryQueryObject qo); + List query(SystemDictionaryQueryObject qo); - /** - * 按照数据字典的目录sn查所有明细 - * @param sn - * @return - */ - List queryBySn(@Param("sn") String sn); + /** + * 按照数据字典的目录sn查所有明细 + * + * @param sn + * @return + */ + List queryBySn(@Param("sn") String sn); } \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/SystemDictionaryMapper.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/SystemDictionaryMapper.java index c71f256..4ce9c27 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/SystemDictionaryMapper.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/SystemDictionaryMapper.java @@ -8,19 +8,19 @@ import java.util.List; public interface SystemDictionaryMapper { - int deleteByPrimaryKey(Long id); + int deleteByPrimaryKey(Long id); - int insert(SystemDictionary record); + int insert(SystemDictionary record); - SystemDictionary selectByPrimaryKey(Long id); + SystemDictionary selectByPrimaryKey(Long id); - List selectAll(); + List selectAll(); - int updateByPrimaryKey(SystemDictionary record); + int updateByPrimaryKey(SystemDictionary record); - int queryForCount(SystemDictionaryQueryObject qo); + int queryForCount(SystemDictionaryQueryObject qo); - List query(SystemDictionaryQueryObject qo); + List query(SystemDictionaryQueryObject qo); } \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/UserinfoMapper.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/UserinfoMapper.java index efbef3c..f6471c9 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/UserinfoMapper.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/mapper/UserinfoMapper.java @@ -6,13 +6,13 @@ import org.apache.ibatis.annotations.Param; import java.util.List; public interface UserinfoMapper { - int deleteByPrimaryKey(Long id); + int deleteByPrimaryKey(Long id); - int insert(Userinfo record); + int insert(Userinfo record); - Userinfo selectByPrimaryKey(@Param("id") Long id, @Param("salt") String salt); + Userinfo selectByPrimaryKey(@Param("id") Long id, @Param("salt") String salt); - List selectAll(@Param("salt") String salt); + List selectAll(@Param("salt") String salt); - int updateByPrimaryKey(@Param("ui") Userinfo record, @Param("salt") String salt); + int updateByPrimaryKey(@Param("ui") Userinfo record, @Param("salt") String salt); } \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/redis/RedisClient.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/redis/RedisClient.java index eac8422..f35a1bf 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/redis/RedisClient.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/redis/RedisClient.java @@ -9,136 +9,136 @@ import java.util.ResourceBundle; public class RedisClient { - /** - * 池化管理jedis链接池 - */ - public static JedisPool jedisPool; + /** + * 池化管理jedis链接池 + */ + public static JedisPool jedisPool; - static { + static { - //读取相关的配置 - ResourceBundle resourceBundle = ResourceBundle.getBundle("redis"); - int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive")); - int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle")); - int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait")); + //读取相关的配置 + ResourceBundle resourceBundle = ResourceBundle.getBundle("redis"); + int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive")); + int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle")); + int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait")); - String ip = resourceBundle.getString("redis.ip"); - int port = Integer.parseInt(resourceBundle.getString("redis.port")); + String ip = resourceBundle.getString("redis.ip"); + int port = Integer.parseInt(resourceBundle.getString("redis.port")); - JedisPoolConfig config = new JedisPoolConfig(); - //设置最大连接数 - config.setMaxTotal(maxActive); - //设置最大空闲数 - config.setMaxIdle(maxIdle); - //设置超时时间 - config.setMaxWaitMillis(maxWait); + JedisPoolConfig config = new JedisPoolConfig(); + //设置最大连接数 + config.setMaxTotal(maxActive); + //设置最大空闲数 + config.setMaxIdle(maxIdle); + //设置超时时间 + config.setMaxWaitMillis(maxWait); - //初始化连接池 - jedisPool = new JedisPool(config, ip, port); + //初始化连接池 + jedisPool = new JedisPool(config, ip, port); + } + + /** + * 向缓存中设置字符串内容 + * + * @param key key + * @param value value + * @return + * @throws Exception + */ + public static boolean set(String key, String value) throws Exception { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + jedis.set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + jedisPool.returnResource(jedis); } + } - /** - * 向缓存中设置字符串内容 - * - * @param key key - * @param value value - * @return - * @throws Exception - */ - public static boolean set(String key, String value) throws Exception { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - jedis.set(key, value); - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } finally { - jedisPool.returnResource(jedis); - } + /** + * 向缓存中设置对象 + * + * @param key + * @param value + * @return + */ + public static boolean set(String key, Object value) { + Jedis jedis = null; + try { + String objectJson = JSON.toJSONString(value); + jedis = jedisPool.getResource(); + jedis.set(key, objectJson); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + jedisPool.returnResource(jedis); } + } - /** - * 向缓存中设置对象 - * - * @param key - * @param value - * @return - */ - public static boolean set(String key, Object value) { - Jedis jedis = null; - try { - String objectJson = JSON.toJSONString(value); - jedis = jedisPool.getResource(); - jedis.set(key, objectJson); - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } finally { - jedisPool.returnResource(jedis); - } + /** + * 删除缓存中得对象,根据key + * + * @param key + * @return + */ + public static boolean del(String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + jedis.del(key); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + jedisPool.returnResource(jedis); } + } - /** - * 删除缓存中得对象,根据key - * - * @param key - * @return - */ - public static boolean del(String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - jedis.del(key); - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } finally { - jedisPool.returnResource(jedis); - } + /** + * 根据key 获取内容 + * + * @param key + * @return + */ + public static Object get(String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + Object value = jedis.get(key); + return value; + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + jedisPool.returnResource(jedis); } + } - /** - * 根据key 获取内容 - * - * @param key - * @return - */ - public static Object get(String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - Object value = jedis.get(key); - return value; - } catch (Exception e) { - e.printStackTrace(); - return false; - } finally { - jedisPool.returnResource(jedis); - } - } - - - /** - * 根据key 获取对象 - * - * @param key - * @return - */ - public static T get(String key, Class clazz) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - String value = jedis.get(key); - return JSON.parseObject(value, clazz); - } catch (Exception e) { - e.printStackTrace(); - return null; - } finally { - jedisPool.returnResource(jedis); - } + + /** + * 根据key 获取对象 + * + * @param key + * @return + */ + public static T get(String key, Class clazz) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + String value = jedis.get(key); + return JSON.parseObject(value, clazz); + } catch (Exception e) { + e.printStackTrace(); + return null; + } finally { + jedisPool.returnResource(jedis); } + } } \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/AccountServiceImpl.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/AccountServiceImpl.java index 59d6997..c08a19d 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/AccountServiceImpl.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/AccountServiceImpl.java @@ -11,41 +11,41 @@ import java.util.List; @Service("accountServiceImpl") public class AccountServiceImpl implements IAccountService { - @Autowired - private AccountMapper accountMapper; + @Autowired + private AccountMapper accountMapper; - @Override - public void update(Account account) { - int ret = accountMapper.updateByPrimaryKey(account); + @Override + public void update(Account account) { + int ret = accountMapper.updateByPrimaryKey(account); // if (ret <= 0) { // throw new RuntimeException("Account对象:" + account.getId() // + " 乐观锁失败!"); // } - } + } - @Override - public Account get(Long id) { - Account account = accountMapper.selectByPrimaryKey(id); + @Override + public Account get(Long id) { + Account account = accountMapper.selectByPrimaryKey(id); // if (!account.checkAbstractInfo()) { // throw new RuntimeException("账户信息被篡改:" + id); // } - return account; - } + return account; + } - /** - * 重建account表的摘要信息 - */ - @Override - public void recreateAbstractInfo() { - List accounts = this.accountMapper.selectAll(); - for (Account account : accounts) { - this.accountMapper.updateByPrimaryKey(account); - } - } + /** + * 重建account表的摘要信息 + */ + @Override + public void recreateAbstractInfo() { + List accounts = this.accountMapper.selectAll(); + for (Account account : accounts) { + this.accountMapper.updateByPrimaryKey(account); + } + } - @Override - public List listAll() { - return this.accountMapper.selectAll(); - } + @Override + public List listAll() { + return this.accountMapper.selectAll(); + } } diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/IpLogServiceImpl.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/IpLogServiceImpl.java index 8964156..da3f0ee 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/IpLogServiceImpl.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/IpLogServiceImpl.java @@ -16,24 +16,24 @@ import java.util.List; */ @Service public class IpLogServiceImpl implements IIpLogService { - - @Autowired - private IpLogMapper ipLogMapper; - @Override - public PageResult query(IpLogQueryObject qo) { - DBContextUtil.setDB(DBContextUtil.DBREAD); - int count=this.ipLogMapper.queryForCount(qo); - if(count>0){ - List list=this.ipLogMapper.query(qo); - return new PageResult(count, qo.getPageSize(),qo.getCurrentPage(),list); - } - return PageResult.empty(qo.getPageSize()); - } + @Autowired + private IpLogMapper ipLogMapper; - @Override - public void insert(IpLog ipLog) { - this.ipLogMapper.insert(ipLog); - } + @Override + public PageResult query(IpLogQueryObject qo) { + DBContextUtil.setDB(DBContextUtil.DBREAD); + int count = this.ipLogMapper.queryForCount(qo); + if (count > 0) { + List list = this.ipLogMapper.query(qo); + return new PageResult(count, qo.getPageSize(), qo.getCurrentPage(), list); + } + return PageResult.empty(qo.getPageSize()); + } + + @Override + public void insert(IpLog ipLog) { + this.ipLogMapper.insert(ipLog); + } } diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/LogininfoServiceImpl.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/LogininfoServiceImpl.java index bcc89c0..5e88651 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/LogininfoServiceImpl.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/LogininfoServiceImpl.java @@ -10,7 +10,6 @@ import com.geekq.admin.mapper.LogininfoMapper; import com.geekq.admin.mapper.UserinfoMapper; import com.geekq.admin.service.ILogininfoService; import com.geekq.admin.service.RedisCacheStorageService; -import com.geekq.admin.utils.UserContext; import com.geekq.common.enums.Constants; import com.geekq.common.enums.ResultStatus; import com.geekq.common.utils.MD5.MD5Utils; @@ -30,94 +29,95 @@ import java.util.Map; @Service("logininfoServiceImpl") public class LogininfoServiceImpl implements ILogininfoService { - private static final Logger logger = LoggerFactory.getLogger(LogininfoServiceImpl.class); - @Autowired - private LogininfoMapper loginInfoMapper; + private static final Logger logger = LoggerFactory.getLogger(LogininfoServiceImpl.class); + @Autowired + private LogininfoMapper loginInfoMapper; - @Autowired - private IpLogMapper ipLogMapper; + @Autowired + private IpLogMapper ipLogMapper; - @Autowired - private UserinfoMapper userinfoMapper; + @Autowired + private UserinfoMapper userinfoMapper; - @Autowired - private AccountMapper accountMapper; + @Autowired + private AccountMapper accountMapper; - @Autowired - private RedisCacheStorageService redisService; - @Override - public void register(String username, String password) { + @Autowired + private RedisCacheStorageService redisService; - int count = loginInfoMapper.getCountByNickname(username, Constants.USERTYPE_NORMAL); - if(count <= 0) { - Logininfo logininfo =new Logininfo(); - logininfo.setNickname(username); - //获取随机salt - String salt = MD5Utils.getSaltT(); - //MD5(MD5(password)+salt) - logininfo.setPassword(MD5Utils.formPassToDBPass(password,salt)); - logininfo.setState(Constants.STATE_NORMAL); - logininfo.setUserType(Constants.USERTYPE_NORMAL); - logininfo.setRegisterDate(new Date()); - logininfo.setLastLoginDate(new Date()); - logininfo.setSalt(salt); - this.loginInfoMapper.insert(logininfo); + @Override + public void register(String username, String password) { - //初始化一个account - Account account = Account.empty(logininfo.getId()); - accountMapper.insert(account); + int count = loginInfoMapper.getCountByNickname(username, Constants.USERTYPE_NORMAL); + if (count <= 0) { + Logininfo logininfo = new Logininfo(); + logininfo.setNickname(username); + //获取随机salt + String salt = MD5Utils.getSaltT(); + //MD5(MD5(password)+salt) + logininfo.setPassword(MD5Utils.formPassToDBPass(password, salt)); + logininfo.setState(Constants.STATE_NORMAL); + logininfo.setUserType(Constants.USERTYPE_NORMAL); + logininfo.setRegisterDate(new Date()); + logininfo.setLastLoginDate(new Date()); + logininfo.setSalt(salt); + this.loginInfoMapper.insert(logininfo); + + //初始化一个account + Account account = Account.empty(logininfo.getId()); + accountMapper.insert(account); - //初始化一个Userinfo - Userinfo userinfo = Userinfo.empty(logininfo.getId()); - int result = this.userinfoMapper.insert(userinfo); - }else{ - throw new RuntimeException("用户名已经存在!"); - } - } + //初始化一个Userinfo + Userinfo userinfo = Userinfo.empty(logininfo.getId()); + int result = this.userinfoMapper.insert(userinfo); + } else { + throw new RuntimeException("用户名已经存在!"); + } + } - @Override - public boolean checkUsername(String name, int userType) { - return this.loginInfoMapper.getCountByNickname(name, userType)<=0; - } + @Override + public boolean checkUsername(String name, int userType) { + return this.loginInfoMapper.getCountByNickname(name, userType) <= 0; + } - @Override - public ResultGeekQ login(String name, String password, int userType, String ip) { - ResultGeekQ resultGeekQ = ResultGeekQ.build(); + @Override + public ResultGeekQ login(String name, String password, int userType, String ip) { + ResultGeekQ resultGeekQ = ResultGeekQ.build(); - try { - IpLog log = new IpLog(name,new Date(),ip,userType,null); - Logininfo logininfo = loginInfoMapper.getLoginInfoByNickname(name,Constants.USERTYPE_NORMAL); - String salt = logininfo.getSalt(); - Logininfo current = this.loginInfoMapper.login(name, - MD5Utils.formPassToDBPass(password,salt), userType); - if(current != null){ - redisService.set("Login"+current.getNickname(),current); + try { + IpLog log = new IpLog(name, new Date(), ip, userType, null); + Logininfo logininfo = loginInfoMapper.getLoginInfoByNickname(name, Constants.USERTYPE_NORMAL); + String salt = logininfo.getSalt(); + Logininfo current = this.loginInfoMapper.login(name, + MD5Utils.formPassToDBPass(password, salt), userType); + if (current != null) { + redisService.set("Login" + current.getNickname(), current); // RedisCacheStorageService.set("login"+current.getId().toString(),10000,current); - log.setLoginInfoId(current.getId()); - log.setLoginState(IpLog.LOGINSTATE_SUCCESS); - } - ipLogMapper.insert(log); - resultGeekQ.setData(logininfo); - } catch (Exception e) { - logger.error("登录发生错误!",e); - resultGeekQ.withError(ResultStatus.LOGIN_FIAL); - } - return resultGeekQ; - } + log.setLoginInfoId(current.getId()); + log.setLoginState(IpLog.LOGINSTATE_SUCCESS); + } + ipLogMapper.insert(log); + resultGeekQ.setData(logininfo); + } catch (Exception e) { + logger.error("登录发生错误!", e); + resultGeekQ.withError(ResultStatus.LOGIN_FIAL); + } + return resultGeekQ; + } - @Override - public boolean hasAdmin() { - return false; - } + @Override + public boolean hasAdmin() { + return false; + } - @Override - public void createDefaultAdmin() { + @Override + public void createDefaultAdmin() { - } + } - @Override - public List> autoComplate(String word, int userType) { - return null; - } + @Override + public List> autoComplate(String word, int userType) { + return null; + } } diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/OrdersServiceImpl.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/OrdersServiceImpl.java index c1cfe4a..8b699f0 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/OrdersServiceImpl.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/OrdersServiceImpl.java @@ -12,32 +12,32 @@ import java.util.UUID; @Service("ordersService") public class OrdersServiceImpl implements OrdersService { - - final static Logger log = LoggerFactory.getLogger(OrdersServiceImpl.class); - - @Autowired - private OrdersMapper ordersMapper; - - @Override - public Orders getOrder(String orderId) { - return ordersMapper.selectByPrimaryKey(orderId); - } - @Override - public boolean createOrder(String itemId) { - - // 创建订单 - String oid = UUID.randomUUID().toString().replaceAll("-", ""); + final static Logger log = LoggerFactory.getLogger(OrdersServiceImpl.class); + + @Autowired + private OrdersMapper ordersMapper; + + @Override + public Orders getOrder(String orderId) { + return ordersMapper.selectByPrimaryKey(orderId); + } + + @Override + public boolean createOrder(String itemId) { + + // 创建订单 + String oid = UUID.randomUUID().toString().replaceAll("-", ""); // Orders o = new Orders(); // o.setId(oid); // o.setOrderNum(oid); // o.setItemId(itemId); // ordersMapper.insert(o); - - log.info("订单创建成功"); - - return true; - } + + log.info("订单创建成功"); + + return true; + } } diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/RedisCacheStorageServiceImpl.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/RedisCacheStorageServiceImpl.java index 3eceaf7..d12bc22 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/RedisCacheStorageServiceImpl.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/RedisCacheStorageServiceImpl.java @@ -18,6 +18,23 @@ public class RedisCacheStorageServiceImpl implements RedisCacheStorageService { @Autowired private RedisCache redisCache; + + @SuppressWarnings("unchecked") + public static T stringToBean(String str, Class clazz) { + if (str == null || str.length() <= 0 || clazz == null) { + return null; + } + if (clazz == int.class || clazz == Integer.class) { + return (T) Integer.valueOf(str); + } else if (clazz == String.class) { + return (T) str; + } else if (clazz == long.class || clazz == Long.class) { + return (T) Long.valueOf(str); + } else { + return JSON.toJavaObject(JSON.parseObject(str), clazz); + } + } + @Override public boolean set(String key, Object value) { Jedis jedis = null; @@ -34,7 +51,7 @@ public class RedisCacheStorageServiceImpl implements RedisCacheStorageService { // 获取客户端对象 jedis = redisCache.getResource(); // 执行插入 - jedis.set(key,jValue); + jedis.set(key, jValue); } catch (Exception e) { LOG.info("client can't connect server"); isSucess = false; @@ -56,32 +73,14 @@ public class RedisCacheStorageServiceImpl implements RedisCacheStorageService { public Logininfo get(String key) { Jedis jedis = null; try { - jedis = redisCache.getResource(); + jedis = redisCache.getResource(); //生成真正的key - String str = jedis.get(key); - Logininfo t = stringToBean(str, Logininfo.class); + String str = jedis.get(key); + Logininfo t = stringToBean(str, Logininfo.class); return t; - }finally { + } finally { redisCache.returnResource(jedis); } } - - - @SuppressWarnings("unchecked") - public static T stringToBean(String str, Class clazz) { - if(str == null || str.length() <= 0 || clazz == null) { - return null; - } - if(clazz == int.class || clazz == Integer.class) { - return (T)Integer.valueOf(str); - }else if(clazz == String.class) { - return (T)str; - }else if(clazz == long.class || clazz == Long.class) { - return (T)Long.valueOf(str); - }else { - return JSON.toJavaObject(JSON.parseObject(str), clazz); - } - } - } diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/SystemDictionaryServiceImpl.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/SystemDictionaryServiceImpl.java index 943c36d..ccfa0d2 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/SystemDictionaryServiceImpl.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/SystemDictionaryServiceImpl.java @@ -14,61 +14,61 @@ import java.util.List; @Service("iSystemDictionaryServiceImpl") public class SystemDictionaryServiceImpl implements ISystemDictionaryService { - @Autowired - private SystemDictionaryMapper systemDictionaryMapper; + @Autowired + private SystemDictionaryMapper systemDictionaryMapper; - @Autowired - private SystemDictionaryItemMapper systemDictionaryItemMapper; + @Autowired + private SystemDictionaryItemMapper systemDictionaryItemMapper; - @Override - public List listDics() { - return systemDictionaryMapper.selectAll(); - } + @Override + public List listDics() { + return systemDictionaryMapper.selectAll(); + } - @Override - public PageResult queryDic(SystemDictionaryQueryObject qo) { - int count = this.systemDictionaryMapper.queryForCount(qo); - if (count > 0) { - List list = this.systemDictionaryMapper.query(qo); - return new PageResult(count, qo.getPageSize(), qo.getCurrentPage(), - list); - } - return PageResult.empty(qo.getPageSize()); - } + @Override + public PageResult queryDic(SystemDictionaryQueryObject qo) { + int count = this.systemDictionaryMapper.queryForCount(qo); + if (count > 0) { + List list = this.systemDictionaryMapper.query(qo); + return new PageResult(count, qo.getPageSize(), qo.getCurrentPage(), + list); + } + return PageResult.empty(qo.getPageSize()); + } - @Override - public void saveOrUpdate(SystemDictionary sd) { - if (sd.getId() != null) { - this.systemDictionaryMapper.updateByPrimaryKey(sd); - } else { - this.systemDictionaryMapper.insert(sd); - } - } + @Override + public void saveOrUpdate(SystemDictionary sd) { + if (sd.getId() != null) { + this.systemDictionaryMapper.updateByPrimaryKey(sd); + } else { + this.systemDictionaryMapper.insert(sd); + } + } - @Override - public PageResult queryDicItem(SystemDictionaryQueryObject qo) { - int count = this.systemDictionaryItemMapper.queryForCount(qo); - if (count > 0) { - List list = this.systemDictionaryItemMapper - .query(qo); - return new PageResult(count, qo.getPageSize(), qo.getCurrentPage(), - list); - } - return PageResult.empty(qo.getPageSize()); - } + @Override + public PageResult queryDicItem(SystemDictionaryQueryObject qo) { + int count = this.systemDictionaryItemMapper.queryForCount(qo); + if (count > 0) { + List list = this.systemDictionaryItemMapper + .query(qo); + return new PageResult(count, qo.getPageSize(), qo.getCurrentPage(), + list); + } + return PageResult.empty(qo.getPageSize()); + } - @Override - public void saveOrUpdateItem(SystemDictionaryItem item) { - if (item.getId() != null) { - this.systemDictionaryItemMapper.updateByPrimaryKey(item); - } else { - this.systemDictionaryItemMapper.insert(item); - } - } + @Override + public void saveOrUpdateItem(SystemDictionaryItem item) { + if (item.getId() != null) { + this.systemDictionaryItemMapper.updateByPrimaryKey(item); + } else { + this.systemDictionaryItemMapper.insert(item); + } + } - @Override - public List queryBySn(String sn) { - return this.systemDictionaryItemMapper.queryBySn(sn); - } + @Override + public List queryBySn(String sn) { + return this.systemDictionaryItemMapper.queryBySn(sn); + } } diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/SystemDictionaryUtil.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/SystemDictionaryUtil.java index d40a2db..58993b7 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/SystemDictionaryUtil.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/SystemDictionaryUtil.java @@ -9,17 +9,17 @@ import java.util.List; /** * 数据字典工具类 - * @author Administrator * + * @author Administrator */ @Component public class SystemDictionaryUtil { - @Autowired - private ISystemDictionaryService systemDictionaryService; + @Autowired + private ISystemDictionaryService systemDictionaryService; - public List list(String sn) { - return systemDictionaryService.queryBySn(sn); - } + public List list(String sn) { + return systemDictionaryService.queryBySn(sn); + } } diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/UserServiceImpl.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/UserServiceImpl.java index b784f4f..8b9e655 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/UserServiceImpl.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/service/impl/UserServiceImpl.java @@ -3,17 +3,14 @@ package com.geekq.admin.service.impl; import com.geekq.admin.entity.Userinfo; import com.geekq.admin.mapper.UserinfoMapper; import com.geekq.admin.service.IUserService; -import com.geekq.admin.utils.UserContext; -import com.geekq.common.utils.numcal.BitStatesUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service("userServiceImpl") public class UserServiceImpl implements IUserService { - @Autowired - private UserinfoMapper userinfoMapper; + @Autowired + private UserinfoMapper userinfoMapper; /*@Autowired private ISendVerifyCodeService verifyCodeService;*/ @@ -23,25 +20,25 @@ public class UserServiceImpl implements IUserService { private String salt; */ - @Override - public void update(Userinfo userinfo) { + @Override + public void update(Userinfo userinfo) { /* int ret = userinfoMapper.updateByPrimaryKey(userinfo,salt); if (ret <= 0) { throw new RuntimeException("乐观锁失败");*/ /* throw new RuntimeException("Userinfo对象:" + userinfo.getId() + " 乐观锁失败!");*/ - } + } - @Override - public Userinfo get(Long id) { + @Override + public Userinfo get(Long id) { - return null;/*userinfoMapper.selectByPrimaryKey(id,salt);*/ - } + return null;/*userinfoMapper.selectByPrimaryKey(id,salt);*/ + } - @Override - public boolean bindPhone(String phoneNumber, String verifyCode) { - return false; - } + @Override + public boolean bindPhone(String phoneNumber, String verifyCode) { + return false; + } /*@Override public boolean bindPhone(String phoneNumber, String verifyCode) { @@ -56,8 +53,8 @@ public class UserServiceImpl implements IUserService { return false; }*/ - @Override - public void updateBasicInfo(Userinfo userinfo) { + @Override + public void updateBasicInfo(Userinfo userinfo) { /* Userinfo current = this.userinfoMapper.selectByPrimaryKey(UserContext .getCurrent().getId(),salt);*/ /* current.setEducationBackground(userinfo.getEducationBackground()); @@ -69,6 +66,6 @@ public class UserServiceImpl implements IUserService { current.addState(BitStatesUtils.OP_BASE_INFO); } this.update(current);*/ - } + } } diff --git a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/utils/UserContext.java b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/utils/UserContext.java index d9644f2..cb62282 100644 --- a/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/utils/UserContext.java +++ b/miaosha-admin/miaosha-admin-service/src/main/java/com/geekq/admin/utils/UserContext.java @@ -14,19 +14,13 @@ import javax.servlet.http.HttpSession; public class UserContext { - @Autowired - private HttpSession session; - - @Autowired - private HttpServletRequest request; - public static final String LOGIN_IN_SESSION = "logininfo"; public static final String VERIFYCODE_IN_SESSION = "VERIFYCODE_IN_SESSION"; - - @Bean - public RequestContextListener requestContextListener(){ - return new RequestContextListener(); - } + private static ThreadLocal userHolder = new ThreadLocal(); + @Autowired + private HttpSession session; + @Autowired + private HttpServletRequest request; /* @Autowired private RedisService redisService;*/ @@ -35,7 +29,10 @@ public class UserContext { .getRequestAttributes()).getRequest(); } - private static ThreadLocal userHolder = new ThreadLocal(); + public static void removeUser() { + + userHolder.remove(); + } /* public static void putLogininfo(Logininfo user) { @@ -46,21 +43,22 @@ public class UserContext { return userHolder.get(); }*/ - public static void removeUser() { - - userHolder.remove(); - } - public static void putLogininfo(Logininfo logininfo) { - HttpServletRequest a = ((ServletRequestAttributes) RequestContextHolder + public static void putLogininfo(Logininfo logininfo) { + HttpServletRequest a = ((ServletRequestAttributes) RequestContextHolder .getRequestAttributes()).getRequest(); HttpSession b = a.getSession(); - b.setAttribute(LOGIN_IN_SESSION, logininfo); - } + b.setAttribute(LOGIN_IN_SESSION, logininfo); + } - public static Logininfo getCurrent() { - return (Logininfo) getRequest().getSession().getAttribute( - LOGIN_IN_SESSION); - } + public static Logininfo getCurrent() { + return (Logininfo) getRequest().getSession().getAttribute( + LOGIN_IN_SESSION); + } + + @Bean + public RequestContextListener requestContextListener() { + return new RequestContextListener(); + } // public static void putVerifyCode(VerifyCode code) { // getRequest().getSession().setAttribute(VERIFYCODE_IN_SESSION, code); diff --git a/miaosha-admin/miaosha-admin-web/pom.xml b/miaosha-admin/miaosha-admin-web/pom.xml index 47e045d..69e21d3 100644 --- a/miaosha-admin/miaosha-admin-web/pom.xml +++ b/miaosha-admin/miaosha-admin-web/pom.xml @@ -1,147 +1,71 @@ - 4.0.0 - - com.geekq - miaosha-admin - ${revision} - - miaosha-admin-web - - war - - - - org.freemarker - freemarker - - - com.alibaba - dubbo - - - org.apache.zookeeper - zookeeper - - - com.github.sgroschupf - zkclient - - - - - org.apache.curator - curator-framework - - - org.apache.curator - curator-recipes - - - - - org.springframework - spring-context - - - org.springframework - spring-beans - - - org.springframework - spring-webmvc - - - org.springframework - spring-jdbc - - - org.springframework - spring-aspects - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + com.geekq + miaosha-admin + ${revision} + + miaosha-admin-web - - - org.springframework - spring-context-support - + war - - - jstl - jstl - - - javax.servlet - servlet-api - provided - - - javax.servlet - jsp-api - provided - - - com.geekq - miaosha-admin-api - - - com.geekq - miaosha-admin-common - - - com.geekq - miaosha-admin-service - - - - - - - src/main/java - - **/*.properties - **/*.xml - - false - - - src/main/resources - - **/*.properties - **/*.xml - **/*.ini - - false - - - - - - org.apache.tomcat.maven - tomcat7-maven-plugin - - 8080 - / - true - UTF-8 - - - - - maven-eclipse-plugin - - - org.springframework.ide.eclipse.core.springnature - - - org.springframework.ide.eclipse.core.springbuilder - - true - true - - - - - + + + org.freemarker + freemarker + + + com.alibaba + dubbo + + + org.apache.zookeeper + zookeeper + + + com.github.sgroschupf + zkclient + + + org.apache.curator + curator-framework + + + org.apache.curator + curator-recipes + + + org.springframework + spring-context + + + org.springframework + spring-beans + + + org.springframework + spring-webmvc + + + org.springframework + spring-jdbc + + + org.springframework + spring-aspects + + + org.springframework + spring-context-support + + + com.geekq + miaosha-admin-service + + + javax.servlet + javax.servlet-api + + \ No newline at end of file diff --git a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/PayController.java b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/PayController.java index 5590555..98efc4a 100644 --- a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/PayController.java +++ b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/PayController.java @@ -3,7 +3,6 @@ package com.geekq.web.controller; import com.geekq.web.interceptor.RequiredLogin; import com.geekq.web.service.CulsterService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Required; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -12,15 +11,15 @@ import org.springframework.web.bind.annotation.RequestMapping; */ @Controller public class PayController { - - @Autowired - private CulsterService buyService; - @RequiredLogin - @RequestMapping("/index") - public String index() { - return "login"; - } - + @Autowired + private CulsterService buyService; + + @RequiredLogin + @RequestMapping("/index") + public String index() { + return "login"; + } + } diff --git a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/RegisterController.java b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/RegisterController.java index b1a7be3..1e0fde6 100644 --- a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/RegisterController.java +++ b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/RegisterController.java @@ -16,12 +16,12 @@ import org.springframework.web.bind.annotation.ResponseBody; * @author 邱润泽 */ @Controller -public class RegisterController extends BaseController{ +public class RegisterController extends BaseController { private static final Logger logger = LoggerFactory.getLogger(RegisterController.class); @Autowired - private ILogininfoService logininfoService ; + private ILogininfoService logininfoService; @RequestMapping("/register") @ResponseBody @@ -31,7 +31,7 @@ public class RegisterController extends BaseController{ this.logininfoService.register(username, password); json.setSuccess(true); } catch (RuntimeException e) { - logger.error("注册失败",e); + logger.error("注册失败", e); json.setMsg("注册失败,请联系相关人员!"); } return json; @@ -44,7 +44,7 @@ public class RegisterController extends BaseController{ try { result.setData(this.logininfoService.checkUsername(username, Constants.USERTYPE_NORMAL)); } catch (RuntimeException e) { - logger.error("检查是否存在该用户名!",e); + logger.error("检查是否存在该用户名!", e); result.withError(ResultStatus.SYSTEM_ERROR); } return result; diff --git a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/AddGlobalUtilInterceptor.java b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/AddGlobalUtilInterceptor.java index 9b2904f..17a9532 100644 --- a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/AddGlobalUtilInterceptor.java +++ b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/AddGlobalUtilInterceptor.java @@ -9,18 +9,18 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AddGlobalUtilInterceptor extends HandlerInterceptorAdapter { - - @Autowired - private SystemDictionaryUtil systemDicUtil; - @Override - public void postHandle(HttpServletRequest request, - HttpServletResponse response, Object handler, - ModelAndView modelAndView) throws Exception { - if (modelAndView != null) { - modelAndView.addObject("_DicUtil", systemDicUtil); - } - super.postHandle(request, response, handler, modelAndView); - } + @Autowired + private SystemDictionaryUtil systemDicUtil; + + @Override + public void postHandle(HttpServletRequest request, + HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + if (modelAndView != null) { + modelAndView.addObject("_DicUtil", systemDicUtil); + } + super.postHandle(request, response, handler, modelAndView); + } } diff --git a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/LoginInterceptor.java b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/LoginInterceptor.java index ba22d18..51509ae 100644 --- a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/LoginInterceptor.java +++ b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/LoginInterceptor.java @@ -2,37 +2,35 @@ package com.geekq.web.interceptor; import com.geekq.admin.entity.Logininfo; import com.geekq.admin.service.RedisCacheStorageService; -import com.geekq.admin.utils.UserContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; -import javax.jws.soap.SOAPBinding; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginInterceptor extends HandlerInterceptorAdapter { - @Autowired - private RedisCacheStorageService redisService; + @Autowired + private RedisCacheStorageService redisService; - @Override - public boolean preHandle(HttpServletRequest request, - HttpServletResponse response, Object handler) throws Exception { - if (handler instanceof HandlerMethod) { - HandlerMethod hm = (HandlerMethod) handler; - RequiredLogin rl = hm.getMethodAnnotation(RequiredLogin.class); - System.out.println(request.getParameter("username")); - String username =request.getParameter("username"); - if (rl != null) { - Logininfo current = redisService.get("Login"+username); - if (current == null) { - response.sendRedirect("/login.html"); - return false; - } - } - } - return super.preHandle(request, response, handler); - } + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) throws Exception { + if (handler instanceof HandlerMethod) { + HandlerMethod hm = (HandlerMethod) handler; + RequiredLogin rl = hm.getMethodAnnotation(RequiredLogin.class); + System.out.println(request.getParameter("username")); + String username = request.getParameter("username"); + if (rl != null) { + Logininfo current = redisService.get("Login" + username); + if (current == null) { + response.sendRedirect("/login.html"); + return false; + } + } + } + return super.preHandle(request, response, handler); + } } diff --git a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/service/CulsterService.java b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/service/CulsterService.java index 4d842ec..a272f2c 100644 --- a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/service/CulsterService.java +++ b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/service/CulsterService.java @@ -2,11 +2,11 @@ package com.geekq.web.service; public interface CulsterService { - /** - * @Description: 购买商品 - */ - public void doBuyItem(String itemId); - - public boolean displayBuy(String itemId); + /** + * @Description: 购买商品 + */ + public void doBuyItem(String itemId); + + public boolean displayBuy(String itemId); } diff --git a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/service/impl/CulsterServiceImpl.java b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/service/impl/CulsterServiceImpl.java index 08dfa49..4d703b5 100644 --- a/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/service/impl/CulsterServiceImpl.java +++ b/miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/service/impl/CulsterServiceImpl.java @@ -1,38 +1,37 @@ package com.geekq.web.service.impl; +import com.geekq.admin.service.OrdersService; +import com.geekq.web.service.CulsterService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.geekq.admin.service.OrdersService; -import com.geekq.web.service.CulsterService; - @Service("buyService") public class CulsterServiceImpl implements CulsterService { - - final static Logger log = LoggerFactory.getLogger(CulsterServiceImpl.class); - + + final static Logger log = LoggerFactory.getLogger(CulsterServiceImpl.class); + // @Autowired // private ItemsService itemService; - @Autowired - private OrdersService ordersService; - - @Override - public void doBuyItem(String itemId) { - // 减少库存 + @Autowired + private OrdersService ordersService; + + @Override + public void doBuyItem(String itemId) { + // 减少库存 // itemService.displayReduceCounts(itemId, 1); - - // 创建订单 - ordersService.createOrder(itemId); - } - - @Override - public boolean displayBuy(String itemId) { - - int buyCounts = 5; - + + // 创建订单 + ordersService.createOrder(itemId); + } + + @Override + public boolean displayBuy(String itemId) { + + int buyCounts = 5; + // // 1. 判断库存 // int stockCounts = itemService.getItemCounts(itemId); // if (stockCounts < buyCounts) { @@ -42,7 +41,7 @@ public class CulsterServiceImpl implements CulsterService { // } // // // 2. 创建订单 - boolean isOrderCreated = ordersService.createOrder(itemId); + boolean isOrderCreated = ordersService.createOrder(itemId); // // // 3. 创建订单成功后,扣除库存 // if (isOrderCreated) { @@ -52,9 +51,9 @@ public class CulsterServiceImpl implements CulsterService { // log.info("订单创建失败..."); // return false; // } - - return true; - } - + + return true; + } + } diff --git a/miaosha-admin/pom.xml b/miaosha-admin/pom.xml index 5f057bb..6dbe6e6 100644 --- a/miaosha-admin/pom.xml +++ b/miaosha-admin/pom.xml @@ -1,164 +1,40 @@ - 4.0.0 - com.geekq - miaosha-admin - ${revision} - pom - - com.geekq - miaosha-parent - ${revision} - ../pom.xml - - - - 1.8.7.RELEASE - 2.4.2 - 3.2.8 - 1.2.2 - 1.2.15 - 5.1.41 - 1.7.21 - 2.7.4 - 1.1.0 - 4.3.5 - 1.2 - 2.5 - 2.0 - 3.3.2 - 3.3 - 4.1.3 - 0.9.1 - - 2.9.0 - 3.1 - 2.6.0 - 3.4.11 - 0.1 - 4.0.0 - - - - - - - com.geekq - miaosha-admin-common - ${revision} - - - com.geekq - miaosha-admin-api - ${revision} - - - com.geekq - miaosha-admin-service - ${revision} - - - commons-net - commons-net - ${commons-net.version} - - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} - - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - - com.github.miemiedev - mybatis-paginator - ${mybatis.paginator.version} - - - com.github.pagehelper - pagehelper - ${pagehelper.version} - - - jstl - jstl - ${jstl.version} - - - javax.servlet - servlet-api - ${servlet-api.version} - provided - - - javax.servlet - jsp-api - ${jsp-api.version} - provided - - - - - ${project.artifactId} - - - - org.apache.maven.plugins - maven-resources-plugin - 2.7 - - UTF-8 - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.2 - - 1.8 - 1.8 - UTF-8 - - - - - - - - org.apache.tomcat.maven - tomcat7-maven-plugin - 2.2 - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + com.geekq + miaosha-parent + ${revision} + ../pom.xml + + com.geekq + miaosha-admin + ${revision} + pom + + miaosha-admin-common + miaosha-admin-api + miaosha-admin-service + miaosha-admin-web + + + + + com.geekq + miaosha-admin-common + ${revision} + + + com.geekq + miaosha-admin-api + ${revision} + + + com.geekq + miaosha-admin-service + ${revision} + + + - - - maven-eclipse-plugin - 2.9 - - - - - - - miaosha-admin-common - miaosha-admin-api - miaosha-admin-service - miaosha-admin-web - \ No newline at end of file diff --git a/miaosha-order/miaosha-order-api/pom.xml b/miaosha-order/miaosha-order-api/pom.xml index 6d301e6..571ebbd 100644 --- a/miaosha-order/miaosha-order-api/pom.xml +++ b/miaosha-order/miaosha-order-api/pom.xml @@ -6,22 +6,8 @@ com.geekq.api miaosha-order-api ${revision} - - - - org.apache.maven.plugins - maven-compiler-plugin - - 7 - 7 - - - - - miaosha-order-api Dubbo api for Spring Boot - com.geekq.dubbo miaosha-order diff --git a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/Goods.java b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/Goods.java index 72ae600..80d810f 100644 --- a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/Goods.java +++ b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/Goods.java @@ -10,11 +10,11 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class Goods { - private Long id; - private String goodsName; - private String goodsTitle; - private String goodsImg; - private String goodsDetail; - private Double goodsPrice; - private Integer goodsStock; + private Long id; + private String goodsName; + private String goodsTitle; + private String goodsImg; + private String goodsDetail; + private Double goodsPrice; + private Integer goodsStock; } diff --git a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/GoodsVoOrder.java b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/GoodsVoOrder.java index 0c4dd9f..ee56b5f 100644 --- a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/GoodsVoOrder.java +++ b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/GoodsVoOrder.java @@ -15,15 +15,15 @@ import java.util.Date; @NoArgsConstructor @Alias("goodsVoOrder") public class GoodsVoOrder implements Serializable { - private Long id; - private String goodsName; - private String goodsTitle; - private String goodsImg; - private String goodsDetail; - private Double goodsPrice; - private Integer goodsStock; - private Double miaoshaPrice; - private Integer stockCount; - private Date startDate; - private Date endDate; + private Long id; + private String goodsName; + private String goodsTitle; + private String goodsImg; + private String goodsDetail; + private Double goodsPrice; + private Integer goodsStock; + private Double miaoshaPrice; + private Integer stockCount; + private Date startDate; + private Date endDate; } diff --git a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/MiaoshaGoods.java b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/MiaoshaGoods.java index d909929..8c9a473 100644 --- a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/MiaoshaGoods.java +++ b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/entity/MiaoshaGoods.java @@ -15,9 +15,9 @@ import java.util.Date; @NoArgsConstructor @Alias("MiaoshaGoods") public class MiaoshaGoods implements Serializable { - private Long id; - private Long goodsId; - private Integer stockCount; - private Date startDate; - private Date endDate; + private Long id; + private Long goodsId; + private Integer stockCount; + private Date startDate; + private Date endDate; } diff --git a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/service/GoodsService.java b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/service/GoodsService.java index 95ee3c3..0b6ecd3 100644 --- a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/service/GoodsService.java +++ b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/service/GoodsService.java @@ -12,12 +12,14 @@ public interface GoodsService { /** * 查询获取全部信息 + * * @return */ public ResultGeekQOrder> listGoodsVo(); /** * 根据商品id查询货物信息 + * * @param goodsId * @return */ @@ -25,7 +27,8 @@ public interface GoodsService { /** * 减库存 + * * @return */ - public boolean reduceStock(GoodsVoOrder goods); + public boolean reduceStock(GoodsVoOrder goods); } diff --git a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/service/GoodsServiceMock.java b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/service/GoodsServiceMock.java index 8e16ed9..0f2a3b8 100644 --- a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/service/GoodsServiceMock.java +++ b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/service/GoodsServiceMock.java @@ -1,7 +1,6 @@ package com.geekq.api.service; import com.geekq.api.entity.GoodsVoOrder; -import com.geekq.api.service.GoodsService; import com.geekq.api.utils.ResultGeekQOrder; import org.springframework.stereotype.Service; diff --git a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/AbstractResultOrder.java b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/AbstractResultOrder.java index 4d4c7e0..d5aa6e8 100644 --- a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/AbstractResultOrder.java +++ b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/AbstractResultOrder.java @@ -1,13 +1,14 @@ package com.geekq.api.utils; - public class AbstractResultOrder { private ResultStatusOrder status; private int code; private String message; + protected AbstractResultOrder() { } + protected AbstractResultOrder(ResultStatusOrder status, String message) { this.code = status.getCode(); this.status = status; @@ -45,6 +46,7 @@ public class AbstractResultOrder { this.status = ResultStatusOrder.SUCCESS; return this; } + public ResultStatusOrder getStatus() { return this.status; } diff --git a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/ResultGeekQOrder.java b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/ResultGeekQOrder.java index 8613abe..642bd34 100644 --- a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/ResultGeekQOrder.java +++ b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/ResultGeekQOrder.java @@ -10,14 +10,17 @@ public class ResultGeekQOrder extends AbstractResultOrder implements Serializ protected ResultGeekQOrder() { } + protected ResultGeekQOrder(ResultStatusOrder status, String message) { super(status, message); } + protected ResultGeekQOrder(ResultStatusOrder status) { super(status); } + public static ResultGeekQOrder build() { - return new ResultGeekQOrder(ResultStatusOrder.SUCCESS, (String)null); + return new ResultGeekQOrder(ResultStatusOrder.SUCCESS, (String) null); } public static ResultGeekQOrder build(String message) { diff --git a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/ResultStatusOrder.java b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/ResultStatusOrder.java index 0dff400..c99581e 100644 --- a/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/ResultStatusOrder.java +++ b/miaosha-order/miaosha-order-api/src/main/java/com/geekq/api/utils/ResultStatusOrder.java @@ -8,6 +8,7 @@ package com.geekq.api.utils; * 4 秒杀错误 * 5 商品错误 * 6 订单错误 + * * @author qiurunze */ public enum ResultStatusOrder { @@ -28,36 +29,36 @@ public enum ResultStatusOrder { /** * 注册登录 */ - RESIGETR_SUCCESS(20000,"注册成功!"), - RESIGETER_FAIL(200001,"注册失败!"), - CODE_FAIL(200002,"验证码不一致!"), + RESIGETR_SUCCESS(20000, "注册成功!"), + RESIGETER_FAIL(200001, "注册失败!"), + CODE_FAIL(200002, "验证码不一致!"), /** * check */ - BIND_ERROR (30001,"参数校验异常:%s"), - ACCESS_LIMIT_REACHED (30002,"请求非法!"), - REQUEST_ILLEGAL (30004,"访问太频繁!"), - SESSION_ERROR (30005,"Session不存在或者已经失效!"), - PASSWORD_EMPTY (30006,"登录密码不能为空!"), - MOBILE_EMPTY (30007,"手机号不能为空!"), - MOBILE_ERROR (30008,"手机号格式错误!"), - MOBILE_NOT_EXIST (30009,"账号不存在!"), - PASSWORD_ERROR (30010,"密码错误!"), - USER_NOT_EXIST(30011,"用户不存在!"), + BIND_ERROR(30001, "参数校验异常:%s"), + ACCESS_LIMIT_REACHED(30002, "请求非法!"), + REQUEST_ILLEGAL(30004, "访问太频繁!"), + SESSION_ERROR(30005, "Session不存在或者已经失效!"), + PASSWORD_EMPTY(30006, "登录密码不能为空!"), + MOBILE_EMPTY(30007, "手机号不能为空!"), + MOBILE_ERROR(30008, "手机号格式错误!"), + MOBILE_NOT_EXIST(30009, "账号不存在!"), + PASSWORD_ERROR(30010, "密码错误!"), + USER_NOT_EXIST(30011, "用户不存在!"), /** * 订单模块 */ - ORDER_NOT_EXIST(60001,"订单不存在"), + ORDER_NOT_EXIST(60001, "订单不存在"), /** * 秒杀模块 */ - MIAO_SHA_OVER(40001,"商品已经秒杀完毕"), - REPEATE_MIAOSHA(40002,"不能重复秒杀"), - MIAOSHA_FAIL(40003,"秒杀失败"), - ORDER_GET_FAIL(40004,"订单获取失败"); + MIAO_SHA_OVER(40001, "商品已经秒杀完毕"), + REPEATE_MIAOSHA(40002, "不能重复秒杀"), + MIAOSHA_FAIL(40003, "秒杀失败"), + ORDER_GET_FAIL(40004, "订单获取失败"); /** * 商品模块 @@ -70,6 +71,10 @@ public enum ResultStatusOrder { this.message = message; } + private ResultStatusOrder(Object... args) { + this.message = String.format(this.message, args); + } + public int getCode() { return this.code; } @@ -97,8 +102,4 @@ public enum ResultStatusOrder { public String toString() { return this.getName(); } - - private ResultStatusOrder(Object... args) { - this.message = String.format(this.message, args); - } } diff --git a/miaosha-order/miaosha-order-provider/src/main/java/com/geekq/provider/DubboProviderApplication.java b/miaosha-order/miaosha-order-provider/src/main/java/com/geekq/provider/DubboProviderApplication.java index b12ba79..84a4a6e 100644 --- a/miaosha-order/miaosha-order-provider/src/main/java/com/geekq/provider/DubboProviderApplication.java +++ b/miaosha-order/miaosha-order-provider/src/main/java/com/geekq/provider/DubboProviderApplication.java @@ -8,10 +8,11 @@ import org.springframework.context.annotation.ImportResource; /** * DubboProviderApplication * 服务提供启动类 + * * @author geekq * @date 2018/6/7 */ -@ImportResource(value={"classpath:provider.xml"}) +@ImportResource(value = {"classpath:provider.xml"}) @SpringBootApplication @MapperScan("com.geekq.provider.mapper") public class DubboProviderApplication { diff --git a/miaosha-order/miaosha-order-provider/src/main/java/com/geekq/provider/service/impl/GoodsServiceImpl.java b/miaosha-order/miaosha-order-provider/src/main/java/com/geekq/provider/service/impl/GoodsServiceImpl.java index 122140d..7c632bb 100644 --- a/miaosha-order/miaosha-order-provider/src/main/java/com/geekq/provider/service/impl/GoodsServiceImpl.java +++ b/miaosha-order/miaosha-order-provider/src/main/java/com/geekq/provider/service/impl/GoodsServiceImpl.java @@ -32,10 +32,10 @@ public class GoodsServiceImpl implements GoodsService { try { resultGeekQ.setData(goodsMapper.listGoodsVo()); } catch (Exception e) { - logger.error("获取订单数据失败!",e); + logger.error("获取订单数据失败!", e); resultGeekQ.withError(ResultStatusOrder.ORDER_GET_FAIL); } - return resultGeekQ; + return resultGeekQ; } @Override @@ -43,10 +43,10 @@ public class GoodsServiceImpl implements GoodsService { ResultGeekQOrder resultGeekQ = ResultGeekQOrder.build(); try { - GoodsVoOrder goodsVoOrder = goodsMapper.getGoodsVoByGoodsId(goodsId); + GoodsVoOrder goodsVoOrder = goodsMapper.getGoodsVoByGoodsId(goodsId); resultGeekQ.setData(goodsVoOrder); } catch (Exception e) { - logger.error("获取单个订单失败!",e); + logger.error("获取单个订单失败!", e); resultGeekQ.withError(ResultStatusOrder.ORDER_GET_FAIL); } return resultGeekQ; diff --git a/miaosha-order/pom.xml b/miaosha-order/pom.xml index a3387fb..07d3f43 100644 --- a/miaosha-order/pom.xml +++ b/miaosha-order/pom.xml @@ -18,47 +18,30 @@ miaosha-order-provider Dubbo springboot for Spring Boot - - UTF-8 - UTF-8 - 1.8 - 4.0.1 - 3.4.13 - 0.2.1.RELEASE - 2.2.0 - 1.1.10 - - org.springframework.boot spring-boot-starter-web - org.projectlombok lombok - provided org.mybatis.spring.boot mybatis-spring-boot-starter - ${org.mybatis.version} com.alibaba.boot dubbo-spring-boot-starter - ${dubbo.starter.version} org.apache.curator curator-framework - ${curator-framework.version} org.apache.zookeeper zookeeper - ${zookeeper.version} org.springframework.boot diff --git a/miaosha-rpc/dubbo-api/src/main/java/dto/CapitalTradeOrderDto.java b/miaosha-rpc/dubbo-api/src/main/java/dto/CapitalTradeOrderDto.java index 65bb2eb..5c89577 100644 --- a/miaosha-rpc/dubbo-api/src/main/java/dto/CapitalTradeOrderDto.java +++ b/miaosha-rpc/dubbo-api/src/main/java/dto/CapitalTradeOrderDto.java @@ -4,12 +4,12 @@ import java.io.Serializable; import java.math.BigDecimal; /** - * dto 不包含业务逻辑 pojo 对应表数据 vo 把指定页面的所有数据封装起来 + * dto 不包含业务逻辑 pojo 对应表数据 vo 把指定页面的所有数据封装起来 */ public class CapitalTradeOrderDto implements Serializable { private static final long serialVersionUID = 6627401903410124642L; - + private long selfUserId; private long oppositeUserId; diff --git a/miaosha-rpc/dubbo-api/src/test/java/com/geekq/dubbo/springboot/AppTest.java b/miaosha-rpc/dubbo-api/src/test/java/com/geekq/dubbo/springboot/AppTest.java index 73cdbaa..aa7376b 100644 --- a/miaosha-rpc/dubbo-api/src/test/java/com/geekq/dubbo/springboot/AppTest.java +++ b/miaosha-rpc/dubbo-api/src/test/java/com/geekq/dubbo/springboot/AppTest.java @@ -1,20 +1,18 @@ package com.geekq.dubbo.springboot; -import static org.junit.Assert.assertTrue; - import org.junit.Test; +import static org.junit.Assert.assertTrue; + /** * Unit test for simple App. */ -public class AppTest -{ +public class AppTest { /** * Rigorous Test :-) */ @Test - public void shouldAnswerWithTrue() - { - assertTrue( true ); + public void shouldAnswerWithTrue() { + assertTrue(true); } } diff --git a/miaosha-rpc/dubbo-consumer/pom.xml b/miaosha-rpc/dubbo-consumer/pom.xml index 20e60a7..63e2540 100644 --- a/miaosha-rpc/dubbo-consumer/pom.xml +++ b/miaosha-rpc/dubbo-consumer/pom.xml @@ -30,27 +30,19 @@ com.alibaba.spring.boot dubbo-spring-boot-starter - 2.0.0 org.springframework.boot spring-boot-starter-test test - - com.101tec - zkclient - 0.10 - com.alibaba druid - 1.1.12 mysql mysql-connector-java - 5.1.10 org.springframework.boot @@ -59,7 +51,6 @@ org.quartz-scheduler quartz - 2.2.1 org.springframework @@ -73,11 +64,6 @@ com.google.guava guava - - com.esotericsoftware - kryo-shaded - 4.0.2 - org.apache.commons commons-lang3 @@ -85,18 +71,6 @@ com.alibaba fastjson - 1.2.51 - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - diff --git a/miaosha-rpc/dubbo-provider/pom.xml b/miaosha-rpc/dubbo-provider/pom.xml index ca6fe43..ab599c7 100644 --- a/miaosha-rpc/dubbo-provider/pom.xml +++ b/miaosha-rpc/dubbo-provider/pom.xml @@ -32,22 +32,15 @@ com.alibaba.spring.boot dubbo-spring-boot-starter - 2.0.0 org.springframework.boot spring-boot-starter-test test - - com.101tec - zkclient - 0.10 - com.alibaba druid - 1.1.12 mysql @@ -60,13 +53,6 @@ org.quartz-scheduler quartz - 2.2.1 - - - slf4j-api - org.slf4j - - org.springframework @@ -79,34 +65,14 @@ com.google.guava guava - 23.0 - - - com.esotericsoftware - kryo-shaded - 4.0.2 org.apache.commons commons-lang3 - 3.8.1 com.alibaba fastjson - 1.2.51 - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - diff --git a/miaosha-rpc/pom.xml b/miaosha-rpc/pom.xml index 540c14e..b9c03b4 100644 --- a/miaosha-rpc/pom.xml +++ b/miaosha-rpc/pom.xml @@ -31,15 +31,4 @@ - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - diff --git a/miaosha-v1/pom.xml b/miaosha-v1/pom.xml index 8da3773..6aa15a0 100644 --- a/miaosha-v1/pom.xml +++ b/miaosha-v1/pom.xml @@ -16,113 +16,50 @@ com.github.sgroschupf zkclient - 0.1 - org.apache.curator curator-framework - 4.0.0 org.apache.curator curator-recipes - 4.0.0 com.alibaba dubbo - 2.5.3 - - - org.springframework - spring - - org.apache.zookeeper zookeeper - 3.4.6 - - - org.slf4j - slf4j-log4j12 - - - log4j - log4j - - org.springframework.boot spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-tomcat - - - org.slf4j - slf4j-log4j12 - - - log4j - log4j - - - - org.springframework.boot spring-boot-starter-tomcat - - provided - com.google.guava guava - 31.0.1-jre org.springframework.boot spring-boot-starter-thymeleaf - org.mybatis.spring.boot mybatis-spring-boot-starter - 2.2.0 - - - org.slf4j - slf4j-log4j12 - - - log4j - log4j - - - - - - - - mysql mysql-connector-java - com.alibaba druid - 1.2.8 redis.clients @@ -151,45 +88,14 @@ joda-time joda-time - 2.10.13 org.projectlombok lombok - 1.18.22 - provided org.springframework.boot spring-boot-test - - - - miaosha-v1/src/main/java - - **/*.xml - - - - miaosha-v1/src/main/resources - true - - application-local.properties - application-dev.properties - application-prod.properties - application-test.properties - - - - miaosha-v1/src/main/resources - true - - application-${activatedProperties}.properties - application.properties - - - - diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/GeekQMainApplication.java b/miaosha-v1/src/main/java/com/geekq/miaosha/GeekQMainApplication.java index 891346d..820d69c 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/GeekQMainApplication.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/GeekQMainApplication.java @@ -2,8 +2,6 @@ package com.geekq.miaosha; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.ImportResource; import org.springframework.scheduling.annotation.EnableScheduling; @@ -16,44 +14,4 @@ public class GeekQMainApplication { } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessInterceptor.java b/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessInterceptor.java index 3f735df..4b5231e 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessInterceptor.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessInterceptor.java @@ -23,98 +23,98 @@ import static com.geekq.miaosha.common.enums.ResultStatus.ACCESS_LIMIT_REACHED; import static com.geekq.miaosha.common.enums.ResultStatus.SESSION_ERROR; @Service -public class AccessInterceptor extends HandlerInterceptorAdapter{ +public class AccessInterceptor extends HandlerInterceptorAdapter { - private static Logger logger = LoggerFactory.getLogger(AccessInterceptor.class); + private static Logger logger = LoggerFactory.getLogger(AccessInterceptor.class); - @Autowired - MiaoShaUserService userService; + @Autowired + MiaoShaUserService userService; - @Autowired - RedisService redisService; + @Autowired + RedisService redisService; - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { - /** - * 获取调用 获取主要方法 - */ - if(handler instanceof HandlerMethod) { - logger.info("打印拦截方法handler :{} ",handler); - HandlerMethod hm = (HandlerMethod)handler; - //方便mybatis 测试 + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { + /** + * 获取调用 获取主要方法 + */ + if (handler instanceof HandlerMethod) { + logger.info("打印拦截方法handler :{} ", handler); + HandlerMethod hm = (HandlerMethod) handler; + //方便mybatis 测试 // if(hm.getMethod().getName().startsWith("test")){ // return true; // } - MiaoshaUser user = getUser(request, response); - UserContext.setUser(user); - AccessLimit accessLimit = hm.getMethodAnnotation(AccessLimit.class); - if(accessLimit == null) { - return true; - } - int seconds = accessLimit.seconds(); - int maxCount = accessLimit.maxCount(); - boolean needLogin = accessLimit.needLogin(); - String key = request.getRequestURI(); - if(needLogin) { - if(user == null) { - render(response, SESSION_ERROR); - return false; - } - key += "_" + user.getNickname(); - }else { - //do nothing - } - AccessKey ak = AccessKey.withExpire(seconds); - Integer count = redisService.get(ak, key, Integer.class); - if(count == null) { - redisService.set(ak, key, 1); - }else if(count < maxCount) { - redisService.incr(ak, key); - }else { - render(response, ACCESS_LIMIT_REACHED); - return false; - } - } - return true; - } + MiaoshaUser user = getUser(request, response); + UserContext.setUser(user); + AccessLimit accessLimit = hm.getMethodAnnotation(AccessLimit.class); + if (accessLimit == null) { + return true; + } + int seconds = accessLimit.seconds(); + int maxCount = accessLimit.maxCount(); + boolean needLogin = accessLimit.needLogin(); + String key = request.getRequestURI(); + if (needLogin) { + if (user == null) { + render(response, SESSION_ERROR); + return false; + } + key += "_" + user.getNickname(); + } else { + //do nothing + } + AccessKey ak = AccessKey.withExpire(seconds); + Integer count = redisService.get(ak, key, Integer.class); + if (count == null) { + redisService.set(ak, key, 1); + } else if (count < maxCount) { + redisService.incr(ak, key); + } else { + render(response, ACCESS_LIMIT_REACHED); + return false; + } + } + return true; + } - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - super.afterCompletion(request, response, handler, ex); - UserContext.removeUser(); - } + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + super.afterCompletion(request, response, handler, ex); + UserContext.removeUser(); + } - private void render(HttpServletResponse response, ResultStatus cm)throws Exception { - response.setContentType("application/json;charset=UTF-8"); - OutputStream out = response.getOutputStream(); - String str = JSON.toJSONString(ResultGeekQ.error(cm)); - out.write(str.getBytes("UTF-8")); - out.flush(); - out.close(); - } + private void render(HttpServletResponse response, ResultStatus cm) throws Exception { + response.setContentType("application/json;charset=UTF-8"); + OutputStream out = response.getOutputStream(); + String str = JSON.toJSONString(ResultGeekQ.error(cm)); + out.write(str.getBytes("UTF-8")); + out.flush(); + out.close(); + } - private MiaoshaUser getUser(HttpServletRequest request, HttpServletResponse response) { - String paramToken = request.getParameter(MiaoShaUserService.COOKIE_NAME_TOKEN); - String cookieToken = getCookieValue(request, MiaoShaUserService.COOKIE_NAME_TOKEN); - if(StringUtils.isEmpty(cookieToken) && StringUtils.isEmpty(paramToken)) { - return null; - } - String token = StringUtils.isEmpty(paramToken)?cookieToken:paramToken; - return userService.getByToken(response, token); - } + private MiaoshaUser getUser(HttpServletRequest request, HttpServletResponse response) { + String paramToken = request.getParameter(MiaoShaUserService.COOKIE_NAME_TOKEN); + String cookieToken = getCookieValue(request, MiaoShaUserService.COOKIE_NAME_TOKEN); + if (StringUtils.isEmpty(cookieToken) && StringUtils.isEmpty(paramToken)) { + return null; + } + String token = StringUtils.isEmpty(paramToken) ? cookieToken : paramToken; + return userService.getByToken(response, token); + } - private String getCookieValue(HttpServletRequest request, String cookiName) { - Cookie[] cookies = request.getCookies(); - if(cookies == null || cookies.length <= 0){ - return null; - } - for(Cookie cookie : cookies) { - if(cookie.getName().equals(cookiName)) { - return cookie.getValue(); - } - } - return null; - } + private String getCookieValue(HttpServletRequest request, String cookiName) { + Cookie[] cookies = request.getCookies(); + if (cookies == null || cookies.length <= 0) { + return null; + } + for (Cookie cookie : cookies) { + if (cookie.getName().equals(cookiName)) { + return cookie.getValue(); + } + } + return null; + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessKey.java b/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessKey.java index 0a4f7eb..625ee81 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessKey.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessKey.java @@ -4,12 +4,12 @@ import com.geekq.miaosha.redis.BasePrefix; public class AccessKey extends BasePrefix { - private AccessKey( int expireSeconds, String prefix) { - super(expireSeconds, prefix); - } - - public static AccessKey withExpire(int expireSeconds) { - return new AccessKey(expireSeconds, "access"); - } - + private AccessKey(int expireSeconds, String prefix) { + super(expireSeconds, prefix); + } + + public static AccessKey withExpire(int expireSeconds) { + return new AccessKey(expireSeconds, "access"); + } + } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessLimit.java b/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessLimit.java index 89a01da..47f4176 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessLimit.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/access/AccessLimit.java @@ -9,7 +9,9 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Retention(RUNTIME) @Target(METHOD) public @interface AccessLimit { - int seconds(); - int maxCount(); - boolean needLogin() default true; + int seconds(); + + int maxCount(); + + boolean needLogin() default true; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/access/UserContext.java b/miaosha-v1/src/main/java/com/geekq/miaosha/access/UserContext.java index 8f94213..c255c98 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/access/UserContext.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/access/UserContext.java @@ -3,19 +3,19 @@ package com.geekq.miaosha.access; import com.geekq.miaosha.domain.MiaoshaUser; public class UserContext { - - private static ThreadLocal userHolder = new ThreadLocal(); - - public static void setUser(MiaoshaUser user) { - userHolder.set(user); - } - - public static MiaoshaUser getUser() { - return userHolder.get(); - } - public static void removeUser() { - userHolder.remove(); - } + private static ThreadLocal userHolder = new ThreadLocal(); + + public static MiaoshaUser getUser() { + return userHolder.get(); + } + + public static void setUser(MiaoshaUser user) { + userHolder.set(user); + } + + public static void removeUser() { + userHolder.remove(); + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/common/Constanst.java b/miaosha-v1/src/main/java/com/geekq/miaosha/common/Constanst.java index ae91419..d504f35 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/common/Constanst.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/common/Constanst.java @@ -6,14 +6,14 @@ public class Constanst { public static String COUNTLOGIN = "count:login"; - public enum orderStaus{ + public enum orderStaus { ORDER_NOT_PAY("新建未支付"); - orderStaus(String name){ - this.name=name; - } + private String name; - private String name; + orderStaus(String name) { + this.name = name; + } public String getName() { return name; diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/common/SnowflakeIdWorker.java b/miaosha-v1/src/main/java/com/geekq/miaosha/common/SnowflakeIdWorker.java index 4b46294..15c4743 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/common/SnowflakeIdWorker.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/common/SnowflakeIdWorker.java @@ -1,4 +1,5 @@ package com.geekq.miaosha.common; + /** * Twitter_Snowflake
* SnowFlake的结构如下(每部分用-分开):
@@ -14,52 +15,82 @@ package com.geekq.miaosha.common; public class SnowflakeIdWorker { // ==============================Fields=========================================== - /** 开始时间截 (2015-01-01) */ + /** + * 开始时间截 (2015-01-01) + */ private final long twepoch = 1420041600000L; - /** 机器id所占的位数 */ + /** + * 机器id所占的位数 + */ private final long workerIdBits = 5L; - /** 数据标识id所占的位数 */ + /** + * 数据标识id所占的位数 + */ private final long datacenterIdBits = 5L; - /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */ + /** + * 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) + */ private final long maxWorkerId = -1L ^ (-1L << workerIdBits); - /** 支持的最大数据标识id,结果是31 */ + /** + * 支持的最大数据标识id,结果是31 + */ private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); - /** 序列在id中占的位数 */ + /** + * 序列在id中占的位数 + */ private final long sequenceBits = 12L; - /** 机器ID向左移12位 */ + /** + * 机器ID向左移12位 + */ private final long workerIdShift = sequenceBits; - /** 数据标识id向左移17位(12+5) */ + /** + * 数据标识id向左移17位(12+5) + */ private final long datacenterIdShift = sequenceBits + workerIdBits; - /** 时间截向左移22位(5+5+12) */ + /** + * 时间截向左移22位(5+5+12) + */ private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; - /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */ + /** + * 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) + */ private final long sequenceMask = -1L ^ (-1L << sequenceBits); - /** 工作机器ID(0~31) */ + /** + * 工作机器ID(0~31) + */ private long workerId; - /** 数据中心ID(0~31) */ + /** + * 数据中心ID(0~31) + */ private long datacenterId; - /** 毫秒内序列(0~4095) */ + /** + * 毫秒内序列(0~4095) + */ private long sequence = 0L; - /** 上次生成ID的时间截 */ + /** + * 上次生成ID的时间截 + */ private long lastTimestamp = -1L; //==============================Constructors===================================== + /** * 构造函数 - * @param workerId 工作ID (0~31) + * + * @param workerId 工作ID (0~31) * @param datacenterId 数据中心ID (0~31) */ public SnowflakeIdWorker(long workerId, long datacenterId) { @@ -75,18 +106,33 @@ public class SnowflakeIdWorker { /** * 生成订单唯一ID + * * @param workerId * @param datacenterId * @return */ - public static long getOrderId(long workerId, long datacenterId){ + public static long getOrderId(long workerId, long datacenterId) { SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); return idWorker.nextId(); } // ==============================Methods========================================== + + /** + * 测试 + */ + public static void main(String[] args) { + SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); + for (int i = 0; i < 1000; i++) { + long id = idWorker.nextId(); + System.out.println(Long.toBinaryString(id)); + System.out.println(id); + } + } + /** * 获得下一个ID (该方法是线程安全的) + * * @return SnowflakeId */ public synchronized long nextId() { @@ -124,6 +170,7 @@ public class SnowflakeIdWorker { /** * 阻塞到下一个毫秒,直到获得新的时间戳 + * * @param lastTimestamp 上次生成ID的时间截 * @return 当前时间戳 */ @@ -135,29 +182,16 @@ public class SnowflakeIdWorker { return timestamp; } + //==============================Test============================================= + /** * 返回以毫秒为单位的当前时间 + * * @return 当前时间(毫秒) */ protected long timeGen() { return System.currentTimeMillis(); } - //==============================Test============================================= - /** 测试 */ - public static void main(String[] args) { - SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); - for (int i = 0; i < 1000; i++) { - long id = idWorker.nextId(); - System.out.println(Long.toBinaryString(id)); - System.out.println(id); - } - } - - - - - - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/common/enums/MessageStatus.java b/miaosha-v1/src/main/java/com/geekq/miaosha/common/enums/MessageStatus.java index cbfa5fb..0bffee5 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/common/enums/MessageStatus.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/common/enums/MessageStatus.java @@ -2,17 +2,18 @@ package com.geekq.miaosha.common.enums; public class MessageStatus { - public static final Integer ZORE = 0; + public static final Integer ZORE = 0; + /** * 消息类型 */ - public enum messageType { + public enum messageType { maiosha_message("秒杀消息"), buy_message("购买消息"), system_message("系统消息"); private String message; - private messageType(String message){ + private messageType(String message) { this.message = message; } @@ -24,10 +25,10 @@ public class MessageStatus { /** * 消息内容 */ - public enum ContentEnum { - system_message_register(7000,"尊敬的用户你好,你已经成功注册!"), + public enum ContentEnum { + system_message_register(7000, "尊敬的用户你好,你已经成功注册!"), - system_message_register_head(7001,"注册成功"); + system_message_register_head(7001, "注册成功"); private int code; private String message; @@ -45,10 +46,11 @@ public class MessageStatus { return message; } } + /** * 消息类型 */ - public enum sendType { + public enum sendType { // maiosha_message("秒杀消息"), // buy_message("购买消息"), // system_message("系统消息"); diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/common/enums/ResultStatus.java b/miaosha-v1/src/main/java/com/geekq/miaosha/common/enums/ResultStatus.java index edd8bf6..4bc2ec7 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/common/enums/ResultStatus.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/common/enums/ResultStatus.java @@ -8,6 +8,7 @@ package com.geekq.miaosha.common.enums; * 4 秒杀错误 * 5 商品错误 * 6 订单错误 + * * @author qiurunze */ public enum ResultStatus { @@ -28,35 +29,35 @@ public enum ResultStatus { /** * 注册登录 */ - RESIGETR_SUCCESS(20000,"注册成功!"), - RESIGETER_FAIL(200001,"注册失败!"), - CODE_FAIL(200002,"验证码不一致!"), + RESIGETR_SUCCESS(20000, "注册成功!"), + RESIGETER_FAIL(200001, "注册失败!"), + CODE_FAIL(200002, "验证码不一致!"), /** * check */ - BIND_ERROR (30001,"参数校验异常:%s"), - ACCESS_LIMIT_REACHED (30002,"请求非法!"), - REQUEST_ILLEGAL (30004,"访问太频繁!"), - SESSION_ERROR (30005,"Session不存在或者已经失效!"), - PASSWORD_EMPTY (30006,"登录密码不能为空!"), - MOBILE_EMPTY (30007,"手机号不能为空!"), - MOBILE_ERROR (30008,"手机号格式错误!"), - MOBILE_NOT_EXIST (30009,"手机号不存在!"), - PASSWORD_ERROR (30010,"密码错误!"), - USER_NOT_EXIST(30011,"用户不存在!"), + BIND_ERROR(30001, "参数校验异常:%s"), + ACCESS_LIMIT_REACHED(30002, "请求非法!"), + REQUEST_ILLEGAL(30004, "访问太频繁!"), + SESSION_ERROR(30005, "Session不存在或者已经失效!"), + PASSWORD_EMPTY(30006, "登录密码不能为空!"), + MOBILE_EMPTY(30007, "手机号不能为空!"), + MOBILE_ERROR(30008, "手机号格式错误!"), + MOBILE_NOT_EXIST(30009, "手机号不存在!"), + PASSWORD_ERROR(30010, "密码错误!"), + USER_NOT_EXIST(30011, "用户不存在!"), /** * 订单模块 */ - ORDER_NOT_EXIST(60001,"订单不存在"), + ORDER_NOT_EXIST(60001, "订单不存在"), /** * 秒杀模块 */ - MIAO_SHA_OVER(40001,"商品已经秒杀完毕"), - REPEATE_MIAOSHA(40002,"不能重复秒杀"), - MIAOSHA_FAIL(40003,"秒杀失败"); + MIAO_SHA_OVER(40001, "商品已经秒杀完毕"), + REPEATE_MIAOSHA(40002, "不能重复秒杀"), + MIAOSHA_FAIL(40003, "秒杀失败"); /** * 商品模块 @@ -69,6 +70,10 @@ public enum ResultStatus { this.message = message; } + private ResultStatus(Object... args) { + this.message = String.format(this.message, args); + } + public int getCode() { return this.code; } @@ -96,8 +101,4 @@ public enum ResultStatus { public String toString() { return this.getName(); } - - private ResultStatus(Object... args) { - this.message = String.format(this.message, args); - } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/common/resultbean/AbstractResult.java b/miaosha-v1/src/main/java/com/geekq/miaosha/common/resultbean/AbstractResult.java index 1f6070e..ebcc015 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/common/resultbean/AbstractResult.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/common/resultbean/AbstractResult.java @@ -44,6 +44,7 @@ public class AbstractResult { this.status = ResultStatus.SUCCESS; return this; } + public ResultStatus getStatus() { return this.status; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/common/resultbean/ResultGeekQ.java b/miaosha-v1/src/main/java/com/geekq/miaosha/common/resultbean/ResultGeekQ.java index c84143b..88a8ed6 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/common/resultbean/ResultGeekQ.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/common/resultbean/ResultGeekQ.java @@ -12,11 +12,13 @@ public class ResultGeekQ extends AbstractResult implements Serializable { protected ResultGeekQ(ResultStatus status, String message) { super(status, message); } + protected ResultGeekQ(ResultStatus status) { super(status); } + public static ResultGeekQ build() { - return new ResultGeekQ(ResultStatus.SUCCESS, (String)null); + return new ResultGeekQ(ResultStatus.SUCCESS, (String) null); } public static ResultGeekQ build(String message) { diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/config/DruidConfig.java b/miaosha-v1/src/main/java/com/geekq/miaosha/config/DruidConfig.java index 85a7dbf..347a6a6 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/config/DruidConfig.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/config/DruidConfig.java @@ -11,174 +11,209 @@ import javax.sql.DataSource; import java.sql.SQLException; @Configuration -@ConfigurationProperties(prefix="spring.datasource") +@ConfigurationProperties(prefix = "spring.datasource") public class DruidConfig { - private String url; - private String username; - private String password; - private String driverClassName; - private String type; - private String filters; - private int maxActive; - private int initialSize; - private int minIdle; - private long maxWait; - private long timeBetweenEvictionRunsMillis; - private long minEvictableIdleTimeMillis; - private String validationQuery; - private boolean testWhileIdle; - private boolean testOnBorrow; - private boolean testOnReturn; - private boolean poolPreparedStatements; - private int maxOpenPreparedStatements; - - @Bean - public ServletRegistrationBean druidSverlet() { - ServletRegistrationBean reg = new ServletRegistrationBean(); - reg.setServlet(new StatViewServlet()); - reg.addUrlMappings("/druid/*"); - reg.addInitParameter("loginUsername", "joshua"); - reg.addInitParameter("loginPassword", "123456"); - reg.addInitParameter("logSlowSql", "true"); - reg.addInitParameter("slowSqlMillis", "1000"); - return reg; - } - - @Bean - public DataSource druidDataSource() { - DruidDataSource datasource = new DruidDataSource(); - datasource.setUrl(url); - datasource.setUsername(username); - datasource.setPassword(password); - datasource.setDriverClassName(driverClassName); - datasource.setInitialSize(initialSize); - datasource.setMinIdle(minIdle); - datasource.setMaxActive(maxActive); - datasource.setMaxWait(maxWait); - datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); - datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); - datasource.setValidationQuery(validationQuery); - datasource.setTestWhileIdle(testWhileIdle); - datasource.setTestOnBorrow(testOnBorrow); - datasource.setTestOnReturn(testOnReturn); - datasource.setPoolPreparedStatements(poolPreparedStatements); - datasource.setMaxOpenPreparedStatements(maxOpenPreparedStatements); - try { - datasource.setFilters(filters); - } catch (SQLException e) { - e.printStackTrace(); - } - return datasource; - } - - public String getUrl() { - return url; - } - public void setUrl(String url) { - this.url = url; - } - public String getUsername() { - return username; - } - public void setUsername(String username) { - this.username = username; - } - public String getPassword() { - return password; - } - public void setPassword(String password) { - this.password = password; - } - public String getDriverClassName() { - return driverClassName; - } - public void setDriverClassName(String driverClassName) { - this.driverClassName = driverClassName; - } - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - public String getFilters() { - return filters; - } - public void setFilters(String filters) { - this.filters = filters; - } - public int getMaxActive() { - return maxActive; - } - public void setMaxActive(int maxActive) { - this.maxActive = maxActive; - } - public int getInitialSize() { - return initialSize; - } - public void setInitialSize(int initialSize) { - this.initialSize = initialSize; - } - public int getMinIdle() { - return minIdle; - } - public void setMinIdle(int minIdle) { - this.minIdle = minIdle; - } - public long getMaxWait() { - return maxWait; - } - public void setMaxWait(long maxWait) { - this.maxWait = maxWait; - } - public long getTimeBetweenEvictionRunsMillis() { - return timeBetweenEvictionRunsMillis; - } - public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) { - this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; - } - public long getMinEvictableIdleTimeMillis() { - return minEvictableIdleTimeMillis; - } - public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { - this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; - } - public String getValidationQuery() { - return validationQuery; - } - public void setValidationQuery(String validationQuery) { - this.validationQuery = validationQuery; - } - public boolean isTestWhileIdle() { - return testWhileIdle; - } - public void setTestWhileIdle(boolean testWhileIdle) { - this.testWhileIdle = testWhileIdle; - } - public boolean isTestOnBorrow() { - return testOnBorrow; - } - public void setTestOnBorrow(boolean testOnBorrow) { - this.testOnBorrow = testOnBorrow; - } - public boolean isTestOnReturn() { - return testOnReturn; - } - public void setTestOnReturn(boolean testOnReturn) { - this.testOnReturn = testOnReturn; - } - public boolean isPoolPreparedStatements() { - return poolPreparedStatements; - } - public void setPoolPreparedStatements(boolean poolPreparedStatements) { - this.poolPreparedStatements = poolPreparedStatements; - } - public int getMaxOpenPreparedStatements() { - return maxOpenPreparedStatements; - } - public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) { - this.maxOpenPreparedStatements = maxOpenPreparedStatements; - } - + private String url; + private String username; + private String password; + private String driverClassName; + private String type; + private String filters; + private int maxActive; + private int initialSize; + private int minIdle; + private long maxWait; + private long timeBetweenEvictionRunsMillis; + private long minEvictableIdleTimeMillis; + private String validationQuery; + private boolean testWhileIdle; + private boolean testOnBorrow; + private boolean testOnReturn; + private boolean poolPreparedStatements; + private int maxOpenPreparedStatements; + + @Bean + public ServletRegistrationBean druidSverlet() { + ServletRegistrationBean reg = new ServletRegistrationBean(); + reg.setServlet(new StatViewServlet()); + reg.addUrlMappings("/druid/*"); + reg.addInitParameter("loginUsername", "joshua"); + reg.addInitParameter("loginPassword", "123456"); + reg.addInitParameter("logSlowSql", "true"); + reg.addInitParameter("slowSqlMillis", "1000"); + return reg; + } + + @Bean + public DataSource druidDataSource() { + DruidDataSource datasource = new DruidDataSource(); + datasource.setUrl(url); + datasource.setUsername(username); + datasource.setPassword(password); + datasource.setDriverClassName(driverClassName); + datasource.setInitialSize(initialSize); + datasource.setMinIdle(minIdle); + datasource.setMaxActive(maxActive); + datasource.setMaxWait(maxWait); + datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); + datasource.setValidationQuery(validationQuery); + datasource.setTestWhileIdle(testWhileIdle); + datasource.setTestOnBorrow(testOnBorrow); + datasource.setTestOnReturn(testOnReturn); + datasource.setPoolPreparedStatements(poolPreparedStatements); + datasource.setMaxOpenPreparedStatements(maxOpenPreparedStatements); + try { + datasource.setFilters(filters); + } catch (SQLException e) { + e.printStackTrace(); + } + return datasource; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getFilters() { + return filters; + } + + public void setFilters(String filters) { + this.filters = filters; + } + + public int getMaxActive() { + return maxActive; + } + + public void setMaxActive(int maxActive) { + this.maxActive = maxActive; + } + + public int getInitialSize() { + return initialSize; + } + + public void setInitialSize(int initialSize) { + this.initialSize = initialSize; + } + + public int getMinIdle() { + return minIdle; + } + + public void setMinIdle(int minIdle) { + this.minIdle = minIdle; + } + + public long getMaxWait() { + return maxWait; + } + + public void setMaxWait(long maxWait) { + this.maxWait = maxWait; + } + + public long getTimeBetweenEvictionRunsMillis() { + return timeBetweenEvictionRunsMillis; + } + + public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) { + this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; + } + + public long getMinEvictableIdleTimeMillis() { + return minEvictableIdleTimeMillis; + } + + public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { + this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; + } + + public String getValidationQuery() { + return validationQuery; + } + + public void setValidationQuery(String validationQuery) { + this.validationQuery = validationQuery; + } + + public boolean isTestWhileIdle() { + return testWhileIdle; + } + + public void setTestWhileIdle(boolean testWhileIdle) { + this.testWhileIdle = testWhileIdle; + } + + public boolean isTestOnBorrow() { + return testOnBorrow; + } + + public void setTestOnBorrow(boolean testOnBorrow) { + this.testOnBorrow = testOnBorrow; + } + + public boolean isTestOnReturn() { + return testOnReturn; + } + + public void setTestOnReturn(boolean testOnReturn) { + this.testOnReturn = testOnReturn; + } + + public boolean isPoolPreparedStatements() { + return poolPreparedStatements; + } + + public void setPoolPreparedStatements(boolean poolPreparedStatements) { + this.poolPreparedStatements = poolPreparedStatements; + } + + public int getMaxOpenPreparedStatements() { + return maxOpenPreparedStatements; + } + + public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) { + this.maxOpenPreparedStatements = maxOpenPreparedStatements; + } + } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/config/UserArgumentResolver.java b/miaosha-v1/src/main/java/com/geekq/miaosha/config/UserArgumentResolver.java index f5adb4e..e5865ad 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/config/UserArgumentResolver.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/config/UserArgumentResolver.java @@ -16,10 +16,11 @@ public class UserArgumentResolver implements HandlerMethodArgumentResolver { @Autowired private MiaoShaUserService userService; + @Override public boolean supportsParameter(MethodParameter methodParameter) { - Class clazz = methodParameter.getParameterType() ; - return clazz == MiaoshaUser.class ; + Class clazz = methodParameter.getParameterType(); + return clazz == MiaoshaUser.class; } @Override diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/config/WebConfig.java b/miaosha-v1/src/main/java/com/geekq/miaosha/config/WebConfig.java index 5ee2bcf..82027c4 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/config/WebConfig.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/config/WebConfig.java @@ -10,7 +10,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter import java.util.List; @Configuration -public class WebConfig extends WebMvcConfigurerAdapter { +public class WebConfig extends WebMvcConfigurerAdapter { @Autowired UserArgumentResolver resolver; diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/BaseController.java b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/BaseController.java index c5c9f78..aee2c8b 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/BaseController.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/BaseController.java @@ -18,48 +18,45 @@ import java.io.OutputStream; public class BaseController { + @Autowired + ThymeleafViewResolver thymeleafViewResolver; + @Autowired + RedisService redisService; //加一个配置项 @Value("#{'${pageCache.enbale}'}") private boolean pageCacheEnable; - @Autowired - ThymeleafViewResolver thymeleafViewResolver; - - @Autowired - RedisService redisService; - + public static void out(HttpServletResponse res, String html) { + res.setContentType("text/html"); + res.setCharacterEncoding("UTF-8"); + try { + OutputStream out = res.getOutputStream(); + out.write(html.getBytes("UTF-8")); + out.flush(); + out.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } public String render(HttpServletRequest request, HttpServletResponse response, Model model, String tplName, KeyPrefix prefix, String key) { - if(!pageCacheEnable) { + if (!pageCacheEnable) { return tplName; } //取缓存 String html = redisService.get(prefix, key, String.class); - if(!StringUtils.isEmpty(html)) { + if (!StringUtils.isEmpty(html)) { out(response, html); return null; } //手动渲染 - WebContext ctx = new WebContext(request,response, - request.getServletContext(),request.getLocale(), model.asMap()); + WebContext ctx = new WebContext(request, response, + request.getServletContext(), request.getLocale(), model.asMap()); html = thymeleafViewResolver.getTemplateEngine().process(tplName, ctx); - if(!StringUtils.isEmpty(html)) { + if (!StringUtils.isEmpty(html)) { redisService.set(prefix, key, html); } out(response, html); return null; } - - public static void out(HttpServletResponse res, String html){ - res.setContentType("text/html"); - res.setCharacterEncoding("UTF-8"); - try{ - OutputStream out = res.getOutputStream(); - out.write(html.getBytes("UTF-8")); - out.flush(); - out.close(); - }catch(Exception e){ - e.printStackTrace(); - } - } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/GoodsController.java b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/GoodsController.java index 78718f8..7d13ab1 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/GoodsController.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/GoodsController.java @@ -28,45 +28,40 @@ import java.util.List; @RequestMapping("/goods") public class GoodsController extends BaseController { private static Logger log = LoggerFactory.getLogger(GoodsController.class); - - @Autowired - private MiaoShaUserService userService; - - @Autowired - private RedisService redisService; - - @Autowired - private GoodsService goodsService; - @Autowired ThymeleafViewResolver viewResolver; - @Autowired ApplicationContext applicationContext; + @Autowired + private MiaoShaUserService userService; + @Autowired + private RedisService redisService; + @Autowired + private GoodsService goodsService; /** * QPS:1267 load:15 mysql * 5000 * 10 * QPS:2884, load:5 - * */ - @RequestMapping(value="/to_list", produces="text/html") + */ + @RequestMapping(value = "/to_list", produces = "text/html") @ResponseBody public String list(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user) { model.addAttribute("user", user); List goodsList = goodsService.listGoodsVo(); model.addAttribute("goodsList", goodsList); - return render(request,response,model,"goods_list",GoodsKey.getGoodsList,""); + return render(request, response, model, "goods_list", GoodsKey.getGoodsList, ""); } - @RequestMapping(value="/to_detail2/{goodsId}",produces="text/html") + @RequestMapping(value = "/to_detail2/{goodsId}", produces = "text/html") @ResponseBody - public String detail2(HttpServletRequest request, HttpServletResponse response, Model model,MiaoshaUser user, - @PathVariable("goodsId")long goodsId) { + public String detail2(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user, + @PathVariable("goodsId") long goodsId) { model.addAttribute("user", user); //取缓存 - String html = redisService.get(GoodsKey.getGoodsDetail, ""+goodsId, String.class); - if(!StringUtils.isEmpty(html)) { + String html = redisService.get(GoodsKey.getGoodsDetail, "" + goodsId, String.class); + if (!StringUtils.isEmpty(html)) { return html; } //手动渲染 @@ -79,13 +74,13 @@ public class GoodsController extends BaseController { int miaoshaStatus = 0; int remainSeconds = 0; - if(now < startAt ) {//秒杀还没开始,倒计时 + if (now < startAt) {//秒杀还没开始,倒计时 miaoshaStatus = 0; - remainSeconds = (int)((startAt - now )/1000); - }else if(now > endAt){//秒杀已经结束 + remainSeconds = (int) ((startAt - now) / 1000); + } else if (now > endAt) {//秒杀已经结束 miaoshaStatus = 2; remainSeconds = -1; - }else {//秒杀进行中 + } else {//秒杀进行中 miaoshaStatus = 1; remainSeconds = 0; } @@ -104,15 +99,16 @@ public class GoodsController extends BaseController { /** * 数据库很少使用long的 , id 正常使一般使用 snowflake 分布式自增id + * * @param model * @param user * @param goodsId * @return */ - @RequestMapping(value="/detail/{goodsId}") + @RequestMapping(value = "/detail/{goodsId}") @ResponseBody - public ResultGeekQ detail(HttpServletRequest request, HttpServletResponse response, Model model,MiaoshaUser user, - @PathVariable("goodsId")long goodsId) { + public ResultGeekQ detail(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user, + @PathVariable("goodsId") long goodsId) { ResultGeekQ result = ResultGeekQ.build(); GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId); long startAt = goods.getStartDate().getTime(); @@ -120,13 +116,13 @@ public class GoodsController extends BaseController { long now = System.currentTimeMillis(); int miaoshaStatus = 0; int remainSeconds = 0; - if(now < startAt ) {//秒杀还没开始,倒计时 + if (now < startAt) {//秒杀还没开始,倒计时 miaoshaStatus = 0; - remainSeconds = (int)((startAt - now )/1000); - }else if(now > endAt){//秒杀已经结束 + remainSeconds = (int) ((startAt - now) / 1000); + } else if (now > endAt) {//秒杀已经结束 miaoshaStatus = 2; remainSeconds = -1; - }else {//秒杀进行中 + } else {//秒杀进行中 miaoshaStatus = 1; remainSeconds = 0; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/LoginController.java b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/LoginController.java index d7fda57..edfb425 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/LoginController.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/LoginController.java @@ -26,15 +26,16 @@ public class LoginController { @Autowired private MiaoShaUserService userService; + @Reference @RequestMapping("/to_login") public String tologin(LoginVo loginVo, Model model) { logger.info(loginVo.toString()); //未完成 - RedisLua.vistorCount(COUNTLOGIN); + RedisLua.vistorCount(COUNTLOGIN); String count = RedisLua.getVistorCount(COUNTLOGIN).toString(); - logger.info("访问网站的次数为:{}",count); - model.addAttribute("count",count); + logger.info("访问网站的次数为:{}", count); + model.addAttribute("count", count); return "login"; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/MiaoShaMessageController.java b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/MiaoShaMessageController.java index b096c57..b46ec5b 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/MiaoShaMessageController.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/MiaoShaMessageController.java @@ -26,14 +26,14 @@ public class MiaoShaMessageController { private MQSender sendMessage; @RequestMapping(value = "/list", produces = "text/html") - public String list(@RequestParam(value = "userid",required= true) String userId, Model model) { + public String list(@RequestParam(value = "userid", required = true) String userId, Model model) { ResultGeekQ resultGeekQ = ResultGeekQ.build(); if (StringUtils.isBlank(userId)) { resultGeekQ.withError(ResultStatus.USER_NOT_EXIST); } List miaoShaMessageInfos = messageService.getmessageUserList(Long.valueOf(userId), null); - model.addAttribute("message",miaoShaMessageInfos); + model.addAttribute("message", miaoShaMessageInfos); return "message_list"; } @@ -41,16 +41,18 @@ public class MiaoShaMessageController { @RequestMapping(value = "/getNewMessage", produces = "text/html") @ResponseBody - public String getNewMessage(@RequestParam(value = "userid",required= true) String userId, Model model) { + public String getNewMessage(@RequestParam(value = "userid", required = true) String userId, Model model) { if (StringUtils.isBlank(userId)) { return "0"; } - List miaoShaMessageInfos = messageService.getmessageUserList(Long.valueOf(userId),MessageStatus.ZORE); - if(miaoShaMessageInfos.isEmpty()){ + List miaoShaMessageInfos = messageService.getmessageUserList(Long.valueOf(userId), MessageStatus.ZORE); + if (miaoShaMessageInfos.isEmpty()) { return "0"; - }else { + } else { return "1"; } - }; + } + + ; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java index 32898de..daff956 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java @@ -63,7 +63,7 @@ public class MiaoshaController implements InitializingBean { * get post get 幂等 从服务端获取数据 不会产生影响  post 对服务端产生变化 */ @AccessLimit(seconds = 5, maxCount = 5, needLogin = true) - @RequestMapping(value="/{path}/do_miaosha", method= RequestMethod.POST) + @RequestMapping(value = "/{path}/do_miaosha", method = RequestMethod.POST) @ResponseBody public ResultGeekQ miaosha(Model model, MiaoshaUser user, @PathVariable("path") String path, @RequestParam("goodsId") long goodsId) { @@ -161,7 +161,7 @@ public class MiaoshaController implements InitializingBean { @RequestMapping(value = "/verifyCodeRegister", method = RequestMethod.GET) @ResponseBody public ResultGeekQ getMiaoshaVerifyCod(HttpServletResponse response - ) { + ) { ResultGeekQ result = ResultGeekQ.build(); try { BufferedImage image = miaoshaService.createVerifyCodeRegister(); @@ -176,10 +176,11 @@ public class MiaoshaController implements InitializingBean { return result; } } + @RequestMapping(value = "/verifyCode", method = RequestMethod.GET) @ResponseBody public ResultGeekQ getMiaoshaVerifyCod(HttpServletResponse response, MiaoshaUser user, - @RequestParam("goodsId") long goodsId) { + @RequestParam("goodsId") long goodsId) { ResultGeekQ result = ResultGeekQ.build(); if (user == null) { result.withError(SESSION_ERROR.getCode(), SESSION_ERROR.getMessage()); @@ -198,6 +199,7 @@ public class MiaoshaController implements InitializingBean { return result; } } + /** * 系统初始化 * diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/OrderController.java b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/OrderController.java index ef5802a..8a7bed8 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/OrderController.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/OrderController.java @@ -23,39 +23,39 @@ import static com.geekq.miaosha.common.enums.ResultStatus.SESSION_ERROR; @RequestMapping("/order") public class OrderController { - @Autowired - MiaoShaUserService userService; - - @Autowired - RedisService redisService; - - @Autowired - OrderService orderService; - - @Autowired - GoodsService goodsService; - + @Autowired + MiaoShaUserService userService; + + @Autowired + RedisService redisService; + + @Autowired + OrderService orderService; + + @Autowired + GoodsService goodsService; + @RequestMapping("/detail") @ResponseBody public ResultGeekQ info(Model model, MiaoshaUser user, - @RequestParam("orderId") long orderId) { - ResultGeekQ result = ResultGeekQ.build(); - if (user == null) { - result.withError(SESSION_ERROR.getCode(), SESSION_ERROR.getMessage()); - return result; - } - OrderInfo order = orderService.getOrderById(orderId); - if(order == null) { - result.withError(ORDER_NOT_EXIST.getCode(), ORDER_NOT_EXIST.getMessage()); - return result; - } - long goodsId = order.getGoodsId(); - GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId); - OrderDetailVo vo = new OrderDetailVo(); - vo.setOrder(order); - vo.setGoods(goods); - result.setData(vo); - return result; + @RequestParam("orderId") long orderId) { + ResultGeekQ result = ResultGeekQ.build(); + if (user == null) { + result.withError(SESSION_ERROR.getCode(), SESSION_ERROR.getMessage()); + return result; + } + OrderInfo order = orderService.getOrderById(orderId); + if (order == null) { + result.withError(ORDER_NOT_EXIST.getCode(), ORDER_NOT_EXIST.getMessage()); + return result; + } + long goodsId = order.getGoodsId(); + GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId); + OrderDetailVo vo = new OrderDetailVo(); + vo.setOrder(order); + vo.setGoods(goods); + result.setData(vo); + return result; } - + } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/RegisterController.java b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/RegisterController.java index 82cb489..4251a7e 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/controller/RegisterController.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/controller/RegisterController.java @@ -25,15 +25,16 @@ public class RegisterController { @Autowired private MiaoShaUserService miaoShaUserService; @Autowired - private MiaoshaService miaoshaService ; + private MiaoshaService miaoshaService; @RequestMapping("/do_register") - public String registerIndex(){ + public String registerIndex() { return "register"; } /** * 注册网站 + * * @param userName * @param passWord * @param salt @@ -41,25 +42,25 @@ public class RegisterController { */ @RequestMapping("/register") @ResponseBody - public ResultGeekQ register(@RequestParam("username") String userName , + public ResultGeekQ register(@RequestParam("username") String userName, @RequestParam("password") String passWord, @RequestParam("verifyCode") String verifyCode, - @RequestParam("salt") String salt,HttpServletResponse response ){ + @RequestParam("salt") String salt, HttpServletResponse response) { ResultGeekQ result = ResultGeekQ.build(); /** * 校验验证码 */ boolean check = miaoshaService.checkVerifyCodeRegister(Integer.valueOf(verifyCode)); - if(!check){ - result.withError(CODE_FAIL.getCode(),CODE_FAIL.getMessage()); + if (!check) { + result.withError(CODE_FAIL.getCode(), CODE_FAIL.getMessage()); return result; } - boolean registerInfo = miaoShaUserService.register(response , userName,passWord,salt); - if(!registerInfo){ - result.withError(RESIGETER_FAIL.getCode(),RESIGETER_FAIL.getMessage()); - return result; + boolean registerInfo = miaoShaUserService.register(response, userName, passWord, salt); + if (!registerInfo) { + result.withError(RESIGETER_FAIL.getCode(), RESIGETER_FAIL.getMessage()); + return result; } return result; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/GoodsDao.java b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/GoodsDao.java index 67e805f..f939ba6 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/GoodsDao.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/GoodsDao.java @@ -11,14 +11,14 @@ import java.util.List; @Mapper public interface GoodsDao { - - @Select("select g.*,mg.stock_count, mg.start_date, mg.end_date,mg.miaosha_price from miaosha_goods mg left join goods g on mg.goods_id = g.id") - public List listGoodsVo(); - @Select("select g.*,mg.stock_count, mg.start_date, mg.end_date,mg.miaosha_price from miaosha_goods mg left join goods g on mg.goods_id = g.id where g.id = #{goodsId}") - public GoodsVo getGoodsVoByGoodsId(@Param("goodsId") long goodsId); + @Select("select g.*,mg.stock_count, mg.start_date, mg.end_date,mg.miaosha_price from miaosha_goods mg left join goods g on mg.goods_id = g.id") + public List listGoodsVo(); + + @Select("select g.*,mg.stock_count, mg.start_date, mg.end_date,mg.miaosha_price from miaosha_goods mg left join goods g on mg.goods_id = g.id where g.id = #{goodsId}") + public GoodsVo getGoodsVoByGoodsId(@Param("goodsId") long goodsId); + + @Update("update miaosha_goods set stock_count = stock_count - 1 where goods_id = #{goodsId} and stock_count > 0") + public int reduceStock(MiaoshaGoods g); - @Update("update miaosha_goods set stock_count = stock_count - 1 where goods_id = #{goodsId} and stock_count > 0") - public int reduceStock(MiaoshaGoods g); - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/MiaoShaMessageDao.java b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/MiaoShaMessageDao.java index b4aa403..8bb3061 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/MiaoShaMessageDao.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/MiaoShaMessageDao.java @@ -8,23 +8,25 @@ import java.util.List; @Mapper public interface MiaoShaMessageDao { - - @Select("select * from miaosha_message where messageid = #{messageid} ") - public List listMiaoShaMessage(@Param("messageId") String messageId); - @Select("") - public List listMiaoShaMessageUser(@Param("messageId") String messageId); - @Insert("insert into miaosha_message (id , messageid ,content , create_time ,status,over_time,message_type ,send_type , good_name , price,messageHead)" + - "value (#{id},#{messageId},#{content},#{createTime},#{status},#{overTime},#{messageType},#{sendType},#{goodName},#{price},#{messageHead}) ") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - public void insertMiaoShaMessage(MiaoShaMessageInfo miaoShaMessage); - @Insert("insert into miaosha_message_user (id , userid ,messageid , goodid ,orderid)" + - "value (#{id},#{userId},#{messageId},#{goodId},#{orderId}) ") - @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - public void insertMiaoShaMessageUser(MiaoShaMessageUser miaoShaMessageUser); + @Select("select * from miaosha_message where messageid = #{messageid} ") + public List listMiaoShaMessage(@Param("messageId") String messageId); + + @Select("") + public List listMiaoShaMessageUser(@Param("messageId") String messageId); + + @Insert("insert into miaosha_message (id , messageid ,content , create_time ,status,over_time,message_type ,send_type , good_name , price,messageHead)" + + "value (#{id},#{messageId},#{content},#{createTime},#{status},#{overTime},#{messageType},#{sendType},#{goodName},#{price},#{messageHead}) ") + @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") + public void insertMiaoShaMessage(MiaoShaMessageInfo miaoShaMessage); + + @Insert("insert into miaosha_message_user (id , userid ,messageid , goodid ,orderid)" + + "value (#{id},#{userId},#{messageId},#{goodId},#{orderId}) ") + @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") + public void insertMiaoShaMessageUser(MiaoShaMessageUser miaoShaMessageUser); - @Select(" ") - public List listMiaoShaMessageByUserId(@Param("userId") long userId,@Param("status") Integer status ); + @Select(" ") + public List listMiaoShaMessageByUserId(@Param("userId") long userId, @Param("status") Integer status); } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/MiaoShaUserDao.java b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/MiaoShaUserDao.java index ed8224d..08f22ed 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/MiaoShaUserDao.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/MiaoShaUserDao.java @@ -7,10 +7,10 @@ import org.apache.ibatis.annotations.*; public interface MiaoShaUserDao { @Select("select * from miaosha_user where nickname = #{nickname}") - public MiaoshaUser getByNickname(@Param("nickname") String nickname ) ; + public MiaoshaUser getByNickname(@Param("nickname") String nickname); @Select("select * from miaosha_user where id = #{id}") - public MiaoshaUser getById(@Param("id") long id ) ; + public MiaoshaUser getById(@Param("id") long id); @Update("update miaosha_user set password = #{password} where id = #{id}") diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/OrderDao.java b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/OrderDao.java index dc890e3..c62034d 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/OrderDao.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/OrderDao.java @@ -8,24 +8,24 @@ import java.util.List; @Mapper public interface OrderDao { - - @Select("select * from miaosha_order where user_id=#{userNickName} and goods_id=#{goodsId}") - public MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(@Param("userNickName") long userNickName, @Param("goodsId") long goodsId); - @Insert("insert into order_info(user_id, goods_id, goods_name, goods_count, goods_price, order_channel, status, create_date)values(" - + "#{userId}, #{goodsId}, #{goodsName}, #{goodsCount}, #{goodsPrice}, #{orderChannel},#{status},#{createDate} )") - @SelectKey(keyColumn="id", keyProperty="id", resultType=long.class, before=false, statement="select last_insert_id()") - public long insert(OrderInfo orderInfo); - - @Insert("insert into miaosha_order (user_id, goods_id, order_id)values(#{userId}, #{goodsId}, #{orderId})") - public int insertMiaoshaOrder(MiaoshaOrder miaoshaOrder); + @Select("select * from miaosha_order where user_id=#{userNickName} and goods_id=#{goodsId}") + public MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(@Param("userNickName") long userNickName, @Param("goodsId") long goodsId); - @Select("select * from order_info where id = #{orderId}") - public OrderInfo getOrderById(@Param("orderId")long orderId); + @Insert("insert into order_info(user_id, goods_id, goods_name, goods_count, goods_price, order_channel, status, create_date)values(" + + "#{userId}, #{goodsId}, #{goodsName}, #{goodsCount}, #{goodsPrice}, #{orderChannel},#{status},#{createDate} )") + @SelectKey(keyColumn = "id", keyProperty = "id", resultType = long.class, before = false, statement = "select last_insert_id()") + public long insert(OrderInfo orderInfo); - @Select("select * from order_info where status=#{status} and create_Date<=#{createDate}") - public List selectOrderStatusByCreateTime(@Param("status")Integer status, @Param("createDate") String createDate); + @Insert("insert into miaosha_order (user_id, goods_id, order_id)values(#{userId}, #{goodsId}, #{orderId})") + public int insertMiaoshaOrder(MiaoshaOrder miaoshaOrder); - @Select("update order_info set status=0 where id=#{id}") - public int closeOrderByOrderInfo(); + @Select("select * from order_info where id = #{orderId}") + public OrderInfo getOrderById(@Param("orderId") long orderId); + + @Select("select * from order_info where status=#{status} and create_Date<=#{createDate}") + public List selectOrderStatusByCreateTime(@Param("status") Integer status, @Param("createDate") String createDate); + + @Select("update order_info set status=0 where id=#{id}") + public int closeOrderByOrderInfo(); } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/UserDao.java b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/UserDao.java index e4d80b6..72826d0 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/dao/UserDao.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/dao/UserDao.java @@ -1,21 +1,19 @@ package com.geekq.miaosha.dao; +import com.geekq.miaosha.domain.User; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import com.geekq.miaosha.domain.User; - @Mapper public interface UserDao { - @Select("select * from user where id = #{id}") - public User getById(@Param("id")int id); + @Select("select * from user where id = #{id}") + public User getById(@Param("id") int id); + + @Insert("insert into user (id, name) values(#{id}, #{name})") + public int insert(User user); - @Insert("insert into user (id, name) values(#{id}, #{name})") - public int insert(User user); - - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/Goods.java b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/Goods.java index 6251e74..c0b43e5 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/Goods.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/Goods.java @@ -10,11 +10,11 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class Goods { - private Long id; - private String goodsName; - private String goodsTitle; - private String goodsImg; - private String goodsDetail; - private Double goodsPrice; - private Integer goodsStock; + private Long id; + private String goodsName; + private String goodsTitle; + private String goodsImg; + private String goodsDetail; + private Double goodsPrice; + private Integer goodsStock; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoShaMessageInfo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoShaMessageInfo.java index 47903ae..0384b60 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoShaMessageInfo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoShaMessageInfo.java @@ -18,28 +18,28 @@ import java.util.Date; @NoArgsConstructor public class MiaoShaMessageInfo implements Serializable { - private Integer id ; + private Integer id; - private Long messageId ; + private Long messageId; - private Long userId ; + private Long userId; - private String content ; + private String content; private Date createTime; - private Integer status ; + private Integer status; - private Date overTime ; + private Date overTime; - private Integer messageType ; + private Integer messageType; - private Integer sendType ; + private Integer sendType; - private String goodName ; + private String goodName; - private BigDecimal price ; + private BigDecimal price; - private String messageHead ; + private String messageHead; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoShaMessageUser.java b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoShaMessageUser.java index 752d69e..300418b 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoShaMessageUser.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoShaMessageUser.java @@ -17,13 +17,13 @@ import java.util.Date; @NoArgsConstructor public class MiaoShaMessageUser implements Serializable { - private Long id ; + private Long id; - private Long userId ; + private Long userId; - private Long messageId ; + private Long messageId; - private String goodId ; + private String goodId; private Date orderId; diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaGoods.java b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaGoods.java index f881120..f55518c 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaGoods.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaGoods.java @@ -12,9 +12,9 @@ import java.util.Date; @AllArgsConstructor @NoArgsConstructor public class MiaoshaGoods { - private Long id; - private Long goodsId; - private Integer stockCount; - private Date startDate; - private Date endDate; + private Long id; + private Long goodsId; + private Integer stockCount; + private Date startDate; + private Date endDate; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaOrder.java b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaOrder.java index 9b4918f..02b6c24 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaOrder.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaOrder.java @@ -10,8 +10,8 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class MiaoshaOrder { - private Long id; - private Long userId; - private Long orderId; - private Long goodsId; + private Long id; + private Long userId; + private Long orderId; + private Long goodsId; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaUser.java b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaUser.java index be8942b..4ed8577 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaUser.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/MiaoshaUser.java @@ -13,25 +13,26 @@ import java.util.Date; @NoArgsConstructor public class MiaoshaUser { - private Long id; - private String nickname; - private String password; - private String salt; - private String head; - private Date registerDate; - private Date lastLoginDate; - private Integer loginCount; - @Override - public String toString() { - return "Logininfo{" + - "id=" + id + - ", nickname='" + nickname + '\'' + - ", password='" + password + '\'' + - ", salt='" + salt + '\'' + - ", head='" + head + '\'' + - ", registerDate=" + registerDate + - ", lastLoginDate=" + lastLoginDate + - ", loginCount=" + loginCount + - '}'; - } + private Long id; + private String nickname; + private String password; + private String salt; + private String head; + private Date registerDate; + private Date lastLoginDate; + private Integer loginCount; + + @Override + public String toString() { + return "Logininfo{" + + "id=" + id + + ", nickname='" + nickname + '\'' + + ", password='" + password + '\'' + + ", salt='" + salt + '\'' + + ", head='" + head + '\'' + + ", registerDate=" + registerDate + + ", lastLoginDate=" + lastLoginDate + + ", loginCount=" + loginCount + + '}'; + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/OrderInfo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/OrderInfo.java index a528d82..cff216e 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/OrderInfo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/OrderInfo.java @@ -12,15 +12,15 @@ import java.util.Date; @AllArgsConstructor @NoArgsConstructor public class OrderInfo { - private Long id; - private Long userId; - private Long goodsId; - private Long deliveryAddrId; - private String goodsName; - private Integer goodsCount; - private Double goodsPrice; - private Integer orderChannel; - private Integer status; - private Date createDate; - private Date payDate; + private Long id; + private Long userId; + private Long goodsId; + private Long deliveryAddrId; + private String goodsName; + private Integer goodsCount; + private Double goodsPrice; + private Integer orderChannel; + private Integer status; + private Date createDate; + private Date payDate; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/User.java b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/User.java index 3e8210c..7c9ba71 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/domain/User.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/domain/User.java @@ -10,6 +10,6 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class User { - private int id; - private String name; + private int id; + private String name; } \ No newline at end of file diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/exception/GlobleException.java b/miaosha-v1/src/main/java/com/geekq/miaosha/exception/GlobleException.java index bc25891..de73f59 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/exception/GlobleException.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/exception/GlobleException.java @@ -7,7 +7,7 @@ public class GlobleException extends RuntimeException { private ResultStatus status; - public GlobleException(ResultStatus status){ + public GlobleException(ResultStatus status) { super(); this.status = status; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/exception/GlobleExceptionHandler.java b/miaosha-v1/src/main/java/com/geekq/miaosha/exception/GlobleExceptionHandler.java index db94fe1..55c7369 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/exception/GlobleExceptionHandler.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/exception/GlobleExceptionHandler.java @@ -17,22 +17,23 @@ import static com.geekq.miaosha.common.enums.ResultStatus.SYSTEM_ERROR; /** * 拦截异常 - * @author qiurunze + * + * @author qiurunze */ @ControllerAdvice @ResponseBody public class GlobleExceptionHandler { - private static Logger logger = LoggerFactory.getLogger(GlobleExceptionHandler.class); + private static Logger logger = LoggerFactory.getLogger(GlobleExceptionHandler.class); - @ExceptionHandler(value=Exception.class) - public ResultGeekQ exceptionHandler(HttpServletRequest request , Exception e){ + @ExceptionHandler(value = Exception.class) + public ResultGeekQ exceptionHandler(HttpServletRequest request, Exception e) { e.printStackTrace(); - if(e instanceof GlobleException){ - GlobleException ex= (GlobleException)e; + if (e instanceof GlobleException) { + GlobleException ex = (GlobleException) e; return ResultGeekQ.error(ex.getStatus()); - }else if( e instanceof BindException){ - BindException ex = (BindException) e ; + } else if (e instanceof BindException) { + BindException ex = (BindException) e; List errors = ex.getAllErrors(); ObjectError error = errors.get(0); String msg = error.getDefaultMessage(); @@ -41,7 +42,7 @@ public class GlobleExceptionHandler { */ logger.error(String.format(msg, msg)); return ResultGeekQ.error(SESSION_ERROR); - }else { + } else { return ResultGeekQ.error(SYSTEM_ERROR); } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/Mapper/UserMapper.java b/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/Mapper/UserMapper.java index 70a3056..b19444b 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/Mapper/UserMapper.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/Mapper/UserMapper.java @@ -6,7 +6,6 @@ import com.geekq.miaosha.mybatis.vo.TeacherListVo; import com.geekq.miaosha.mybatis.vo.TeacherVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.omg.CORBA.INTERNAL; import java.util.List; @@ -23,11 +22,12 @@ public interface UserMapper { /** * 返回值时resulttype 与数据库字段一一对应 没有的话无法对应 + * * @param id * @param name * @return */ - public List getUserList(@Param("id") Integer id , @Param("name") String name); + public List getUserList(@Param("id") Integer id, @Param("name") String name); /** * 返回值是resultmap 可以对应实体类的字段 与 数据库 字段对应起来 @@ -36,12 +36,12 @@ public interface UserMapper { * @param name * @return */ - public List getUserListMap(@Param("id") Integer id , @Param("name") String name); + public List getUserListMap(@Param("id") Integer id, @Param("name") String name); - public List getTeacherAndUser( @Param("uId") Integer uId ); + public List getTeacherAndUser(@Param("uId") Integer uId); - public List getTeacherAndUserList( @Param("uId") List uId ); + public List getTeacherAndUserList(@Param("uId") List uId); - public List getTeacherAndUserListVo(@Param("uId") Integer uId ); + public List getTeacherAndUserListVo(@Param("uId") Integer uId); } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/vo/TeacherListVo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/vo/TeacherListVo.java index 7ef1289..29fb970 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/vo/TeacherListVo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/vo/TeacherListVo.java @@ -11,11 +11,11 @@ import java.io.Serializable; public class TeacherListVo implements Serializable { - private String tId ; + private String tId; - private Integer uId ; + private Integer uId; - private String tName ; + private String tName; private User userList; diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/vo/TeacherVo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/vo/TeacherVo.java index 255d5ed..cacd3be 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/vo/TeacherVo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/mybatis/vo/TeacherVo.java @@ -11,13 +11,13 @@ public class TeacherVo implements Serializable { private String uId; - private String tId ; + private String tId; - private String tName ; + private String tName; private String name; - private Integer age ; + private Integer age; - private String address ; + private String address; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQConfig.java b/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQConfig.java index 47261c6..6609f69 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQConfig.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQConfig.java @@ -10,90 +10,100 @@ import java.util.Map; @Configuration public class MQConfig { - /** - * /usr/sbin/rabbitmq-plugins enable rabbitmq_management - * mq页面 - */ - public static final String MIAOSHA_QUEUE = "miaosha.queue"; + /** + * /usr/sbin/rabbitmq-plugins enable rabbitmq_management + * mq页面 + */ + public static final String MIAOSHA_QUEUE = "miaosha.queue"; - public static final String EXCHANGE_TOPIC = "exchange_topic"; + public static final String EXCHANGE_TOPIC = "exchange_topic"; - public static final String MIAOSHA_MESSAGE = "miaosha_mess"; + public static final String MIAOSHA_MESSAGE = "miaosha_mess"; + + public static final String MIAOSHATEST = "miaoshatest"; + + public static final String QUEUE = "queue"; + public static final String TOPIC_QUEUE1 = "topic.queue1"; + public static final String TOPIC_QUEUE2 = "topic.queue2"; + public static final String HEADER_QUEUE = "header.queue"; + public static final String TOPIC_EXCHANGE = "topicExchage"; + public static final String FANOUT_EXCHANGE = "fanoutxchage"; + public static final String HEADERS_EXCHANGE = "headersExchage"; + + /** + * Direct模式 交换机Exchange + */ + @Bean + public Queue queue() { + return new Queue(QUEUE, true); + } + + /** + * Topic模式 交换机Exchange + */ + @Bean + public Queue topicQueue1() { + return new Queue(TOPIC_QUEUE1, true); + } + + @Bean + public Queue topicQueue2() { + return new Queue(TOPIC_QUEUE2, true); + } + + @Bean + public TopicExchange topicExchage() { + return new TopicExchange(TOPIC_EXCHANGE); + } + + @Bean + public Binding topicBinding1() { + return BindingBuilder.bind(topicQueue1()).to(topicExchage()).with("topic.key1"); + } + + @Bean + public Binding topicBinding2() { + return BindingBuilder.bind(topicQueue2()).to(topicExchage()).with("topic.#"); + } + + /** + * Fanout模式 交换机Exchange + */ + @Bean + public FanoutExchange fanoutExchage() { + return new FanoutExchange(FANOUT_EXCHANGE); + } + + @Bean + public Binding FanoutBinding1() { + return BindingBuilder.bind(topicQueue1()).to(fanoutExchage()); + } + + @Bean + public Binding FanoutBinding2() { + return BindingBuilder.bind(topicQueue2()).to(fanoutExchage()); + } + + /** + * Header模式 交换机Exchange + */ + @Bean + public HeadersExchange headersExchage() { + return new HeadersExchange(HEADERS_EXCHANGE); + } + + @Bean + public Queue headerQueue1() { + return new Queue(HEADER_QUEUE, true); + } + + @Bean + public Binding headerBinding() { + Map map = new HashMap(); + map.put("header1", "value1"); + map.put("header2", "value2"); + return BindingBuilder.bind(headerQueue1()).to(headersExchage()).whereAll(map).match(); + } - public static final String MIAOSHATEST = "miaoshatest"; - public static final String QUEUE = "queue"; - public static final String TOPIC_QUEUE1 = "topic.queue1"; - public static final String TOPIC_QUEUE2 = "topic.queue2"; - public static final String HEADER_QUEUE = "header.queue"; - public static final String TOPIC_EXCHANGE = "topicExchage"; - public static final String FANOUT_EXCHANGE = "fanoutxchage"; - public static final String HEADERS_EXCHANGE = "headersExchage"; - - /** - * Direct模式 交换机Exchange - * */ - @Bean - public Queue queue() { - return new Queue(QUEUE, true); - } - - /** - * Topic模式 交换机Exchange - * */ - @Bean - public Queue topicQueue1() { - return new Queue(TOPIC_QUEUE1, true); - } - @Bean - public Queue topicQueue2() { - return new Queue(TOPIC_QUEUE2, true); - } - @Bean - public TopicExchange topicExchage(){ - return new TopicExchange(TOPIC_EXCHANGE); - } - @Bean - public Binding topicBinding1() { - return BindingBuilder.bind(topicQueue1()).to(topicExchage()).with("topic.key1"); - } - @Bean - public Binding topicBinding2() { - return BindingBuilder.bind(topicQueue2()).to(topicExchage()).with("topic.#"); - } - /** - * Fanout模式 交换机Exchange - * */ - @Bean - public FanoutExchange fanoutExchage(){ - return new FanoutExchange(FANOUT_EXCHANGE); - } - @Bean - public Binding FanoutBinding1() { - return BindingBuilder.bind(topicQueue1()).to(fanoutExchage()); - } - @Bean - public Binding FanoutBinding2() { - return BindingBuilder.bind(topicQueue2()).to(fanoutExchage()); - } - /** - * Header模式 交换机Exchange - * */ - @Bean - public HeadersExchange headersExchage(){ - return new HeadersExchange(HEADERS_EXCHANGE); - } - @Bean - public Queue headerQueue1() { - return new Queue(HEADER_QUEUE, true); - } - @Bean - public Binding headerBinding() { - Map map = new HashMap(); - map.put("header1", "value1"); - map.put("header2", "value2"); - return BindingBuilder.bind(headerQueue1()).to(headersExchage()).whereAll(map).match(); - } - - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java b/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java index db0f0d7..b430d2c 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java @@ -13,7 +13,6 @@ import com.rabbitmq.client.Channel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,52 +22,51 @@ import java.io.IOException; @Service public class MQReceiver { - private static Logger log = LoggerFactory.getLogger(MQReceiver.class); - - @Autowired - RedisService redisService; - - @Autowired - GoodsService goodsService; - - @Autowired - OrderService orderService; - - @Autowired - MiaoshaService miaoshaService; + private static Logger log = LoggerFactory.getLogger(MQReceiver.class); - @Autowired - MiaoShaMessageService messageService ; - - @RabbitListener(queues=MQConfig.MIAOSHA_QUEUE) - public void receive(String message) { - log.info("receive message:"+message); - MiaoshaMessage mm = RedisService.stringToBean(message, MiaoshaMessage.class); - MiaoshaUser user = mm.getUser(); - long goodsId = mm.getGoodsId(); + @Autowired + RedisService redisService; - GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId); - int stock = goods.getStockCount(); - if(stock <= 0) { - return; - } - //判断是否已经秒杀到了 - MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(Long.valueOf(user.getNickname()), goodsId); - if(order != null) { - return; - } - //减库存 下订单 写入秒杀订单 - miaoshaService.miaosha(user, goods); - } + @Autowired + GoodsService goodsService; + + @Autowired + OrderService orderService; + + @Autowired + MiaoshaService miaoshaService; + + @Autowired + MiaoShaMessageService messageService; + + @RabbitListener(queues = MQConfig.MIAOSHA_QUEUE) + public void receive(String message) { + log.info("receive message:" + message); + MiaoshaMessage mm = RedisService.stringToBean(message, MiaoshaMessage.class); + MiaoshaUser user = mm.getUser(); + long goodsId = mm.getGoodsId(); + + GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId); + int stock = goods.getStockCount(); + if (stock <= 0) { + return; + } + //判断是否已经秒杀到了 + MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(Long.valueOf(user.getNickname()), goodsId); + if (order != null) { + return; + } + //减库存 下订单 写入秒杀订单 + miaoshaService.miaosha(user, goods); + } - - @RabbitListener(queues=MQConfig.MIAOSHATEST) - public void receiveMiaoShaMessage(Message message, Channel channel) throws IOException { - log.info("接受到的消息为:{}",message); - String messRegister = new String(message.getBody(), "UTF-8"); - channel.basicAck(message.getMessageProperties().getDeliveryTag(), true); - MiaoShaMessageVo msm = RedisService.stringToBean(messRegister, MiaoShaMessageVo.class); - messageService.insertMs(msm); - } + @RabbitListener(queues = MQConfig.MIAOSHATEST) + public void receiveMiaoShaMessage(Message message, Channel channel) throws IOException { + log.info("接受到的消息为:{}", message); + String messRegister = new String(message.getBody(), "UTF-8"); + channel.basicAck(message.getMessageProperties().getDeliveryTag(), true); + MiaoShaMessageVo msm = RedisService.stringToBean(messRegister, MiaoShaMessageVo.class); + messageService.insertMs(msm); + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java b/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java index 96aee07..57e586b 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java @@ -12,38 +12,40 @@ import org.springframework.stereotype.Service; @Service public class MQSender { - private static Logger log = LoggerFactory.getLogger(MQSender.class); - - @Autowired - AmqpTemplate amqpTemplate ; + private static Logger log = LoggerFactory.getLogger(MQSender.class); - @Autowired - private RabbitTemplate rabbitTemplate; + @Autowired + AmqpTemplate amqpTemplate; - public void sendMiaoshaMessage(MiaoshaMessage mm) { - String msg = RedisService.beanToString(mm); - log.info("send message:"+msg); - amqpTemplate.convertAndSend(MQConfig.MIAOSHA_QUEUE, msg); - } + @Autowired + private RabbitTemplate rabbitTemplate; - /** - * 站内信 - * @param mm - */ - public void sendMessage(MiaoshaMessage mm) { -// String msg = RedisService.beanToString(mm); - log.info("send message:"+"11111"); - rabbitTemplate.convertAndSend(MQConfig.EXCHANGE_TOPIC,"miaosha_*", "111111111"); - } + public void sendMiaoshaMessage(MiaoshaMessage mm) { + String msg = RedisService.beanToString(mm); + log.info("send message:" + msg); + amqpTemplate.convertAndSend(MQConfig.MIAOSHA_QUEUE, msg); + } /** * 站内信 + * + * @param mm + */ + public void sendMessage(MiaoshaMessage mm) { +// String msg = RedisService.beanToString(mm); + log.info("send message:" + "11111"); + rabbitTemplate.convertAndSend(MQConfig.EXCHANGE_TOPIC, "miaosha_*", "111111111"); + } + + /** + * 站内信 + * * @param */ public void sendRegisterMessage(MiaoShaMessageVo miaoShaMessageVo) { - String msg = RedisService.beanToString(miaoShaMessageVo); - log.info("send message:{}" , msg); - rabbitTemplate.convertAndSend(MQConfig.MIAOSHATEST,msg); + String msg = RedisService.beanToString(miaoShaMessageVo); + log.info("send message:{}", msg); + rabbitTemplate.convertAndSend(MQConfig.MIAOSHATEST, msg); // rabbitTemplate.convertAndSend(MQConfig.EXCHANGE_TOPIC,"miaosha_*", msg); } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java b/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java index 871d6b4..ffa61b9 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java @@ -3,18 +3,22 @@ package com.geekq.miaosha.rabbitmq; import com.geekq.miaosha.domain.MiaoshaUser; public class MiaoshaMessage { - private MiaoshaUser user; - private long goodsId; - public MiaoshaUser getUser() { - return user; - } - public void setUser(MiaoshaUser user) { - this.user = user; - } - public long getGoodsId() { - return goodsId; - } - public void setGoodsId(long goodsId) { - this.goodsId = goodsId; - } + private MiaoshaUser user; + private long goodsId; + + public MiaoshaUser getUser() { + return user; + } + + public void setUser(MiaoshaUser user) { + this.user = user; + } + + public long getGoodsId() { + return goodsId; + } + + public void setGoodsId(long goodsId) { + this.goodsId = goodsId; + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/BasePrefix.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/BasePrefix.java index 5e11fa6..9da654a 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/BasePrefix.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/BasePrefix.java @@ -1,19 +1,19 @@ package com.geekq.miaosha.redis; -public abstract class BasePrefix implements KeyPrefix { +public abstract class BasePrefix implements KeyPrefix { private int expireSeconds; - private String prefix ; + private String prefix; - public BasePrefix(int expireSeconds , String prefix ){ + public BasePrefix(int expireSeconds, String prefix) { - this.expireSeconds = expireSeconds ; + this.expireSeconds = expireSeconds; this.prefix = prefix; } public BasePrefix(String prefix) { - this(0,prefix); + this(0, prefix); } @Override @@ -23,11 +23,12 @@ public abstract class BasePrefix implements KeyPrefix { /** * 可确定获取唯一key + * * @return */ @Override public String getPrefix() { String className = getClass().getSimpleName(); - return className+":" +prefix; + return className + ":" + prefix; } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/DistributedLocker.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/DistributedLocker.java index 028268a..252645b 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/DistributedLocker.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/DistributedLocker.java @@ -10,5 +10,5 @@ public interface DistributedLocker { void lock(String lockKey, int timeout); - void lock(String lockKey, TimeUnit unit , int timeout); + void lock(String lockKey, TimeUnit unit, int timeout); } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/GoodsKey.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/GoodsKey.java index 6aa47e1..069f025 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/GoodsKey.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/GoodsKey.java @@ -1,12 +1,12 @@ package com.geekq.miaosha.redis; -public class GoodsKey extends BasePrefix{ +public class GoodsKey extends BasePrefix { - private GoodsKey(int expireSeconds, String prefix) { - super(expireSeconds, prefix); - } - public static GoodsKey getGoodsList = new GoodsKey(60, "gl"); - public static GoodsKey getGoodsDetail = new GoodsKey(60, "gd"); - public static GoodsKey getMiaoshaGoodsStock = new GoodsKey(0, "gs"); + public static GoodsKey getGoodsList = new GoodsKey(60, "gl"); + public static GoodsKey getGoodsDetail = new GoodsKey(60, "gd"); + public static GoodsKey getMiaoshaGoodsStock = new GoodsKey(0, "gs"); + private GoodsKey(int expireSeconds, String prefix) { + super(expireSeconds, prefix); + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java index 0b2e641..7574f98 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java @@ -2,8 +2,8 @@ package com.geekq.miaosha.redis; public interface KeyPrefix { - public int expireSeconds() ; + public int expireSeconds(); - public String getPrefix() ; + public String getPrefix(); } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java index 3c5c042..d7b42a4 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java @@ -1,11 +1,11 @@ package com.geekq.miaosha.redis; -public class MiaoShaUserKey extends BasePrefix{ - public static final int TOKEN_EXPIRE = 3600 *24*2; - public static MiaoShaUserKey token = new MiaoShaUserKey(TOKEN_EXPIRE,"tk") ; +public class MiaoShaUserKey extends BasePrefix { + public static final int TOKEN_EXPIRE = 3600 * 24 * 2; + public static MiaoShaUserKey token = new MiaoShaUserKey(TOKEN_EXPIRE, "tk"); public static MiaoShaUserKey getByNickName = new MiaoShaUserKey(0, "nickName"); - public MiaoShaUserKey(int expireSeconds ,String prefix) { - super(expireSeconds,prefix); + public MiaoShaUserKey(int expireSeconds, String prefix) { + super(expireSeconds, prefix); } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java index 889a191..c899df5 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java @@ -1,13 +1,13 @@ package com.geekq.miaosha.redis; -public class MiaoshaKey extends BasePrefix{ +public class MiaoshaKey extends BasePrefix { - private MiaoshaKey( int expireSeconds, String prefix) { - super(expireSeconds, prefix); - } - public static MiaoshaKey isGoodsOver = new MiaoshaKey(0, "go"); - public static MiaoshaKey getMiaoshaPath = new MiaoshaKey(60, "mp"); - public static MiaoshaKey getMiaoshaVerifyCode = new MiaoshaKey(300, "vc"); - public static MiaoshaKey getMiaoshaVerifyCodeRegister = new MiaoshaKey(300, "register"); + public static MiaoshaKey isGoodsOver = new MiaoshaKey(0, "go"); + public static MiaoshaKey getMiaoshaPath = new MiaoshaKey(60, "mp"); + public static MiaoshaKey getMiaoshaVerifyCode = new MiaoshaKey(300, "vc"); + public static MiaoshaKey getMiaoshaVerifyCodeRegister = new MiaoshaKey(300, "register"); + private MiaoshaKey(int expireSeconds, String prefix) { + super(expireSeconds, prefix); + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/OrderKey.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/OrderKey.java index f7985d6..3aea2f9 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/OrderKey.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/OrderKey.java @@ -2,10 +2,10 @@ package com.geekq.miaosha.redis; public class OrderKey extends BasePrefix { - public OrderKey( String prefix) { - super( prefix); - } - - public static OrderKey getMiaoshaOrderByUidGid = new OrderKey("moug"); + + + public OrderKey(String prefix) { + super(prefix); + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisConfig.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisConfig.java index f798da5..e6ef563 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisConfig.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisConfig.java @@ -4,7 +4,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component -@ConfigurationProperties(prefix="redis") +@ConfigurationProperties(prefix = "redis") public class RedisConfig { private String host; private int port; @@ -13,45 +13,59 @@ public class RedisConfig { private int poolMaxTotal; private int poolMaxIdle; private int poolMaxWait;//秒 + public String getHost() { return host; } + public void setHost(String host) { this.host = host; } + public int getPort() { return port; } + public void setPort(int port) { this.port = port; } + public int getTimeout() { return timeout; } + public void setTimeout(int timeout) { this.timeout = timeout; } + public String getPassword() { return password; } + public void setPassword(String password) { this.password = password; } + public int getPoolMaxTotal() { return poolMaxTotal; } + public void setPoolMaxTotal(int poolMaxTotal) { this.poolMaxTotal = poolMaxTotal; } + public int getPoolMaxIdle() { return poolMaxIdle; } + public void setPoolMaxIdle(int poolMaxIdle) { this.poolMaxIdle = poolMaxIdle; } + public int getPoolMaxWait() { return poolMaxWait; } + public void setPoolMaxWait(int poolMaxWait) { this.poolMaxWait = poolMaxWait; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java index e1bc05a..9fc9a11 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java @@ -3,25 +3,24 @@ package com.geekq.miaosha.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; - import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; @Service public class RedisPoolFactory { - @Autowired - RedisConfig redisConfig; - - @Bean - public JedisPool JedisPoolFactory() { - JedisPoolConfig poolConfig = new JedisPoolConfig(); - poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle()); - poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal()); - poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000); - JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(), - redisConfig.getTimeout()*1000, redisConfig.getPassword(), 0); - return jp; - } - + @Autowired + RedisConfig redisConfig; + + @Bean + public JedisPool JedisPoolFactory() { + JedisPoolConfig poolConfig = new JedisPoolConfig(); + poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle()); + poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal()); + poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000); + JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(), + redisConfig.getTimeout() * 1000, redisConfig.getPassword(), 0); + return jp; + } + } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisService.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisService.java index cc8ab5e..7e97e67 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisService.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedisService.java @@ -4,7 +4,10 @@ import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import redis.clients.jedis.*; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.ScanParams; +import redis.clients.jedis.ScanResult; import java.util.ArrayList; import java.util.List; @@ -12,194 +15,80 @@ import java.util.List; @Service @Slf4j public class RedisService { - - @Autowired - JedisPool jedisPool; + @Autowired + JedisPool jedisPool; - /** - * 设置失效时间 - * @param key - * @param value - * @return - */ - public Long setnx(String key ,String value){ - Jedis jedis =null; - Long result = null; - try { - jedis = jedisPool.getResource(); - result = jedis.setnx(key,value); - }catch (Exception e){ - log.error("expire key:{} error",key,e); - jedisPool.returnResource(jedis); - return result; - } - jedisPool.returnResource(jedis); - return result; - - } - /** - * 设置key的有效期,单位是秒 - * @param key - * @param exTime - * @return - */ - public Long expire(String key,int exTime){ - Jedis jedis = null; - Long result = null; - try { - jedis = jedisPool.getResource(); - result = jedis.expire(key,exTime); - } catch (Exception e) { - log.error("expire key:{} error",key,e); - jedisPool.returnBrokenResource(jedis); - return result; - } - jedisPool.returnResource(jedis); - return result; - } - - /** - * 获取当个对象 - * */ - public T get(KeyPrefix prefix, String key, Class clazz) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - String str = jedis.get(realKey); - T t = stringToBean(str, clazz); - return t; - }finally { - returnToPool(jedis); - } - } - - public String get(String key){ - Jedis jedis = null; - String result = null; - try { - jedis = jedisPool.getResource(); - result = jedis.get(key); - } catch (Exception e) { - log.error("expire key:{} error",key,e); - jedisPool.returnBrokenResource(jedis); - return result; + public static String beanToString(T value) { + if (value == null) { + return null; + } + Class clazz = value.getClass(); + if (clazz == int.class || clazz == Integer.class) { + return "" + value; + } else if (clazz == String.class) { + return (String) value; + } else if (clazz == long.class || clazz == Long.class) { + return "" + value; + } else { + return JSON.toJSONString(value); } - jedisPool.returnResource(jedis); - return result; } - - public String getset(String key,String value){ - Jedis jedis = null; - String result = null; - try { - jedis = jedisPool.getResource(); - result = jedis.getSet(key,value); - } catch (Exception e) { - log.error("expire key:{} error",key,e); - jedisPool.returnBrokenResource(jedis); - return result; + @SuppressWarnings("unchecked") + public static T stringToBean(String str, Class clazz) { + if (str == null || str.length() <= 0 || clazz == null) { + return null; + } + if (clazz == int.class || clazz == Integer.class) { + return (T) Integer.valueOf(str); + } else if (clazz == String.class) { + return (T) str; + } else if (clazz == long.class || clazz == Long.class) { + return (T) Long.valueOf(str); + } else { + return JSON.toJavaObject(JSON.parseObject(str), clazz); } - jedisPool.returnResource(jedis); - return result; } - /** - * 设置对象 - * */ - public boolean set(KeyPrefix prefix, String key, T value) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - String str = beanToString(value); - if(str == null || str.length() <= 0) { - return false; - } - //生成真正的key - String realKey = prefix.getPrefix() + key; - int seconds = prefix.expireSeconds(); - if(seconds <= 0) { - jedis.set(realKey, str); - }else { - jedis.setex(realKey, seconds, str); - } - return true; - }finally { - returnToPool(jedis); - } - } - - /** - * 判断key是否存在 - * */ - public boolean exists(KeyPrefix prefix, String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - return jedis.exists(realKey); - }finally { - returnToPool(jedis); - } - } - - /** - * 删除 - * */ - public boolean delete(KeyPrefix prefix, String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - long ret = jedis.del(realKey); - return ret > 0; - }finally { - returnToPool(jedis); - } - } - - /** - * 增加值 - * */ - public Long incr(KeyPrefix prefix, String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - return jedis.incr(realKey); - }finally { - returnToPool(jedis); - } - } - - /** - * 减少值 - * */ - public Long decr(KeyPrefix prefix, String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - return jedis.decr(realKey); - }finally { - returnToPool(jedis); - } - } - public Long del(String key){ + /** + * 设置失效时间 + * + * @param key + * @param value + * @return + */ + public Long setnx(String key, String value) { Jedis jedis = null; Long result = null; try { - jedis = jedisPool.getResource(); - result = jedis.del(key); + jedis = jedisPool.getResource(); + result = jedis.setnx(key, value); } catch (Exception e) { - log.error("del key:{} error",key,e); + log.error("expire key:{} error", key, e); + jedisPool.returnResource(jedis); + return result; + } + jedisPool.returnResource(jedis); + return result; + + } + + /** + * 设置key的有效期,单位是秒 + * + * @param key + * @param exTime + * @return + */ + public Long expire(String key, int exTime) { + Jedis jedis = null; + Long result = null; + try { + jedis = jedisPool.getResource(); + result = jedis.expire(key, exTime); + } catch (Exception e) { + log.error("expire key:{} error", key, e); jedisPool.returnBrokenResource(jedis); return result; } @@ -207,92 +96,207 @@ public class RedisService { return result; } + /** + * 获取当个对象 + */ + public T get(KeyPrefix prefix, String key, Class clazz) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + String str = jedis.get(realKey); + T t = stringToBean(str, clazz); + return t; + } finally { + returnToPool(jedis); + } + } - public boolean delete(KeyPrefix prefix) { - if(prefix == null) { - return false; - } - List keys = scanKeys(prefix.getPrefix()); - if(keys==null || keys.size() <= 0) { - return true; - } - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - jedis.del(keys.toArray(new String[0])); - return true; - } catch (final Exception e) { - e.printStackTrace(); - return false; - } finally { - if(jedis != null) { - jedis.close(); - } - } - } - - public List scanKeys(String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - List keys = new ArrayList(); - String cursor = "0"; - ScanParams sp = new ScanParams(); - sp.match("*"+key+"*"); - sp.count(100); - do{ - ScanResult ret = jedis.scan(cursor, sp); - List result = ret.getResult(); - if(result!=null && result.size() > 0){ - keys.addAll(result); - } - //再处理cursor - cursor = ret.getCursor(); - }while(!cursor.equals("0")); - return keys; - } finally { - if (jedis != null) { - jedis.close(); - } - } - } - - public static String beanToString(T value) { - if(value == null) { - return null; - } - Class clazz = value.getClass(); - if(clazz == int.class || clazz == Integer.class) { - return ""+value; - }else if(clazz == String.class) { - return (String)value; - }else if(clazz == long.class || clazz == Long.class) { - return ""+value; - }else { - return JSON.toJSONString(value); - } - } + public String get(String key) { + Jedis jedis = null; + String result = null; + try { + jedis = jedisPool.getResource(); + result = jedis.get(key); + } catch (Exception e) { + log.error("expire key:{} error", key, e); + jedisPool.returnBrokenResource(jedis); + return result; + } + jedisPool.returnResource(jedis); + return result; + } - @SuppressWarnings("unchecked") - public static T stringToBean(String str, Class clazz) { - if(str == null || str.length() <= 0 || clazz == null) { - return null; - } - if(clazz == int.class || clazz == Integer.class) { - return (T)Integer.valueOf(str); - }else if(clazz == String.class) { - return (T)str; - }else if(clazz == long.class || clazz == Long.class) { - return (T)Long.valueOf(str); - }else { - return JSON.toJavaObject(JSON.parseObject(str), clazz); - } - } + public String getset(String key, String value) { + Jedis jedis = null; + String result = null; + try { + jedis = jedisPool.getResource(); + result = jedis.getSet(key, value); + } catch (Exception e) { + log.error("expire key:{} error", key, e); + jedisPool.returnBrokenResource(jedis); + return result; + } + jedisPool.returnResource(jedis); + return result; + } - private void returnToPool(Jedis jedis) { - if(jedis != null) { - jedis.close(); - } - } + /** + * 设置对象 + */ + public boolean set(KeyPrefix prefix, String key, T value) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + String str = beanToString(value); + if (str == null || str.length() <= 0) { + return false; + } + //生成真正的key + String realKey = prefix.getPrefix() + key; + int seconds = prefix.expireSeconds(); + if (seconds <= 0) { + jedis.set(realKey, str); + } else { + jedis.setex(realKey, seconds, str); + } + return true; + } finally { + returnToPool(jedis); + } + } + + /** + * 判断key是否存在 + */ + public boolean exists(KeyPrefix prefix, String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + return jedis.exists(realKey); + } finally { + returnToPool(jedis); + } + } + + /** + * 删除 + */ + public boolean delete(KeyPrefix prefix, String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + long ret = jedis.del(realKey); + return ret > 0; + } finally { + returnToPool(jedis); + } + } + + /** + * 增加值 + */ + public Long incr(KeyPrefix prefix, String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + return jedis.incr(realKey); + } finally { + returnToPool(jedis); + } + } + + /** + * 减少值 + */ + public Long decr(KeyPrefix prefix, String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + return jedis.decr(realKey); + } finally { + returnToPool(jedis); + } + } + + public Long del(String key) { + Jedis jedis = null; + Long result = null; + try { + jedis = jedisPool.getResource(); + result = jedis.del(key); + } catch (Exception e) { + log.error("del key:{} error", key, e); + jedisPool.returnBrokenResource(jedis); + return result; + } + jedisPool.returnResource(jedis); + return result; + } + + public boolean delete(KeyPrefix prefix) { + if (prefix == null) { + return false; + } + List keys = scanKeys(prefix.getPrefix()); + if (keys == null || keys.size() <= 0) { + return true; + } + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + jedis.del(keys.toArray(new String[0])); + return true; + } catch (final Exception e) { + e.printStackTrace(); + return false; + } finally { + if (jedis != null) { + jedis.close(); + } + } + } + + public List scanKeys(String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + List keys = new ArrayList(); + String cursor = "0"; + ScanParams sp = new ScanParams(); + sp.match("*" + key + "*"); + sp.count(100); + do { + ScanResult ret = jedis.scan(cursor, sp); + List result = ret.getResult(); + if (result != null && result.size() > 0) { + keys.addAll(result); + } + //再处理cursor + cursor = ret.getCursor(); + } while (!cursor.equals("0")); + return keys; + } finally { + if (jedis != null) { + jedis.close(); + } + } + } + + private void returnToPool(Jedis jedis) { + if (jedis != null) { + jedis.close(); + } + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedissLockUtil.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedissLockUtil.java index 954467e..4a37354 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedissLockUtil.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/RedissLockUtil.java @@ -4,7 +4,6 @@ import java.util.concurrent.TimeUnit; /** * redis分布式锁帮助类 - * */ public class RedissLockUtil { private static DistributedLocker redissLock; @@ -23,6 +22,7 @@ public class RedissLockUtil { /** * 带超时的锁 + * * @param lockKey * @param timeout 超时时间 单位:秒 */ @@ -32,11 +32,12 @@ public class RedissLockUtil { /** * 带超时的锁 + * * @param lockKey - * @param unit 时间单位 + * @param unit 时间单位 * @param timeout 超时时间 */ - public static void lock(String lockKey, TimeUnit unit , int timeout) { + public static void lock(String lockKey, TimeUnit unit, int timeout) { redissLock.lock(lockKey, unit, timeout); } } \ No newline at end of file diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/Userkey.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/Userkey.java index c07fd8d..70f9d9b 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/Userkey.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/Userkey.java @@ -2,12 +2,11 @@ package com.geekq.miaosha.redis; public class Userkey extends BasePrefix { + public static Userkey getById = new Userkey("id"); + public static Userkey getByName = new Userkey("name"); + private Userkey(String prefix) { - super( prefix); + super(prefix); } - public static Userkey getById = new Userkey("id") ; - - public static Userkey getByName = new Userkey("name") ; - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/OptimisticLockTest.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/OptimisticLockTest.java index 79b0264..d066583 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/OptimisticLockTest.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/OptimisticLockTest.java @@ -1,93 +1,91 @@ package com.geekq.miaosha.redis.redismanager; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.Transaction; + import java.util.List; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import org.springframework.beans.factory.annotation.Autowired; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.Transaction; - /** * redis乐观锁实例 - * @author linbingwen * + * @author linbingwen */ public class OptimisticLockTest { - public static void main(String[] args) throws InterruptedException { - long starTime=System.currentTimeMillis(); + public static void main(String[] args) throws InterruptedException { + long starTime = System.currentTimeMillis(); - initPrduct(); - initClient(); - printResult(); + initPrduct(); + initClient(); + printResult(); - long endTime=System.currentTimeMillis(); - long Time=endTime-starTime; - System.out.println("程序运行时间: "+Time+"ms"); + long endTime = System.currentTimeMillis(); + long Time = endTime - starTime; + System.out.println("程序运行时间: " + Time + "ms"); - } + } - /** - * 输出结果 - */ - public static void printResult() { - Jedis jedis = RedisUtil.getInstance().getJedis(); - Set set = jedis.smembers("clientList"); + /** + * 输出结果 + */ + public static void printResult() { + Jedis jedis = RedisUtil.getInstance().getJedis(); + Set set = jedis.smembers("clientList"); - int i = 1; - for (String value : set) { - System.out.println("第" + i++ + "个抢到商品,"+value + " "); - } + int i = 1; + for (String value : set) { + System.out.println("第" + i++ + "个抢到商品," + value + " "); + } - RedisUtil.returnResource(jedis); - } + RedisUtil.returnResource(jedis); + } - /* - * 初始化顾客开始抢商品 - */ - public static void initClient() { - ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); - int clientNum = 10000;// 模拟客户数目 - for (int i = 0; i < clientNum; i++) { - cachedThreadPool.execute(new ClientThread(i)); - } - cachedThreadPool.shutdown(); + /* + * 初始化顾客开始抢商品 + */ + public static void initClient() { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + int clientNum = 10000;// 模拟客户数目 + for (int i = 0; i < clientNum; i++) { + cachedThreadPool.execute(new ClientThread(i)); + } + cachedThreadPool.shutdown(); - while(true){ - if(cachedThreadPool.isTerminated()){ - System.out.println("所有的线程都结束了!"); - break; - } - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } + while (true) { + if (cachedThreadPool.isTerminated()) { + System.out.println("所有的线程都结束了!"); + break; + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } - /** - * 初始化商品个数 - */ - public static void initPrduct() { - int prdNum = 100;// 商品个数 - String key = "prdNum"; - String clientList = "clientList";// 抢购到商品的顾客列表 - Jedis jedis = RedisUtil.getInstance().getJedis(); + /** + * 初始化商品个数 + */ + public static void initPrduct() { + int prdNum = 100;// 商品个数 + String key = "prdNum"; + String clientList = "clientList";// 抢购到商品的顾客列表 + Jedis jedis = RedisUtil.getInstance().getJedis(); - if (jedis.exists(key)) { - jedis.del(key); - } + if (jedis.exists(key)) { + jedis.del(key); + } - if (jedis.exists(clientList)) { - jedis.del(clientList); - } + if (jedis.exists(clientList)) { + jedis.del(clientList); + } - jedis.set(key, String.valueOf(prdNum));// 初始化 - RedisUtil.returnResource(jedis); - } + jedis.set(key, String.valueOf(prdNum));// 初始化 + RedisUtil.returnResource(jedis); + } } @@ -95,53 +93,52 @@ public class OptimisticLockTest { * 顾客线程 * * @author linbingwen - * */ class ClientThread implements Runnable { - Jedis jedis = null; - String key = "prdNum";// 商品主键 - String clientList = "clientList";//// 抢购到商品的顾客列表主键 - String clientName; + Jedis jedis = null; + String key = "prdNum";// 商品主键 + String clientList = "clientList";//// 抢购到商品的顾客列表主键 + String clientName; - public ClientThread(int num) { - clientName = "编号=" + num; - } + public ClientThread(int num) { + clientName = "编号=" + num; + } - public void run() { - try { - Thread.sleep((int)(Math.random()*5000));// 随机睡眠一下 - } catch (InterruptedException e1) { - } - while (true) { - System.out.println("顾客:" + clientName + "开始抢商品"); - jedis = RedisUtil.getInstance().getJedis(); - try { - jedis.watch(key); - int prdNum = Integer.parseInt(jedis.get(key));// 当前商品个数 - if (prdNum > 0) { - Transaction transaction = jedis.multi(); - transaction.set(key, String.valueOf(prdNum - 1)); - List result = transaction.exec(); - if (result == null || result.isEmpty()) { - System.out.println("悲剧了,顾客:" + clientName + "没有抢到商品");// 可能是watch-key被外部修改,或者是数据操作被驳回 - } else { - jedis.sadd(clientList, clientName);// 抢到商品记录一下 - System.out.println("好高兴,顾客:" + clientName + "抢到商品"); - break; - } - } else { - System.out.println("悲剧了,库存为0,顾客:" + clientName + "没有抢到商品"); - break; - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - jedis.unwatch(); - RedisUtil.returnResource(jedis); - } + public void run() { + try { + Thread.sleep((int) (Math.random() * 5000));// 随机睡眠一下 + } catch (InterruptedException e1) { + } + while (true) { + System.out.println("顾客:" + clientName + "开始抢商品"); + jedis = RedisUtil.getInstance().getJedis(); + try { + jedis.watch(key); + int prdNum = Integer.parseInt(jedis.get(key));// 当前商品个数 + if (prdNum > 0) { + Transaction transaction = jedis.multi(); + transaction.set(key, String.valueOf(prdNum - 1)); + List result = transaction.exec(); + if (result == null || result.isEmpty()) { + System.out.println("悲剧了,顾客:" + clientName + "没有抢到商品");// 可能是watch-key被外部修改,或者是数据操作被驳回 + } else { + jedis.sadd(clientList, clientName);// 抢到商品记录一下 + System.out.println("好高兴,顾客:" + clientName + "抢到商品"); + break; + } + } else { + System.out.println("悲剧了,库存为0,顾客:" + clientName + "没有抢到商品"); + break; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + jedis.unwatch(); + RedisUtil.returnResource(jedis); + } - } - } + } + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLock.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLock.java index a774c64..84ae696 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLock.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLock.java @@ -1,6 +1,5 @@ package com.geekq.miaosha.redis.redismanager; -import org.springframework.transaction.annotation.Transactional; import redis.clients.jedis.Jedis; import redis.clients.jedis.Transaction; @@ -9,43 +8,43 @@ import java.util.UUID; public class RedisLock { - public String getLock(String key , int timeOut){ + public String getLock(String key, int timeOut) { try { - Jedis jedis = RedisManager.getJedis(); - String value = UUID.randomUUID().toString(); - long end =System.currentTimeMillis()+timeOut; - while (System.currentTimeMillis() list = transaction.exec(); - if(list ==null){ + if (list == null) { continue; } jedis.unwatch(); diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLua.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLua.java index 5dcd78e..00d3288 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLua.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLua.java @@ -54,20 +54,20 @@ public class RedisLua { try { jedis = RedisManager.getJedis(); - String count = - "local num=redis.call('get',KEYS[1]) return num"; - List keys = new ArrayList(); - keys.add(key); - List argves = new ArrayList(); - jedis.auth("youxin11"); - String luaScript = jedis.scriptLoad(count); - System.out.println(luaScript); - object = jedis.evalsha(luaScript, keys, argves); + String count = + "local num=redis.call('get',KEYS[1]) return num"; + List keys = new ArrayList(); + keys.add(key); + List argves = new ArrayList(); + jedis.auth("youxin11"); + String luaScript = jedis.scriptLoad(count); + System.out.println(luaScript); + object = jedis.evalsha(luaScript, keys, argves); } catch (Exception e) { - logger.error("统计访问次数失败!!!",e); + logger.error("统计访问次数失败!!!", e); return "0"; } - return object; + return object; } /** @@ -89,7 +89,7 @@ public class RedisLua { System.out.println(luaScript); jedis.evalsha(luaScript, keys, argves); } catch (Exception e) { - logger.error("统计访问次数失败!!!",e); + logger.error("统计访问次数失败!!!", e); } } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisManager.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisManager.java index 8209995..991aa7e 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisManager.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisManager.java @@ -12,11 +12,11 @@ public class RedisManager { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxWaitMillis(20); jedisPoolConfig.setMaxIdle(10); - jedisPool = new JedisPool(jedisPoolConfig,"39.107.245.253"); + jedisPool = new JedisPool(jedisPoolConfig, "39.107.245.253"); } - public static Jedis getJedis() throws Exception{ - if(null!=jedisPool){ + public static Jedis getJedis() throws Exception { + if (null != jedisPool) { return jedisPool.getResource(); } throw new Exception("Jedispool was not init !!!"); diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisUtil.java b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisUtil.java index 0f082a7..4235625 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisUtil.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/redis/redismanager/RedisUtil.java @@ -18,12 +18,6 @@ public class RedisUtil { private static RedisUtil ru = new RedisUtil(); - public static void main(String[] args) { - RedisUtil redisUtil = RedisUtil.getInstance(); - redisUtil.set("test", "test"); - LOGGER.info(redisUtil.get("test")); - } - private RedisUtil() { if (pool == null) { String ip = "10.75.202.11"; @@ -38,15 +32,33 @@ public class RedisUtil { } - public Jedis getJedis() { - Jedis jedis = pool.getResource(); - return jedis; + public static void main(String[] args) { + RedisUtil redisUtil = RedisUtil.getInstance(); + redisUtil.set("test", "test"); + LOGGER.info(redisUtil.get("test")); } public static RedisUtil getInstance() { return ru; } + public static void returnResource(JedisPool pool, Jedis jedis) { + if (jedis != null) { + pool.returnResource(jedis); + } + } + + public static void returnResource(Jedis jedis) { + if (jedis != null) { + pool.returnResource(jedis); + } + } + + public Jedis getJedis() { + Jedis jedis = pool.getResource(); + return jedis; + } + public String get(String key) { Jedis jedis = null; String value = null; @@ -75,7 +87,6 @@ public class RedisUtil { } } - public Long del(String... keys) { Jedis jedis = null; try { @@ -106,7 +117,6 @@ public class RedisUtil { return res; } - public Boolean exists(String key) { Jedis jedis = null; try { @@ -121,7 +131,6 @@ public class RedisUtil { } } - public Long setnx(String key, String value) { Jedis jedis = null; try { @@ -136,7 +145,6 @@ public class RedisUtil { } } - public String setex(String key, String value, int seconds) { Jedis jedis = null; String res = null; @@ -196,7 +204,6 @@ public class RedisUtil { return res; } - public Long msetnx(String... keysvalues) { Jedis jedis = null; Long res = 0L; @@ -212,7 +219,6 @@ public class RedisUtil { return res; } - public String getset(String key, String value) { Jedis jedis = null; String res = null; @@ -228,7 +234,6 @@ public class RedisUtil { return res; } - public String getrange(String key, int startOffset, int endOffset) { Jedis jedis = null; String res = null; @@ -244,7 +249,6 @@ public class RedisUtil { return res; } - public Long incr(String key) { Jedis jedis = null; Long res = null; @@ -260,7 +264,6 @@ public class RedisUtil { return res; } - public Long incrBy(String key, Long integer) { Jedis jedis = null; Long res = null; @@ -276,7 +279,6 @@ public class RedisUtil { return res; } - public Long decr(String key) { Jedis jedis = null; Long res = null; @@ -292,7 +294,6 @@ public class RedisUtil { return res; } - public Long decrBy(String key, Long integer) { Jedis jedis = null; Long res = null; @@ -308,7 +309,6 @@ public class RedisUtil { return res; } - public Long serlen(String key) { Jedis jedis = null; Long res = null; @@ -324,7 +324,6 @@ public class RedisUtil { return res; } - public Long hset(String key, String field, String value) { Jedis jedis = null; Long res = null; @@ -340,7 +339,6 @@ public class RedisUtil { return res; } - public Long hsetnx(String key, String field, String value) { Jedis jedis = null; Long res = null; @@ -356,7 +354,6 @@ public class RedisUtil { return res; } - public String hmset(String key, Map hash) { Jedis jedis = null; String res = null; @@ -372,7 +369,6 @@ public class RedisUtil { return res; } - public String hget(String key, String field) { Jedis jedis = null; String res = null; @@ -388,7 +384,6 @@ public class RedisUtil { return res; } - public List hmget(String key, String... fields) { Jedis jedis = null; List res = null; @@ -404,7 +399,6 @@ public class RedisUtil { return res; } - public Long hincrby(String key, String field, Long value) { Jedis jedis = null; Long res = null; @@ -420,7 +414,6 @@ public class RedisUtil { return res; } - public Boolean hexists(String key, String field) { Jedis jedis = null; Boolean res = false; @@ -436,7 +429,6 @@ public class RedisUtil { return res; } - public Long hlen(String key) { Jedis jedis = null; Long res = null; @@ -453,7 +445,6 @@ public class RedisUtil { } - public Long hdel(String key, String... fields) { Jedis jedis = null; Long res = null; @@ -469,7 +460,6 @@ public class RedisUtil { return res; } - public Set hkeys(String key) { Jedis jedis = null; Set res = null; @@ -485,7 +475,6 @@ public class RedisUtil { return res; } - public List hvals(String key) { Jedis jedis = null; List res = null; @@ -501,7 +490,6 @@ public class RedisUtil { return res; } - public Map hgetall(String key) { Jedis jedis = null; Map res = null; @@ -516,7 +504,6 @@ public class RedisUtil { return res; } - public Long lpush(String key, String... strs) { Jedis jedis = null; Long res = null; @@ -532,7 +519,6 @@ public class RedisUtil { return res; } - public Long rpush(String key, String... strs) { Jedis jedis = null; Long res = null; @@ -548,7 +534,6 @@ public class RedisUtil { return res; } - public String lset(String key, Long index, String value) { Jedis jedis = null; String res = null; @@ -564,7 +549,6 @@ public class RedisUtil { return res; } - public Long lrem(String key, long count, String value) { Jedis jedis = null; Long res = null; @@ -580,7 +564,6 @@ public class RedisUtil { return res; } - public String ltrim(String key, long start, long end) { Jedis jedis = null; String res = null; @@ -596,7 +579,6 @@ public class RedisUtil { return res; } - synchronized public String lpop(String key) { Jedis jedis = null; String res = null; @@ -612,7 +594,6 @@ public class RedisUtil { return res; } - synchronized public String rpop(String key) { Jedis jedis = null; String res = null; @@ -628,7 +609,6 @@ public class RedisUtil { return res; } - public String rpoplpush(String srckey, String dstkey) { Jedis jedis = null; String res = null; @@ -644,7 +624,6 @@ public class RedisUtil { return res; } - public String lindex(String key, long index) { Jedis jedis = null; String res = null; @@ -660,7 +639,6 @@ public class RedisUtil { return res; } - public Long llen(String key) { Jedis jedis = null; Long res = null; @@ -676,7 +654,6 @@ public class RedisUtil { return res; } - public List lrange(String key, long start, long end) { Jedis jedis = null; List res = null; @@ -692,7 +669,6 @@ public class RedisUtil { return res; } - public Long sadd(String key, String... members) { Jedis jedis = null; Long res = null; @@ -708,7 +684,6 @@ public class RedisUtil { return res; } - public Long srem(String key, String... members) { Jedis jedis = null; Long res = null; @@ -724,7 +699,6 @@ public class RedisUtil { return res; } - public String spop(String key) { Jedis jedis = null; String res = null; @@ -740,7 +714,6 @@ public class RedisUtil { return res; } - public Set sdiff(String... keys) { Jedis jedis = null; Set res = null; @@ -756,7 +729,6 @@ public class RedisUtil { return res; } - public Long sdiffstore(String dstkey, String... keys) { Jedis jedis = null; Long res = null; @@ -772,7 +744,6 @@ public class RedisUtil { return res; } - public Set sinter(String... keys) { Jedis jedis = null; Set res = null; @@ -788,7 +759,6 @@ public class RedisUtil { return res; } - public Long sinterstore(String dstkey, String... keys) { Jedis jedis = null; Long res = null; @@ -804,7 +774,6 @@ public class RedisUtil { return res; } - public Set sunion(String... keys) { Jedis jedis = null; Set res = null; @@ -820,7 +789,6 @@ public class RedisUtil { return res; } - public Long sunionstore(String dstkey, String... keys) { Jedis jedis = null; Long res = null; @@ -836,7 +804,6 @@ public class RedisUtil { return res; } - public Long smove(String srckey, String dstkey, String member) { Jedis jedis = null; Long res = null; @@ -852,7 +819,6 @@ public class RedisUtil { return res; } - public Long scard(String key) { Jedis jedis = null; Long res = null; @@ -868,7 +834,6 @@ public class RedisUtil { return res; } - public Boolean sismember(String key, String member) { Jedis jedis = null; Boolean res = null; @@ -884,7 +849,6 @@ public class RedisUtil { return res; } - public String srandmember(String key) { Jedis jedis = null; String res = null; @@ -900,7 +864,6 @@ public class RedisUtil { return res; } - public Set smembers(String key) { Jedis jedis = null; Set res = null; @@ -916,7 +879,6 @@ public class RedisUtil { return res; } - public Long zadd(String key, double score, String member) { Jedis jedis = null; Long res = null; @@ -932,7 +894,6 @@ public class RedisUtil { return res; } - public Long zrem(String key, String... members) { Jedis jedis = null; Long res = null; @@ -948,7 +909,6 @@ public class RedisUtil { return res; } - public Double zincrby(String key, double score, String member) { Jedis jedis = null; Double res = null; @@ -964,7 +924,6 @@ public class RedisUtil { return res; } - public Long zrank(String key, String member) { Jedis jedis = null; Long res = null; @@ -980,7 +939,6 @@ public class RedisUtil { return res; } - public Long zrevrank(String key, String member) { Jedis jedis = null; Long res = null; @@ -996,7 +954,6 @@ public class RedisUtil { return res; } - public Set zrevrange(String key, long start, long end) { Jedis jedis = null; Set res = null; @@ -1012,7 +969,6 @@ public class RedisUtil { return res; } - public Set zrangebyscore(String key, String max, String min) { Jedis jedis = null; Set res = null; @@ -1028,7 +984,6 @@ public class RedisUtil { return res; } - public Set zrangeByScore(String key, double max, double min) { Jedis jedis = null; Set res = null; @@ -1044,7 +999,6 @@ public class RedisUtil { return res; } - public Long zcount(String key, String min, String max) { Jedis jedis = null; Long res = null; @@ -1060,7 +1014,6 @@ public class RedisUtil { return res; } - public Long zcard(String key) { Jedis jedis = null; Long res = null; @@ -1076,7 +1029,6 @@ public class RedisUtil { return res; } - public Double zscore(String key, String member) { Jedis jedis = null; Double res = null; @@ -1092,7 +1044,6 @@ public class RedisUtil { return res; } - public Long zremrangeByRank(String key, long start, long end) { Jedis jedis = null; Long res = null; @@ -1108,7 +1059,6 @@ public class RedisUtil { return res; } - public Long zremrangeByScore(String key, double start, double end) { Jedis jedis = null; Long res = null; @@ -1124,7 +1074,6 @@ public class RedisUtil { return res; } - public Set keys(String pattern) { Jedis jedis = null; Set res = null; @@ -1140,7 +1089,6 @@ public class RedisUtil { return res; } - public String type(String key) { Jedis jedis = null; String res = null; @@ -1155,18 +1103,4 @@ public class RedisUtil { } return res; } - - - public static void returnResource(JedisPool pool, Jedis jedis) { - if (jedis != null) { - pool.returnResource(jedis); - } - } - - - public static void returnResource(Jedis jedis) { - if (jedis != null) { - pool.returnResource(jedis); - } - } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/GoodsService.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/GoodsService.java index 3b6b1b0..33654f4 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/GoodsService.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/GoodsService.java @@ -10,26 +10,25 @@ import java.util.List; @Service public class GoodsService { - - @Autowired - GoodsDao goodsDao; + + @Autowired + GoodsDao goodsDao; - public List listGoodsVo(){ - return goodsDao.listGoodsVo(); - } + public List listGoodsVo() { + return goodsDao.listGoodsVo(); + } + + public GoodsVo getGoodsVoByGoodsId(long goodsId) { + return goodsDao.getGoodsVoByGoodsId(goodsId); + } + + public boolean reduceStock(GoodsVo goods) { + MiaoshaGoods g = new MiaoshaGoods(); + g.setGoodsId(goods.getId()); + int ret = goodsDao.reduceStock(g); + return ret > 0; + } - public GoodsVo getGoodsVoByGoodsId(long goodsId) { - return goodsDao.getGoodsVoByGoodsId(goodsId); - } - public boolean reduceStock(GoodsVo goods) { - MiaoshaGoods g = new MiaoshaGoods(); - g.setGoodsId(goods.getId()); - int ret = goodsDao.reduceStock(g); - return ret > 0; - } - - - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoShaMessageService.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoShaMessageService.java index cbab683..4a247fc 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoShaMessageService.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoShaMessageService.java @@ -17,14 +17,14 @@ public class MiaoShaMessageService { @Autowired private MiaoShaMessageDao messageDao; - public List getmessageUserList( Long userId , Integer status ){ - return messageDao.listMiaoShaMessageByUserId(userId,status); + public List getmessageUserList(Long userId, Integer status) { + return messageDao.listMiaoShaMessageByUserId(userId, status); } @Transactional(rollbackFor = Exception.class) - public void insertMs(MiaoShaMessageVo miaoShaMessageVo){ - MiaoShaMessageUser mu = new MiaoShaMessageUser() ; + public void insertMs(MiaoShaMessageVo miaoShaMessageVo) { + MiaoShaMessageUser mu = new MiaoShaMessageUser(); mu.setUserId(miaoShaMessageVo.getUserId()); mu.setMessageId(miaoShaMessageVo.getMessageId()); messageDao.insertMiaoShaMessageUser(mu); diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java index a16435a..0f469da 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java @@ -17,7 +17,6 @@ import org.springframework.stereotype.Service; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; - import java.util.Date; import static com.geekq.miaosha.common.enums.ResultStatus.*; @@ -25,42 +24,42 @@ import static com.geekq.miaosha.common.enums.ResultStatus.*; @Service public class MiaoShaUserService { - public static final String COOKIE_NAME_TOKEN = "token" ; + public static final String COOKIE_NAME_TOKEN = "token"; private static Logger logger = LoggerFactory.getLogger(MiaoShaUserService.class); @Autowired - private MiaoShaUserDao miaoShaUserDao ; + private MiaoShaUserDao miaoShaUserDao; @Autowired - private RedisService redisService ; + private RedisService redisService; @Autowired - private MQSender sender ; + private MQSender sender; - public MiaoshaUser getByToken(HttpServletResponse response , String token) { + public MiaoshaUser getByToken(HttpServletResponse response, String token) { - if(StringUtils.isEmpty(token)){ - return null ; + if (StringUtils.isEmpty(token)) { + return null; } - MiaoshaUser user =redisService.get(MiaoShaUserKey.token,token,MiaoshaUser.class) ; - if(user!=null) { + MiaoshaUser user = redisService.get(MiaoShaUserKey.token, token, MiaoshaUser.class); + if (user != null) { addCookie(response, token, user); } - return user ; + return user; } public MiaoshaUser getByNickName(String nickName) { //取缓存 - MiaoshaUser user = redisService.get(MiaoShaUserKey.getByNickName, ""+nickName, MiaoshaUser.class); - if(user != null) { + MiaoshaUser user = redisService.get(MiaoShaUserKey.getByNickName, "" + nickName, MiaoshaUser.class); + if (user != null) { return user; } //取数据库 user = miaoShaUserDao.getByNickname(nickName); - if(user != null) { - redisService.set(MiaoShaUserKey.getByNickName, ""+nickName, user); + if (user != null) { + redisService.set(MiaoShaUserKey.getByNickName, "" + nickName, user); } return user; } @@ -70,7 +69,7 @@ public class MiaoShaUserService { public boolean updatePassword(String token, String nickName, String formPass) { //取user MiaoshaUser user = getByNickName(nickName); - if(user == null) { + if (user == null) { throw new GlobleException(MOBILE_NOT_EXIST); } //更新数据库 @@ -79,17 +78,17 @@ public class MiaoShaUserService { toBeUpdate.setPassword(MD5Utils.formPassToDBPass(formPass, user.getSalt())); miaoShaUserDao.update(toBeUpdate); //处理缓存 - redisService.delete(MiaoShaUserKey.getByNickName, ""+nickName); + redisService.delete(MiaoShaUserKey.getByNickName, "" + nickName); user.setPassword(toBeUpdate.getPassword()); redisService.set(MiaoShaUserKey.token, token, user); return true; } - public boolean register(HttpServletResponse response , String userName , String passWord , String salt) { - MiaoshaUser miaoShaUser = new MiaoshaUser(); + public boolean register(HttpServletResponse response, String userName, String passWord, String salt) { + MiaoshaUser miaoShaUser = new MiaoshaUser(); miaoShaUser.setNickname(userName); - String DBPassWord = MD5Utils.formPassToDBPass(passWord , salt); + String DBPassWord = MD5Utils.formPassToDBPass(passWord, salt); miaoShaUser.setPassword(DBPassWord); miaoShaUser.setRegisterDate(new Date()); miaoShaUser.setSalt(salt); @@ -97,69 +96,68 @@ public class MiaoShaUserService { try { miaoShaUserDao.insertMiaoShaUser(miaoShaUser); MiaoshaUser user = miaoShaUserDao.getByNickname(miaoShaUser.getNickname()); - if(user == null){ + if (user == null) { return false; } //生成cookie 将session返回游览器 分布式session - String token= UUIDUtil.uuid(); + String token = UUIDUtil.uuid(); addCookie(response, token, user); } catch (Exception e) { - logger.error("注册失败",e); + logger.error("注册失败", e); return false; } return true; } - public boolean login(HttpServletResponse response , LoginVo loginVo) { - if(loginVo ==null){ - throw new GlobleException(SYSTEM_ERROR); + public boolean login(HttpServletResponse response, LoginVo loginVo) { + if (loginVo == null) { + throw new GlobleException(SYSTEM_ERROR); } - String mobile =loginVo.getMobile(); - String password =loginVo.getPassword(); + String mobile = loginVo.getMobile(); + String password = loginVo.getPassword(); MiaoshaUser user = getByNickName(mobile); - if(user == null) { + if (user == null) { throw new GlobleException(MOBILE_NOT_EXIST); } String dbPass = user.getPassword(); String saltDb = user.getSalt(); - String calcPass = MD5Utils.formPassToDBPass(password,saltDb); - if(!calcPass.equals(dbPass)){ + String calcPass = MD5Utils.formPassToDBPass(password, saltDb); + if (!calcPass.equals(dbPass)) { throw new GlobleException(PASSWORD_ERROR); } //生成cookie 将session返回游览器 分布式session - String token= UUIDUtil.uuid(); + String token = UUIDUtil.uuid(); addCookie(response, token, user); - return true ; + return true; } - - - public String createToken(HttpServletResponse response , LoginVo loginVo) { - if(loginVo ==null){ - throw new GlobleException(SYSTEM_ERROR); + public String createToken(HttpServletResponse response, LoginVo loginVo) { + if (loginVo == null) { + throw new GlobleException(SYSTEM_ERROR); } - String mobile =loginVo.getMobile(); - String password =loginVo.getPassword(); + String mobile = loginVo.getMobile(); + String password = loginVo.getPassword(); MiaoshaUser user = getByNickName(mobile); - if(user == null) { + if (user == null) { throw new GlobleException(MOBILE_NOT_EXIST); } String dbPass = user.getPassword(); String saltDb = user.getSalt(); - String calcPass = MD5Utils.formPassToDBPass(password,saltDb); - if(!calcPass.equals(dbPass)){ + String calcPass = MD5Utils.formPassToDBPass(password, saltDb); + if (!calcPass.equals(dbPass)) { throw new GlobleException(PASSWORD_ERROR); } //生成cookie 将session返回游览器 分布式session - String token= UUIDUtil.uuid(); + String token = UUIDUtil.uuid(); addCookie(response, token, user); - return token ; + return token; } + private void addCookie(HttpServletResponse response, String token, MiaoshaUser user) { redisService.set(MiaoShaUserKey.token, token, user); Cookie cookie = new Cookie(COOKIE_NAME_TOKEN, token); diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoshaService.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoshaService.java index 556092c..92cb3d8 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoshaService.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/MiaoshaService.java @@ -20,188 +20,186 @@ import java.util.Random; @Service public class MiaoshaService { - - @Autowired - GoodsService goodsService; - - @Autowired - OrderService orderService; - @Autowired - RedisService redisService; - @Transactional - public OrderInfo miaosha(MiaoshaUser user, GoodsVo goods) { - //减库存 下订单 写入秒杀订单 - boolean success = goodsService.reduceStock(goods); - if(success){ - return orderService.createOrder(user,goods) ; - }else { - //如果库存不存在则内存标记为true - setGoodsOver(goods.getId()); - return null; - } - } + private static char[] ops = new char[]{'+', '-', '*'}; + @Autowired + GoodsService goodsService; + @Autowired + OrderService orderService; + @Autowired + RedisService redisService; + private static int calc(String exp) { + try { + ScriptEngineManager manager = new ScriptEngineManager(); + ScriptEngine engine = manager.getEngineByName("JavaScript"); + Integer catch1 = (Integer) engine.eval(exp); + return catch1.intValue(); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } - public long getMiaoshaResult(Long userId, long goodsId) { - MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(userId, goodsId); - if(order != null) {//秒杀成功 - return order.getOrderId(); - }else { - boolean isOver = getGoodsOver(goodsId); - if(isOver) { - return -1; - }else { - return 0; - } - } - } + @Transactional + public OrderInfo miaosha(MiaoshaUser user, GoodsVo goods) { + //减库存 下订单 写入秒杀订单 + boolean success = goodsService.reduceStock(goods); + if (success) { + return orderService.createOrder(user, goods); + } else { + //如果库存不存在则内存标记为true + setGoodsOver(goods.getId()); + return null; + } + } - private void setGoodsOver(Long goodsId) { - redisService.set(MiaoshaKey.isGoodsOver, ""+goodsId, true); - } + public long getMiaoshaResult(Long userId, long goodsId) { + MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(userId, goodsId); + if (order != null) {//秒杀成功 + return order.getOrderId(); + } else { + boolean isOver = getGoodsOver(goodsId); + if (isOver) { + return -1; + } else { + return 0; + } + } + } - private boolean getGoodsOver(long goodsId) { - return redisService.exists(MiaoshaKey.isGoodsOver, ""+goodsId); - } + private void setGoodsOver(Long goodsId) { + redisService.set(MiaoshaKey.isGoodsOver, "" + goodsId, true); + } - public boolean checkPath(MiaoshaUser user, long goodsId, String path) { - if(user == null || path == null) { - return false; - } - String pathOld = redisService.get(MiaoshaKey.getMiaoshaPath, ""+user.getNickname() + "_"+ goodsId, String.class); - return path.equals(pathOld); - } + private boolean getGoodsOver(long goodsId) { + return redisService.exists(MiaoshaKey.isGoodsOver, "" + goodsId); + } - public String createMiaoshaPath(MiaoshaUser user, long goodsId) { - if(user == null || goodsId <=0) { - return null; - } - String str = MD5Utils.md5(UUIDUtil.uuid()+"123456"); - redisService.set(MiaoshaKey.getMiaoshaPath, ""+user.getNickname() + "_"+ goodsId, str); - return str; - } + public boolean checkPath(MiaoshaUser user, long goodsId, String path) { + if (user == null || path == null) { + return false; + } + String pathOld = redisService.get(MiaoshaKey.getMiaoshaPath, "" + user.getNickname() + "_" + goodsId, String.class); + return path.equals(pathOld); + } - public BufferedImage createVerifyCode(MiaoshaUser user, long goodsId) { - if(user == null || goodsId <=0) { - return null; - } - int width = 80; - int height = 32; - //create the image - BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); - Graphics g = image.getGraphics(); - // set the background color - g.setColor(new Color(0xDCDCDC)); - g.fillRect(0, 0, width, height); - // draw the border - g.setColor(Color.black); - g.drawRect(0, 0, width - 1, height - 1); - // create a random instance to generate the codes - Random rdm = new Random(); - // make some confusion - for (int i = 0; i < 50; i++) { - int x = rdm.nextInt(width); - int y = rdm.nextInt(height); - g.drawOval(x, y, 0, 0); - } - // generate a random code - String verifyCode = generateVerifyCode(rdm); - g.setColor(new Color(0, 100, 0)); - g.setFont(new Font("Candara", Font.BOLD, 24)); - g.drawString(verifyCode, 8, 24); - g.dispose(); - //把验证码存到redis中 - int rnd = calc(verifyCode); - redisService.set(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname()+","+goodsId, rnd); - //输出图片 - return image; - } + public String createMiaoshaPath(MiaoshaUser user, long goodsId) { + if (user == null || goodsId <= 0) { + return null; + } + String str = MD5Utils.md5(UUIDUtil.uuid() + "123456"); + redisService.set(MiaoshaKey.getMiaoshaPath, "" + user.getNickname() + "_" + goodsId, str); + return str; + } - /** - * 注册时用的验证码 - * @param verifyCode - * @return - */ - public boolean checkVerifyCodeRegister(int verifyCode) { - Integer codeOld = redisService.get(MiaoshaKey.getMiaoshaVerifyCodeRegister,"regitser", Integer.class); - if(codeOld == null || codeOld - verifyCode != 0 ) { - return false; - } - redisService.delete(MiaoshaKey.getMiaoshaVerifyCode, "regitser"); - return true; - } + public BufferedImage createVerifyCode(MiaoshaUser user, long goodsId) { + if (user == null || goodsId <= 0) { + return null; + } + int width = 80; + int height = 32; + //create the image + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics g = image.getGraphics(); + // set the background color + g.setColor(new Color(0xDCDCDC)); + g.fillRect(0, 0, width, height); + // draw the border + g.setColor(Color.black); + g.drawRect(0, 0, width - 1, height - 1); + // create a random instance to generate the codes + Random rdm = new Random(); + // make some confusion + for (int i = 0; i < 50; i++) { + int x = rdm.nextInt(width); + int y = rdm.nextInt(height); + g.drawOval(x, y, 0, 0); + } + // generate a random code + String verifyCode = generateVerifyCode(rdm); + g.setColor(new Color(0, 100, 0)); + g.setFont(new Font("Candara", Font.BOLD, 24)); + g.drawString(verifyCode, 8, 24); + g.dispose(); + //把验证码存到redis中 + int rnd = calc(verifyCode); + redisService.set(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname() + "," + goodsId, rnd); + //输出图片 + return image; + } + /** + * 注册时用的验证码 + * + * @param verifyCode + * @return + */ + public boolean checkVerifyCodeRegister(int verifyCode) { + Integer codeOld = redisService.get(MiaoshaKey.getMiaoshaVerifyCodeRegister, "regitser", Integer.class); + if (codeOld == null || codeOld - verifyCode != 0) { + return false; + } + redisService.delete(MiaoshaKey.getMiaoshaVerifyCode, "regitser"); + return true; + } - public BufferedImage createVerifyCodeRegister() { - int width = 80; - int height = 32; - //create the image - BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); - Graphics g = image.getGraphics(); - // set the background color - g.setColor(new Color(0xDCDCDC)); - g.fillRect(0, 0, width, height); - // draw the border - g.setColor(Color.black); - g.drawRect(0, 0, width - 1, height - 1); - // create a random instance to generate the codes - Random rdm = new Random(); - // make some confusion - for (int i = 0; i < 50; i++) { - int x = rdm.nextInt(width); - int y = rdm.nextInt(height); - g.drawOval(x, y, 0, 0); - } - // generate a random code - String verifyCode = generateVerifyCode(rdm); - g.setColor(new Color(0, 100, 0)); - g.setFont(new Font("Candara", Font.BOLD, 24)); - g.drawString(verifyCode, 8, 24); - g.dispose(); - //把验证码存到redis中 - int rnd = calc(verifyCode); - redisService.set(MiaoshaKey.getMiaoshaVerifyCodeRegister,"regitser",rnd); - //输出图片 - return image; - } + public BufferedImage createVerifyCodeRegister() { + int width = 80; + int height = 32; + //create the image + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics g = image.getGraphics(); + // set the background color + g.setColor(new Color(0xDCDCDC)); + g.fillRect(0, 0, width, height); + // draw the border + g.setColor(Color.black); + g.drawRect(0, 0, width - 1, height - 1); + // create a random instance to generate the codes + Random rdm = new Random(); + // make some confusion + for (int i = 0; i < 50; i++) { + int x = rdm.nextInt(width); + int y = rdm.nextInt(height); + g.drawOval(x, y, 0, 0); + } + // generate a random code + String verifyCode = generateVerifyCode(rdm); + g.setColor(new Color(0, 100, 0)); + g.setFont(new Font("Candara", Font.BOLD, 24)); + g.drawString(verifyCode, 8, 24); + g.dispose(); + //把验证码存到redis中 + int rnd = calc(verifyCode); + redisService.set(MiaoshaKey.getMiaoshaVerifyCodeRegister, "regitser", rnd); + //输出图片 + return image; + } - private static int calc(String exp) { - try { - ScriptEngineManager manager = new ScriptEngineManager(); - ScriptEngine engine = manager.getEngineByName("JavaScript"); - Integer catch1 = (Integer)engine.eval(exp); - return catch1.intValue(); - }catch(Exception e) { - e.printStackTrace(); - return 0; - } - } + public boolean checkVerifyCode(MiaoshaUser user, long goodsId, int verifyCode) { + if (user == null || goodsId <= 0) { + return false; + } + Integer codeOld = redisService.get(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname() + "," + goodsId, Integer.class); + if (codeOld == null || codeOld - verifyCode != 0) { + return false; + } + redisService.delete(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname() + "," + goodsId); + return true; + } - public boolean checkVerifyCode(MiaoshaUser user, long goodsId, int verifyCode) { - if(user == null || goodsId <=0) { - return false; - } - Integer codeOld = redisService.get(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname()+","+goodsId, Integer.class); - if(codeOld == null || codeOld - verifyCode != 0 ) { - return false; - } - redisService.delete(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname()+","+goodsId); - return true; - } + /** + * + - * + */ + private String generateVerifyCode(Random rdm) { + int num1 = rdm.nextInt(10); + int num2 = rdm.nextInt(10); + int num3 = rdm.nextInt(10); + char op1 = ops[rdm.nextInt(3)]; + char op2 = ops[rdm.nextInt(3)]; + String exp = "" + num1 + op1 + num2 + op2 + num3; + return exp; + } - private static char[] ops = new char[] {'+', '-', '*'}; - /** - * + - * - * */ - private String generateVerifyCode(Random rdm) { - int num1 = rdm.nextInt(10); - int num2 = rdm.nextInt(10); - int num3 = rdm.nextInt(10); - char op1 = ops[rdm.nextInt(3)]; - char op2 = ops[rdm.nextInt(3)]; - String exp = ""+ num1 + op1 + num2 + op2 + num3; - return exp; - } - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/OrderService.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/OrderService.java index 2b2ff5f..0c862a3 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/OrderService.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/OrderService.java @@ -20,50 +20,50 @@ import static com.geekq.miaosha.common.Constanst.orderStaus.ORDER_NOT_PAY; @Service public class OrderService { - - @Autowired - OrderDao orderDao; - @Autowired - private RedisService redisService ; - - public MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(long userId, long goodsId) { - return redisService.get(OrderKey.getMiaoshaOrderByUidGid,""+userId+"_"+goodsId,MiaoshaOrder.class) ; - } + @Autowired + OrderDao orderDao; - public OrderInfo getOrderById(long orderId) { - return orderDao.getOrderById(orderId); - } + @Autowired + private RedisService redisService; - @Transactional - public OrderInfo createOrder(MiaoshaUser user, GoodsVo goods) { - OrderInfo orderInfo = new OrderInfo(); - orderInfo.setCreateDate(new Date()); - orderInfo.setDeliveryAddrId(0L); - orderInfo.setGoodsCount(1); - orderInfo.setGoodsId(goods.getId()); - orderInfo.setGoodsName(goods.getGoodsName()); - orderInfo.setGoodsPrice(goods.getMiaoshaPrice()); - orderInfo.setOrderChannel(1); - orderInfo.setStatus(0); - orderInfo.setUserId(Long.valueOf(user.getNickname())); - orderDao.insert(orderInfo); - MiaoshaOrder miaoshaOrder = new MiaoshaOrder(); - miaoshaOrder.setGoodsId(goods.getId()); - miaoshaOrder.setOrderId(orderInfo.getId()); - miaoshaOrder.setUserId(Long.valueOf(user.getNickname())); - orderDao.insertMiaoshaOrder(miaoshaOrder); - redisService.set(OrderKey.getMiaoshaOrderByUidGid,""+user.getNickname()+"_"+goods.getId(),miaoshaOrder) ; - return orderInfo; - } + public MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(long userId, long goodsId) { + return redisService.get(OrderKey.getMiaoshaOrderByUidGid, "" + userId + "_" + goodsId, MiaoshaOrder.class); + } + + public OrderInfo getOrderById(long orderId) { + return orderDao.getOrderById(orderId); + } + + @Transactional + public OrderInfo createOrder(MiaoshaUser user, GoodsVo goods) { + OrderInfo orderInfo = new OrderInfo(); + orderInfo.setCreateDate(new Date()); + orderInfo.setDeliveryAddrId(0L); + orderInfo.setGoodsCount(1); + orderInfo.setGoodsId(goods.getId()); + orderInfo.setGoodsName(goods.getGoodsName()); + orderInfo.setGoodsPrice(goods.getMiaoshaPrice()); + orderInfo.setOrderChannel(1); + orderInfo.setStatus(0); + orderInfo.setUserId(Long.valueOf(user.getNickname())); + orderDao.insert(orderInfo); + MiaoshaOrder miaoshaOrder = new MiaoshaOrder(); + miaoshaOrder.setGoodsId(goods.getId()); + miaoshaOrder.setOrderId(orderInfo.getId()); + miaoshaOrder.setUserId(Long.valueOf(user.getNickname())); + orderDao.insertMiaoshaOrder(miaoshaOrder); + redisService.set(OrderKey.getMiaoshaOrderByUidGid, "" + user.getNickname() + "_" + goods.getId(), miaoshaOrder); + return orderInfo; + } + + public void closeOrder(int hour) { + Date closeDateTime = DateUtils.addHours(new Date(), -hour); + List orderInfoList = orderDao.selectOrderStatusByCreateTime(Integer.valueOf(ORDER_NOT_PAY.ordinal()), DateTimeUtils.dateToStr(closeDateTime)); + for (OrderInfo orderInfo : orderInfoList) { + System.out.println("orderinfo infomation " + orderInfo.getGoodsName()); + } + } - public void closeOrder(int hour){ - Date closeDateTime = DateUtils.addHours(new Date(),-hour); - List orderInfoList = orderDao.selectOrderStatusByCreateTime(Integer.valueOf(ORDER_NOT_PAY.ordinal()), DateTimeUtils.dateToStr(closeDateTime)); - for (OrderInfo orderInfo:orderInfoList){ - System.out.println("orderinfo infomation "+orderInfo.getGoodsName()); - } - } - } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/UserService.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/UserService.java index 6b994b2..eea9b78 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/UserService.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/UserService.java @@ -4,18 +4,16 @@ import com.geekq.miaosha.dao.UserDao; import com.geekq.miaosha.domain.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; @Service public class UserService { - @Autowired - private UserDao userDao ; - - public User getById(int id) { - return userDao.getById(id); - } + @Autowired + private UserDao userDao; + public User getById(int id) { + return userDao.getById(id); + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/RpcCompensateService.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/RpcCompensateService.java index 5851f8a..df077c9 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/RpcCompensateService.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/RpcCompensateService.java @@ -8,8 +8,8 @@ import org.springframework.stereotype.Service; public class RpcCompensateService { - public ResultGeekQ recharge(){ - ResultGeekQ result = ResultGeekQ.build(); + public ResultGeekQ recharge() { + ResultGeekQ result = ResultGeekQ.build(); /** * 各种校验check */ @@ -33,7 +33,7 @@ public class RpcCompensateService { /** * 获取订单 */ - long orderId = SnowflakeIdWorker.getOrderId(1,1); + long orderId = SnowflakeIdWorker.getOrderId(1, 1); /** * 创建订单步骤 可定义一个VO diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/RpcHandler.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/RpcHandler.java index 9c94d31..91f8ee0 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/RpcHandler.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/RpcHandler.java @@ -2,7 +2,7 @@ package com.geekq.miaosha.service.rpchander; public interface RpcHandler { - int RETRY_COUNT = 5 ; + int RETRY_COUNT = 5; boolean handele(); diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/enums/PlanStepType.java b/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/enums/PlanStepType.java index 0a2c1a2..aacc1c0 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/enums/PlanStepType.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/service/rpchander/enums/PlanStepType.java @@ -20,6 +20,11 @@ public enum PlanStepType { private int priority; private String handler; + PlanStepType(int priority, String handler) { + this.priority = priority; + this.handler = handler; + } + public String getHandler() { return handler; } @@ -35,9 +40,4 @@ public enum PlanStepType { public void setPriority(int priority) { this.priority = priority; } - - PlanStepType(int priority, String handler) { - this.priority = priority; - this.handler = handler; - } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/timeTask/OrderCloseTask.java b/miaosha-v1/src/main/java/com/geekq/miaosha/timeTask/OrderCloseTask.java index dea7dcd..602d8f1 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/timeTask/OrderCloseTask.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/timeTask/OrderCloseTask.java @@ -6,7 +6,6 @@ import com.geekq.miaosha.service.OrderService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import static com.geekq.miaosha.common.Constanst.CLOSE_ORDER_INFO_TASK_LOCK; @@ -16,7 +15,7 @@ import static com.geekq.miaosha.common.Constanst.CLOSE_ORDER_INFO_TASK_LOCK; public class OrderCloseTask { @Autowired - private OrderDao orderDao ; + private OrderDao orderDao; @Autowired private RedisService redisService; @@ -26,8 +25,8 @@ public class OrderCloseTask { // private RedissonService redissonService; -// @Scheduled(cron = "0/1 * * * * ?") - private void closeOrderTaskv1(){ + // @Scheduled(cron = "0/1 * * * * ?") + private void closeOrderTaskv1() { int hour = 2; orderService.closeOrder(hour); log.info("关闭订单定时任务结束"); @@ -46,28 +45,28 @@ public class OrderCloseTask { // log.info("关闭订单定时任务结束"); // } -// @Scheduled(cron = "0/1 * * * * ?") - public void closeOrderTaskV3(){ + // @Scheduled(cron = "0/1 * * * * ?") + public void closeOrderTaskV3() { log.info("关闭订单定时任务启动"); long lockTime = 5000; - Long setnxResult = redisService.setnx(CLOSE_ORDER_INFO_TASK_LOCK,String.valueOf(System.currentTimeMillis()+lockTime)); + Long setnxResult = redisService.setnx(CLOSE_ORDER_INFO_TASK_LOCK, String.valueOf(System.currentTimeMillis() + lockTime)); //代表获取了锁 - if(setnxResult !=null && setnxResult ==1){ + if (setnxResult != null && setnxResult == 1) { closeOrder(CLOSE_ORDER_INFO_TASK_LOCK); - }else { - log.info("没有获得分布式锁:{}",CLOSE_ORDER_INFO_TASK_LOCK); + } else { + log.info("没有获得分布式锁:{}", CLOSE_ORDER_INFO_TASK_LOCK); String lockValueStr = redisService.get(CLOSE_ORDER_INFO_TASK_LOCK); - if(lockValueStr!=null&&System.currentTimeMillis() > Long.parseLong(lockValueStr)){ - //把之前的释放在新加入锁 - String getSetResult = redisService.getset(CLOSE_ORDER_INFO_TASK_LOCK,String.valueOf(System.currentTimeMillis()+lockTime)); + if (lockValueStr != null && System.currentTimeMillis() > Long.parseLong(lockValueStr)) { + //把之前的释放在新加入锁 + String getSetResult = redisService.getset(CLOSE_ORDER_INFO_TASK_LOCK, String.valueOf(System.currentTimeMillis() + lockTime)); - if(getSetResult == null || (getSetResult != null && StringUtils.equals(lockValueStr,getSetResult))){ - closeOrder(CLOSE_ORDER_INFO_TASK_LOCK); - }else { - log.info("没有获取到分布式锁:{}",CLOSE_ORDER_INFO_TASK_LOCK); - } - }else { - log.info("没有获取到分布式锁:{}",CLOSE_ORDER_INFO_TASK_LOCK); + if (getSetResult == null || (getSetResult != null && StringUtils.equals(lockValueStr, getSetResult))) { + closeOrder(CLOSE_ORDER_INFO_TASK_LOCK); + } else { + log.info("没有获取到分布式锁:{}", CLOSE_ORDER_INFO_TASK_LOCK); + } + } else { + log.info("没有获取到分布式锁:{}", CLOSE_ORDER_INFO_TASK_LOCK); } } log.info("关闭订单定时任务结束"); @@ -96,10 +95,9 @@ public class OrderCloseTask { // } - - private void closeOrder(String lockName){ - redisService.expire(lockName,5); - log.info("获取{},当前线程名称!" ,lockName,Thread.currentThread().getName()); + private void closeOrder(String lockName) { + redisService.expire(lockName, 5); + log.info("获取{},当前线程名称!", lockName, Thread.currentThread().getName()); int hour = 2; orderService.closeOrder(hour); redisService.del(CLOSE_ORDER_INFO_TASK_LOCK); diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/DBUtil.java b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/DBUtil.java index 3af9368..5f020c3 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/DBUtil.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/DBUtil.java @@ -6,26 +6,26 @@ import java.sql.DriverManager; import java.util.Properties; public class DBUtil { - - private static Properties props; - - static { - try { - InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("application.properties"); - props = new Properties(); - props.load(in); - in.close(); - }catch(Exception e) { - e.printStackTrace(); - } - } - - public static Connection getConn() throws Exception{ - String url = props.getProperty("spring.datasource.url"); - String username = props.getProperty("spring.datasource.username"); - String password = props.getProperty("spring.datasource.password"); - String driver = props.getProperty("spring.datasource.driver-class-name"); - Class.forName(driver); - return DriverManager.getConnection(url,username, password); - } + + private static Properties props; + + static { + try { + InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("application.properties"); + props = new Properties(); + props.load(in); + in.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static Connection getConn() throws Exception { + String url = props.getProperty("spring.datasource.url"); + String username = props.getProperty("spring.datasource.username"); + String password = props.getProperty("spring.datasource.password"); + String driver = props.getProperty("spring.datasource.driver-class-name"); + Class.forName(driver); + return DriverManager.getConnection(url, username, password); + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/DateTimeUtils.java b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/DateTimeUtils.java index e0be1b4..c9e0021 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/DateTimeUtils.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/DateTimeUtils.java @@ -19,29 +19,28 @@ public class DateTimeUtils { public static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm:ss"; - - public static Date strToDate(String dateTimeStr,String formatStr){ + public static Date strToDate(String dateTimeStr, String formatStr) { DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(formatStr); DateTime dateTime = dateTimeFormatter.parseDateTime(dateTimeStr); return dateTime.toDate(); } - public static String dateToStr(Date date,String formatStr){ - if(date == null){ + public static String dateToStr(Date date, String formatStr) { + if (date == null) { return StringUtils.EMPTY; } DateTime dateTime = new DateTime(date); return dateTime.toString(formatStr); } - public static Date strToDate(String dateTimeStr){ + public static Date strToDate(String dateTimeStr) { DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(STANDARD_FORMAT); DateTime dateTime = dateTimeFormatter.parseDateTime(dateTimeStr); return dateTime.toDate(); } - public static String dateToStr(Date date){ - if(date == null){ + public static String dateToStr(Date date) { + if (date == null) { return StringUtils.EMPTY; } DateTime dateTime = new DateTime(date); @@ -49,11 +48,9 @@ public class DateTimeUtils { } - - public static void main(String[] args) { - System.out.println(DateTimeUtils.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss")); - System.out.println(DateTimeUtils.strToDate("2010-01-01 11:11:11","yyyy-MM-dd HH:mm:ss")); + System.out.println(DateTimeUtils.dateToStr(new Date(), "yyyy-MM-dd HH:mm:ss")); + System.out.println(DateTimeUtils.strToDate("2010-01-01 11:11:11", "yyyy-MM-dd HH:mm:ss")); } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/HttpUtil.java b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/HttpUtil.java index ec59561..c9f4220 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/HttpUtil.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/HttpUtil.java @@ -7,38 +7,37 @@ import java.net.URL; /** * @author 605162215@qq.com - * * @date 2018年1月31日 下午4:32:40
*/ public class HttpUtil { - public static void main(String[] args) throws Exception{ - - for(int i=0;i<10;i++) { - Thread t = new Thread(new Runnable() { - public void run() { - try { - for(int i=0;i<10;i++) { - URL url = new URL("http://192.168.220.130/index.html"); - HttpURLConnection conn = (HttpURLConnection)url.openConnection(); - InputStream in = conn.getInputStream(); - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - byte[] buff = new byte[1024]; - int len = 0; - while((len = in.read(buff)) >= 0) { - bout.write(buff, 0, len); - } - in.close(); - bout.close(); - byte[] response = bout.toByteArray(); - System.out.println(new String(response, "UTF-8")); - Thread.sleep(3000); - } - }catch(Exception e) { - - } - } - }); - t.start(); - } - } + public static void main(String[] args) throws Exception { + + for (int i = 0; i < 10; i++) { + Thread t = new Thread(new Runnable() { + public void run() { + try { + for (int i = 0; i < 10; i++) { + URL url = new URL("http://192.168.220.130/index.html"); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + InputStream in = conn.getInputStream(); + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + byte[] buff = new byte[1024]; + int len = 0; + while ((len = in.read(buff)) >= 0) { + bout.write(buff, 0, len); + } + in.close(); + bout.close(); + byte[] response = bout.toByteArray(); + System.out.println(new String(response, "UTF-8")); + Thread.sleep(3000); + } + } catch (Exception e) { + + } + } + }); + t.start(); + } + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/MD5Util.java b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/MD5Util.java index bf121c7..f0f052d 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/MD5Util.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/MD5Util.java @@ -3,34 +3,34 @@ package com.geekq.miaosha.utils; import org.apache.commons.codec.digest.DigestUtils; public class MD5Util { - - public static String md5(String src) { - return DigestUtils.md5Hex(src); - } - - private static final String salt = "1a2b3c4d"; - - public static String inputPassToFormPass(String inputPass) { - String str = ""+salt.charAt(0)+salt.charAt(2) + inputPass +salt.charAt(5) + salt.charAt(4); - System.out.println(str); - return md5(str); - } - - public static String formPassToDBPass(String formPass, String salt) { - String str = ""+salt.charAt(0)+salt.charAt(2) + formPass +salt.charAt(5) + salt.charAt(4); - return md5(str); - } - - public static String inputPassToDbPass(String inputPass, String saltDB) { - String formPass = inputPassToFormPass(inputPass); - String dbPass = formPassToDBPass(formPass, saltDB); - return dbPass; - } - - public static void main(String[] args) { - System.out.println(inputPassToFormPass("123456"));//d3b1294a61a07da9b49b6e22b2cbd7f9 + + private static final String salt = "1a2b3c4d"; + + public static String md5(String src) { + return DigestUtils.md5Hex(src); + } + + public static String inputPassToFormPass(String inputPass) { + String str = "" + salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4); + System.out.println(str); + return md5(str); + } + + public static String formPassToDBPass(String formPass, String salt) { + String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(5) + salt.charAt(4); + return md5(str); + } + + public static String inputPassToDbPass(String inputPass, String saltDB) { + String formPass = inputPassToFormPass(inputPass); + String dbPass = formPassToDBPass(formPass, saltDB); + return dbPass; + } + + public static void main(String[] args) { + System.out.println(inputPassToFormPass("123456"));//d3b1294a61a07da9b49b6e22b2cbd7f9 // System.out.println(formPassToDBPass(inputPassToFormPass("123456"), "1a2b3c4d")); // System.out.println(inputPassToDbPass("123456", "1a2b3c4d"));//b7797cce01b4b131b433b6acf4add449 - } - + } + } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/MD5Utils.java b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/MD5Utils.java index e01c9bb..603f555 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/MD5Utils.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/MD5Utils.java @@ -5,40 +5,40 @@ import org.apache.commons.codec.digest.DigestUtils; public class MD5Utils { - public static String md5 ( String key) { - return DigestUtils.md5Hex(key) ; + public static final String salt = "1a2b3c4d"; + + public static String md5(String key) { + return DigestUtils.md5Hex(key); } - - public static final String salt = "1a2b3c4d" ; /** - * * @param inputPass * @return */ - public static String inputPassFormPass ( String inputPass) { - String str = "" + salt.charAt(0) + salt.charAt(2)+ inputPass + salt.charAt(5) + salt.charAt(4) ; + public static String inputPassFormPass(String inputPass) { + String str = "" + salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4); return md5(str); } /** - * 第二次md5 salt 可随机  + * 第二次md5 salt 可随机 + * * @param formPass * @param salt * @return */ - public static String formPassToDBPass ( String formPass ,String salt ) { - String str = "" + salt.charAt(0) + salt.charAt(2)+ formPass + salt.charAt(5) + salt.charAt(4) ; + public static String formPassToDBPass(String formPass, String salt) { + String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(5) + salt.charAt(4); return md5(str); } - public static String inputPassToDBPass ( String inputPass ,String saltDB ) { + public static String inputPassToDBPass(String inputPass, String saltDB) { String formPass = inputPassFormPass(inputPass); - String dbPass = formPassToDBPass(formPass ,saltDB ) ; - return dbPass ; + String dbPass = formPassToDBPass(formPass, saltDB); + return dbPass; } public static void main(String[] args) { - System.out.println(inputPassToDBPass("123456","1a2b3c4d")); + System.out.println(inputPassToDBPass("123456", "1a2b3c4d")); } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/UUIDUtil.java b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/UUIDUtil.java index bfa6195..f028259 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/UUIDUtil.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/UUIDUtil.java @@ -4,7 +4,7 @@ import java.util.UUID; public class UUIDUtil { - public static String uuid(){ - return UUID.randomUUID().toString().replace("-",""); + public static String uuid() { + return UUID.randomUUID().toString().replace("-", ""); } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/UserUtil.java b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/UserUtil.java index 7bd0c1e..66056c1 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/UserUtil.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/UserUtil.java @@ -1,10 +1,8 @@ package com.geekq.miaosha.utils; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.RandomAccessFile; +import com.geekq.miaosha.domain.MiaoshaUser; + +import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.sql.Connection; @@ -14,89 +12,85 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.geekq.miaosha.domain.MiaoshaUser; - public class UserUtil { - - private static void createUser(int count) throws Exception{ - List users = new ArrayList(count); - //生成用户 - for(int i=0;i= 0) { - bout.write(buff, 0 ,len); - } - inputStream.close(); - bout.close(); - String response = new String(bout.toByteArray()); + + private static void createUser(int count) throws Exception { + List users = new ArrayList(count); + //生成用户 + for (int i = 0; i < count; i++) { + MiaoshaUser user = new MiaoshaUser(); + user.setId(100L + i); + user.setLoginCount(1); + user.setNickname(String.valueOf(13000000000L + i)); + user.setRegisterDate(new Date()); + user.setSalt("1a2b3c"); + user.setPassword(MD5Util.inputPassToDbPass("123456", user.getSalt())); + users.add(user); + } + System.out.println("create user"); + //插入数据库 + Connection conn = DBUtil.getConn(); + String sql = "insert into miaosha_user(login_count, nickname, register_date, salt, password, id)values(?,?,?,?,?,?)"; + PreparedStatement pstmt = conn.prepareStatement(sql); + for (int i = 0; i < users.size(); i++) { + MiaoshaUser user = users.get(i); + pstmt.setInt(1, user.getLoginCount()); + pstmt.setString(2, user.getNickname()); + pstmt.setTimestamp(3, new Timestamp(user.getRegisterDate().getTime())); + pstmt.setString(4, user.getSalt()); + pstmt.setString(5, user.getPassword()); + pstmt.setLong(6, user.getId()); + pstmt.addBatch(); + } + pstmt.executeBatch(); + pstmt.close(); + conn.close(); + System.out.println("insert to db"); + //登录,生成token + String urlString = "http://localhost:8080/login/create_token"; + File file = new File("D:/tokens.txt"); + if (file.exists()) { + file.delete(); + } + RandomAccessFile raf = new RandomAccessFile(file, "rw"); + file.createNewFile(); + raf.seek(0); + for (int i = 0; i < users.size(); i++) { + MiaoshaUser user = users.get(i); + URL url = new URL(urlString); + HttpURLConnection co = (HttpURLConnection) url.openConnection(); + co.setRequestMethod("POST"); + co.setDoOutput(true); + OutputStream out = co.getOutputStream(); + String params = "mobile=" + user.getNickname() + "&password=" + MD5Util.inputPassToFormPass("123456"); + out.write(params.getBytes()); + out.flush(); + InputStream inputStream = co.getInputStream(); + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + byte buff[] = new byte[1024]; + int len = 0; + while ((len = inputStream.read(buff)) >= 0) { + bout.write(buff, 0, len); + } + inputStream.close(); + bout.close(); + String response = new String(bout.toByteArray()); // JSONObject jo = JSON.parseObject(response); // String token = jo.getString("data"); - System.out.println("create token : " + user.getId()); - - String row = user.getNickname()+","+response; - raf.seek(raf.length()); - raf.write(row.getBytes()); - raf.write("\r\n".getBytes()); - System.out.println("write to file : " + user.getId()); - } - raf.close(); - - System.out.println("over"); - } - - public static void main(String[] args)throws Exception { - createUser(3); - } + System.out.println("create token : " + user.getId()); + + String row = user.getNickname() + "," + response; + raf.seek(raf.length()); + raf.write(row.getBytes()); + raf.write("\r\n".getBytes()); + System.out.println("write to file : " + user.getId()); + } + raf.close(); + + System.out.println("over"); + } + + public static void main(String[] args) throws Exception { + createUser(3); + } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/ValidatorUtil.java b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/ValidatorUtil.java index 0152af0..d13fd8e 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/utils/ValidatorUtil.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/utils/ValidatorUtil.java @@ -1,21 +1,21 @@ package com.geekq.miaosha.utils; +import org.apache.commons.lang3.StringUtils; + import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.lang3.StringUtils; - public class ValidatorUtil { - - private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}"); - - public static boolean isMobile(String src) { - if(StringUtils.isEmpty(src)) { - return false; - } - Matcher m = mobile_pattern.matcher(src); - return m.matches(); - } - + + private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}"); + + public static boolean isMobile(String src) { + if (StringUtils.isEmpty(src)) { + return false; + } + Matcher m = mobile_pattern.matcher(src); + return m.matches(); + } + } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/validator/MobileCheck.java b/miaosha-v1/src/main/java/com/geekq/miaosha/validator/MobileCheck.java index 06f2a5f..e5866d9 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/validator/MobileCheck.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/validator/MobileCheck.java @@ -9,7 +9,7 @@ import java.lang.annotation.*; @Documented @Constraint(validatedBy = {MobileValidator.class}) public @interface MobileCheck { - boolean required() default true ; + boolean required() default true; String message() default "手机号码格式有误!"; diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/validator/MobileValidator.java b/miaosha-v1/src/main/java/com/geekq/miaosha/validator/MobileValidator.java index ca9e5ab..9a44a92 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/validator/MobileValidator.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/validator/MobileValidator.java @@ -8,22 +8,22 @@ import javax.validation.ConstraintValidatorContext; public class MobileValidator implements ConstraintValidator { - private boolean require = false ; + private boolean require = false; @Override public void initialize(MobileCheck isMobile) { - require = isMobile.required() ; + require = isMobile.required(); } @Override public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { - if(require){ - return ValidatorUtil.isMobile(value) ; - }else{ - if(StringUtils.isEmpty(value)){ - return true ; - }else { - return ValidatorUtil.isMobile(value) ; + if (require) { + return ValidatorUtil.isMobile(value); + } else { + if (StringUtils.isEmpty(value)) { + return true; + } else { + return ValidatorUtil.isMobile(value); } } } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/GoodsDetailVo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/GoodsDetailVo.java index 668c3da..109b526 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/GoodsDetailVo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/GoodsDetailVo.java @@ -12,9 +12,9 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class GoodsDetailVo { - private int miaoshaStatus = 0; - private int remainSeconds = 0; - private GoodsVo goods ; - private MiaoshaUser user; + private int miaoshaStatus = 0; + private int remainSeconds = 0; + private GoodsVo goods; + private MiaoshaUser user; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/GoodsVo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/GoodsVo.java index 89ed40f..db4e5d6 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/GoodsVo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/GoodsVo.java @@ -1,7 +1,10 @@ package com.geekq.miaosha.vo; import com.geekq.miaosha.domain.Goods; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import java.util.Date; @@ -10,8 +13,8 @@ import java.util.Date; @AllArgsConstructor @NoArgsConstructor public class GoodsVo extends Goods { - private Double miaoshaPrice; - private Integer stockCount; - private Date startDate; - private Date endDate; + private Double miaoshaPrice; + private Integer stockCount; + private Date startDate; + private Date endDate; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/LoginVo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/LoginVo.java index cba17f6..cf8ea20 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/LoginVo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/LoginVo.java @@ -16,10 +16,10 @@ import javax.validation.constraints.NotNull; public class LoginVo { @NotNull @MobileCheck - private String mobile ; + private String mobile; @NotNull - @Length(min=32) + @Length(min = 32) private String password; @Override diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/MiaoShaMessageVo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/MiaoShaMessageVo.java index fd0b823..8fa03d8 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/MiaoShaMessageVo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/MiaoShaMessageVo.java @@ -8,6 +8,7 @@ import lombok.Setter; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; + @Setter @Getter @AllArgsConstructor @@ -15,32 +16,32 @@ import java.util.Date; public class MiaoShaMessageVo implements Serializable { private static final long serialVersionUID = -1341750239648941486L; - private Integer id ; + private Integer id; private Long userId; - private String goodId ; + private String goodId; private Date orderId; - private Long messageId ; + private Long messageId; - private String content ; + private String content; private Date createTime; - private Integer status ; + private Integer status; - private Date overTime ; + private Date overTime; - private Integer messageType ; + private Integer messageType; - private Integer sendType ; + private Integer sendType; - private String goodName ; + private String goodName; - private BigDecimal price ; + private BigDecimal price; - private String messageHead ; + private String messageHead; } diff --git a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/OrderDetailVo.java b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/OrderDetailVo.java index 6dd59cc..14ed16e 100644 --- a/miaosha-v1/src/main/java/com/geekq/miaosha/vo/OrderDetailVo.java +++ b/miaosha-v1/src/main/java/com/geekq/miaosha/vo/OrderDetailVo.java @@ -11,18 +11,22 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class OrderDetailVo { - private GoodsVo goods; - private OrderInfo order; - public GoodsVo getGoods() { - return goods; - } - public void setGoods(GoodsVo goods) { - this.goods = goods; - } - public OrderInfo getOrder() { - return order; - } - public void setOrder(OrderInfo order) { - this.order = order; - } + private GoodsVo goods; + private OrderInfo order; + + public GoodsVo getGoods() { + return goods; + } + + public void setGoods(GoodsVo goods) { + this.goods = goods; + } + + public OrderInfo getOrder() { + return order; + } + + public void setOrder(OrderInfo order) { + this.order = order; + } } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/BaseDomain.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/BaseDomain.java index f5c2edb..d45671f 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/BaseDomain.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/BaseDomain.java @@ -12,6 +12,6 @@ import java.io.Serializable; @Setter public class BaseDomain implements Serializable { - protected Long id; + protected Long id; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/Goods.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/Goods.java index 20b078c..88287ca 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/Goods.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/Goods.java @@ -10,11 +10,11 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class Goods { - private Long id; - private String goodsName; - private String goodsTitle; - private String goodsImg; - private String goodsDetail; - private Double goodsPrice; - private Integer goodsStock; + private Long id; + private String goodsName; + private String goodsTitle; + private String goodsImg; + private String goodsDetail; + private Double goodsPrice; + private Integer goodsStock; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/IpLog.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/IpLog.java index 321bf9e..67dd773 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/IpLog.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/IpLog.java @@ -8,39 +8,40 @@ import java.util.Date; /** * 登陆日志 + * * @author Administrator */ @Getter @Setter @Alias("IpLog") public class IpLog extends BaseDomain { - public static int LOGINSTATE_FAILD = 0;//登陆失败 - public static int LOGINSTATE_SUCCESS = 1;//登陆成功 + public static int LOGINSTATE_FAILD = 0;//登陆失败 + public static int LOGINSTATE_SUCCESS = 1;//登陆成功 - private String username; - private Date loginTime; - private String ip; + private String username; + private Date loginTime; + private String ip; - private int loginState; - private int loginType; - private Long loginInfoId; - - public String getDisplayState(){ - return this.loginState==LOGINSTATE_FAILD?"登录失败":"登录成功"; - } + private int loginState; + private int loginType; + private Long loginInfoId; - public IpLog() { - super(); - } + public IpLog() { + super(); + } - public IpLog(String username, Date loginTime, String ip, int loginType, - Long loginInfoId) { - super(); - this.username = username; - this.loginTime = loginTime; - this.ip = ip; - this.loginState = IpLog.LOGINSTATE_FAILD; - this.loginType = loginType; - this.loginInfoId = loginInfoId; - } + public IpLog(String username, Date loginTime, String ip, int loginType, + Long loginInfoId) { + super(); + this.username = username; + this.loginTime = loginTime; + this.ip = ip; + this.loginState = IpLog.LOGINSTATE_FAILD; + this.loginType = loginType; + this.loginInfoId = loginInfoId; + } + + public String getDisplayState() { + return this.loginState == LOGINSTATE_FAILD ? "登录失败" : "登录成功"; + } } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/Logininfo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/Logininfo.java index 4ce8123..5ca72dc 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/Logininfo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/Logininfo.java @@ -15,13 +15,13 @@ import java.util.Date; @NoArgsConstructor public class Logininfo implements Serializable { - private Long id; - private String nickname; - private String password; - private String salt; - private Date registerDate; - private Date lastLoginDate; - private int state = Constants.STATE_NORMAL; - private int userType;//用户类型 - private boolean admin = false; + private Long id; + private String nickname; + private String password; + private String salt; + private Date registerDate; + private Date lastLoginDate; + private int state = Constants.STATE_NORMAL; + private int userType;//用户类型 + private boolean admin = false; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoShaMessageInfo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoShaMessageInfo.java index 2b19d50..bfa0dad 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoShaMessageInfo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoShaMessageInfo.java @@ -18,28 +18,28 @@ import java.util.Date; @NoArgsConstructor public class MiaoShaMessageInfo implements Serializable { - private Integer id ; + private Integer id; - private Long messageId ; + private Long messageId; - private Long userId ; + private Long userId; - private String content ; + private String content; private Date createTime; - private Integer status ; + private Integer status; - private Date overTime ; + private Date overTime; - private Integer messageType ; + private Integer messageType; - private Integer sendType ; + private Integer sendType; - private String goodName ; + private String goodName; - private BigDecimal price ; + private BigDecimal price; - private String messageHead ; + private String messageHead; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoShaMessageUser.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoShaMessageUser.java index d0c6c2f..52e4365 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoShaMessageUser.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoShaMessageUser.java @@ -17,13 +17,13 @@ import java.util.Date; @NoArgsConstructor public class MiaoShaMessageUser implements Serializable { - private Long id ; + private Long id; - private Long userId ; + private Long userId; - private Long messageId ; + private Long messageId; - private String goodId ; + private String goodId; private Date orderId; diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaGoods.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaGoods.java index fc0729c..81c19fa 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaGoods.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaGoods.java @@ -14,9 +14,9 @@ import java.util.Date; @NoArgsConstructor @Alias("MiaoshaGoods") public class MiaoshaGoods { - private Long id; - private Long goodsId; - private Integer stockCount; - private Date startDate; - private Date endDate; + private Long id; + private Long goodsId; + private Integer stockCount; + private Date startDate; + private Date endDate; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaOrder.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaOrder.java index 25a8235..6aba564 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaOrder.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaOrder.java @@ -12,8 +12,8 @@ import org.apache.ibatis.type.Alias; @NoArgsConstructor @Alias("miaoshaorder") public class MiaoshaOrder { - private Long id; - private Long userId; - private Long orderId; - private Long goodsId; + private Long id; + private Long userId; + private Long orderId; + private Long goodsId; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaUser.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaUser.java index 9fe06b3..eff14eb 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaUser.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/MiaoshaUser.java @@ -15,25 +15,26 @@ import java.util.Date; @Alias("MiaoshaUser") public class MiaoshaUser { - private Long id; - private String nickname; - private String password; - private String salt; - private String head; - private Date registerDate; - private Date lastLoginDate; - private Integer loginCount; - @Override - public String toString() { - return "Logininfo{" + - "id=" + id + - ", nickname='" + nickname + '\'' + - ", password='" + password + '\'' + - ", salt='" + salt + '\'' + - ", head='" + head + '\'' + - ", registerDate=" + registerDate + - ", lastLoginDate=" + lastLoginDate + - ", loginCount=" + loginCount + - '}'; - } + private Long id; + private String nickname; + private String password; + private String salt; + private String head; + private Date registerDate; + private Date lastLoginDate; + private Integer loginCount; + + @Override + public String toString() { + return "Logininfo{" + + "id=" + id + + ", nickname='" + nickname + '\'' + + ", password='" + password + '\'' + + ", salt='" + salt + '\'' + + ", head='" + head + '\'' + + ", registerDate=" + registerDate + + ", lastLoginDate=" + lastLoginDate + + ", loginCount=" + loginCount + + '}'; + } } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/OrderInfo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/OrderInfo.java index 197f6e8..3aaee31 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/OrderInfo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/entity/OrderInfo.java @@ -14,15 +14,15 @@ import java.util.Date; @NoArgsConstructor @Alias("OrderInfo") public class OrderInfo { - private Long id; - private Long userId; - private Long goodsId; - private Long deliveryAddrId; - private String goodsName; - private Integer goodsCount; - private Double goodsPrice; - private Integer orderChannel; - private Integer status; - private Date createDate; - private Date payDate; + private Long id; + private Long userId; + private Long goodsId; + private Long deliveryAddrId; + private String goodsName; + private Integer goodsCount; + private Double goodsPrice; + private Integer orderChannel; + private Integer status; + private Date createDate; + private Date payDate; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/Constanst.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/Constanst.java index ab4a281..42f3e3f 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/Constanst.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/Constanst.java @@ -6,14 +6,14 @@ public class Constanst { public static String COUNTLOGIN = "count:login"; - public enum orderStaus{ + public enum orderStaus { ORDER_NOT_PAY("新建未支付"); - orderStaus(String name){ - this.name=name; - } + private String name; - private String name; + orderStaus(String name) { + this.name = name; + } public String getName() { return name; diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/Constants.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/Constants.java index db0d83d..ddf90a1 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/Constants.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/Constants.java @@ -4,7 +4,7 @@ package com.geekq.miasha.enums; * @author 邱润泽 * 常用数据静态变量类型集合 */ -public class Constants { +public class Constants { public static final int STATE_NORMAL = 0; public static final int STATE_LOCK = 1; diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/MessageStatus.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/MessageStatus.java index e604fb1..d7e135b 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/MessageStatus.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/MessageStatus.java @@ -2,17 +2,18 @@ package com.geekq.miasha.enums; public class MessageStatus { - public static final Integer ZORE = 0; + public static final Integer ZORE = 0; + /** * 消息类型 */ - public enum messageType { + public enum messageType { maiosha_message("秒杀消息"), buy_message("购买消息"), system_message("系统消息"); private String message; - private messageType(String message){ + private messageType(String message) { this.message = message; } @@ -24,10 +25,10 @@ public class MessageStatus { /** * 消息内容 */ - public enum ContentEnum { - system_message_register(7000,"尊敬的用户你好,你已经成功注册!"), + public enum ContentEnum { + system_message_register(7000, "尊敬的用户你好,你已经成功注册!"), - system_message_register_head(7001,"注册成功"); + system_message_register_head(7001, "注册成功"); private int code; private String message; @@ -45,10 +46,11 @@ public class MessageStatus { return message; } } + /** * 消息类型 */ - public enum sendType { + public enum sendType { // maiosha_message("秒杀消息"), // buy_message("购买消息"), // system_message("系统消息"); diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/OrderStatusEnum.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/OrderStatusEnum.java index e52f35e..99995df 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/OrderStatusEnum.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/OrderStatusEnum.java @@ -1,40 +1,39 @@ package com.geekq.miasha.enums; /** - * * @Description: 订单状态 */ public enum OrderStatusEnum { - WAIT_PAY(10, "待付款"), // 代付款 - PAYING(20, "付款中"), // 付款中 - PAID(30, "已付款"), // 已付款 - PAID_FAILD(40, "付款失败"), // 付款失败 - CANCELED(50, "已取消"), // 已取消 - CLOSED(60, "交易关闭"); // 超时未支付, 交易关闭 - - public final int key; - public final String value; - - OrderStatusEnum(int key, String value) { - this.key = key; - this.value = value; - } + WAIT_PAY(10, "待付款"), // 代付款 + PAYING(20, "付款中"), // 付款中 + PAID(30, "已付款"), // 已付款 + PAID_FAILD(40, "付款失败"), // 付款失败 + CANCELED(50, "已取消"), // 已取消 + CLOSED(60, "交易关闭"); // 超时未支付, 交易关闭 - public static String getName(int key) { - for (OrderStatusEnum status : OrderStatusEnum.values()) { - if (status.getKey() == key) { - return status.value; - } - } - return null; - } - - public int getKey() { - return key; - } + public final int key; + public final String value; - public String getValue() { - return value; - } + OrderStatusEnum(int key, String value) { + this.key = key; + this.value = value; + } + + public static String getName(int key) { + for (OrderStatusEnum status : OrderStatusEnum.values()) { + if (status.getKey() == key) { + return status.value; + } + } + return null; + } + + public int getKey() { + return key; + } + + public String getValue() { + return value; + } } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/SexEnum.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/SexEnum.java index 7cd5ce8..de1c522 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/SexEnum.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/SexEnum.java @@ -1,23 +1,22 @@ package com.geekq.miasha.enums; /** - * * @Description: 男女枚举 */ public enum SexEnum { - - GIRL(0), // 女 - BOY(1), // 男 - SECRET(2); // 保密 - - public final int value; - - SexEnum(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - + + GIRL(0), // 女 + BOY(1), // 男 + SECRET(2); // 保密 + + public final int value; + + SexEnum(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/YesOrNo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/YesOrNo.java index 19c96d0..2b33c24 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/YesOrNo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/YesOrNo.java @@ -1,22 +1,21 @@ package com.geekq.miasha.enums; /** - * * @Description: 是否枚举 */ public enum YesOrNo { - YES(1), // 是 有错误 - NO(0); // 否 无错误 - - public final int value; - - YesOrNo(int value) { - this.value = value; - } - - public int getValue() { - return value; - } - + YES(1), // 是 有错误 + NO(0); // 否 无错误 + + public final int value; + + YesOrNo(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/enums/MessageStatus.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/enums/MessageStatus.java index e62a910..0125d2a 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/enums/MessageStatus.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/enums/MessageStatus.java @@ -2,17 +2,18 @@ package com.geekq.miasha.enums.enums; public class MessageStatus { - public static final Integer ZORE = 0; + public static final Integer ZORE = 0; + /** * 消息类型 */ - public enum messageType { + public enum messageType { maiosha_message("秒杀消息"), buy_message("购买消息"), system_message("系统消息"); private String message; - private messageType(String message){ + private messageType(String message) { this.message = message; } @@ -24,10 +25,10 @@ public class MessageStatus { /** * 消息内容 */ - public enum ContentEnum { - system_message_register(7000,"尊敬的用户你好,你已经成功注册!"), + public enum ContentEnum { + system_message_register(7000, "尊敬的用户你好,你已经成功注册!"), - system_message_register_head(7001,"注册成功"); + system_message_register_head(7001, "注册成功"); private int code; private String message; @@ -45,10 +46,11 @@ public class MessageStatus { return message; } } + /** * 消息类型 */ - public enum sendType { + public enum sendType { // maiosha_message("秒杀消息"), // buy_message("购买消息"), // system_message("系统消息"); diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/enums/ResultStatus.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/enums/ResultStatus.java index 10d477f..e94bd8b 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/enums/ResultStatus.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/enums/ResultStatus.java @@ -8,6 +8,7 @@ package com.geekq.miasha.enums.enums; * 4 秒杀错误 * 5 商品错误 * 6 订单错误 + * * @author qiurunze */ public enum ResultStatus { @@ -28,35 +29,35 @@ public enum ResultStatus { /** * 注册登录 */ - RESIGETR_SUCCESS(20000,"注册成功!"), - RESIGETER_FAIL(200001,"注册失败!"), - CODE_FAIL(200002,"验证码不一致!"), + RESIGETR_SUCCESS(20000, "注册成功!"), + RESIGETER_FAIL(200001, "注册失败!"), + CODE_FAIL(200002, "验证码不一致!"), /** * check */ - BIND_ERROR (30001,"参数校验异常:%s"), - ACCESS_LIMIT_REACHED (30002,"请求非法!"), - REQUEST_ILLEGAL (30004,"访问太频繁!"), - SESSION_ERROR (30005,"Session不存在或者已经失效!"), - PASSWORD_EMPTY (30006,"登录密码不能为空!"), - MOBILE_EMPTY (30007,"手机号不能为空!"), - MOBILE_ERROR (30008,"手机号格式错误!"), - MOBILE_NOT_EXIST (30009,"账号不存在!"), - PASSWORD_ERROR (30010,"密码错误!"), - USER_NOT_EXIST(30011,"用户不存在!"), + BIND_ERROR(30001, "参数校验异常:%s"), + ACCESS_LIMIT_REACHED(30002, "请求非法!"), + REQUEST_ILLEGAL(30004, "访问太频繁!"), + SESSION_ERROR(30005, "Session不存在或者已经失效!"), + PASSWORD_EMPTY(30006, "登录密码不能为空!"), + MOBILE_EMPTY(30007, "手机号不能为空!"), + MOBILE_ERROR(30008, "手机号格式错误!"), + MOBILE_NOT_EXIST(30009, "账号不存在!"), + PASSWORD_ERROR(30010, "密码错误!"), + USER_NOT_EXIST(30011, "用户不存在!"), /** * 订单模块 */ - ORDER_NOT_EXIST(60001,"订单不存在"), + ORDER_NOT_EXIST(60001, "订单不存在"), /** * 秒杀模块 */ - MIAO_SHA_OVER(40001,"商品已经秒杀完毕"), - REPEATE_MIAOSHA(40002,"不能重复秒杀"), - MIAOSHA_FAIL(40003,"秒杀失败"); + MIAO_SHA_OVER(40001, "商品已经秒杀完毕"), + REPEATE_MIAOSHA(40002, "不能重复秒杀"), + MIAOSHA_FAIL(40003, "秒杀失败"); /** * 商品模块 @@ -69,6 +70,10 @@ public enum ResultStatus { this.message = message; } + private ResultStatus(Object... args) { + this.message = String.format(this.message, args); + } + public int getCode() { return this.code; } @@ -96,8 +101,4 @@ public enum ResultStatus { public String toString() { return this.getName(); } - - private ResultStatus(Object... args) { - this.message = String.format(this.message, args); - } } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/resultbean/AbstractResult.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/resultbean/AbstractResult.java index d9a9ad8..6ee3a72 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/resultbean/AbstractResult.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/resultbean/AbstractResult.java @@ -8,7 +8,9 @@ public class AbstractResult { private int code; private String message; - AbstractResult() {} + AbstractResult() { + } + protected AbstractResult(ResultStatus status, String message) { this.code = status.getCode(); this.status = status; @@ -46,6 +48,7 @@ public class AbstractResult { this.status = ResultStatus.SUCCESS; return this; } + public ResultStatus getStatus() { return this.status; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/resultbean/ResultGeekQ.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/resultbean/ResultGeekQ.java index 7898b07..a031be5 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/resultbean/ResultGeekQ.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/enums/resultbean/ResultGeekQ.java @@ -12,14 +12,17 @@ public class ResultGeekQ extends AbstractResult implements Serializable { protected ResultGeekQ() { } + protected ResultGeekQ(ResultStatus status, String message) { super(status, message); } + protected ResultGeekQ(ResultStatus status) { super(status); } + public static ResultGeekQ build() { - return new ResultGeekQ(ResultStatus.SUCCESS, (String)null); + return new ResultGeekQ(ResultStatus.SUCCESS, (String) null); } public static ResultGeekQ build(String message) { diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/exception/GlobleException.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/exception/GlobleException.java index 4ccbb52..fdc140c 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/exception/GlobleException.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/exception/GlobleException.java @@ -8,7 +8,7 @@ public class GlobleException extends RuntimeException { private ResultStatus status; - public GlobleException(ResultStatus status){ + public GlobleException(ResultStatus status) { super(); this.status = status; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/DateTimeUtils.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/DateTimeUtils.java index dfbaa77..bc7271e 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/DateTimeUtils.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/DateTimeUtils.java @@ -19,29 +19,28 @@ public class DateTimeUtils { public static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm:ss"; - - public static Date strToDate(String dateTimeStr,String formatStr){ + public static Date strToDate(String dateTimeStr, String formatStr) { DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(formatStr); DateTime dateTime = dateTimeFormatter.parseDateTime(dateTimeStr); return dateTime.toDate(); } - public static String dateToStr(Date date,String formatStr){ - if(date == null){ + public static String dateToStr(Date date, String formatStr) { + if (date == null) { return StringUtils.EMPTY; } DateTime dateTime = new DateTime(date); return dateTime.toString(formatStr); } - public static Date strToDate(String dateTimeStr){ + public static Date strToDate(String dateTimeStr) { DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(STANDARD_FORMAT); DateTime dateTime = dateTimeFormatter.parseDateTime(dateTimeStr); return dateTime.toDate(); } - public static String dateToStr(Date date){ - if(date == null){ + public static String dateToStr(Date date) { + if (date == null) { return StringUtils.EMPTY; } DateTime dateTime = new DateTime(date); @@ -49,11 +48,9 @@ public class DateTimeUtils { } - - public static void main(String[] args) { - System.out.println(DateTimeUtils.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss")); - System.out.println(DateTimeUtils.strToDate("2010-01-01 11:11:11","yyyy-MM-dd HH:mm:ss")); + System.out.println(DateTimeUtils.dateToStr(new Date(), "yyyy-MM-dd HH:mm:ss")); + System.out.println(DateTimeUtils.strToDate("2010-01-01 11:11:11", "yyyy-MM-dd HH:mm:ss")); } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/MD5Utils.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/MD5Utils.java index f1e36d5..21eab06 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/MD5Utils.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/MD5Utils.java @@ -9,20 +9,21 @@ import java.security.SecureRandom; */ public class MD5Utils { + private static String getSalt = getSaltT(); + public static String md5(String src) { return DigestUtils.md5Hex(src); } - public static final String getSaltT (){ + public static final String getSaltT() { SecureRandom random = new SecureRandom(); byte bytes[] = new byte[15]; random.nextBytes(bytes); String salt = org.apache.commons.codec.binary.Base64.encodeBase64String(bytes); return salt; } - private static String getSalt = getSaltT(); - public static String MD5( String keyName ){ + public static String MD5(String keyName) { /** * 返回16 */ @@ -33,32 +34,35 @@ public class MD5Utils { /** * 测试使用 + * * @param inputPass * @return */ - public static String inputPassFormPass ( String inputPass ){ - String str = "" + getSalt.charAt(0) + getSalt.charAt(2) + inputPass + getSalt.charAt(4) + getSalt.charAt(6) ; + public static String inputPassFormPass(String inputPass) { + String str = "" + getSalt.charAt(0) + getSalt.charAt(2) + inputPass + getSalt.charAt(4) + getSalt.charAt(6); return MD5(str); } /** * 盐值salt 随机 二次加密 + * * @param inputPass * @return */ - public static String formPassFormPass ( String inputPass ){ - String str = "" + getSalt.charAt(0) + getSalt.charAt(2) +inputPass + getSalt.charAt(4) + getSalt.charAt(6) ; + public static String formPassFormPass(String inputPass) { + String str = "" + getSalt.charAt(0) + getSalt.charAt(2) + inputPass + getSalt.charAt(4) + getSalt.charAt(6); return MD5(str); } /** - * 第二次md5--反解密 用户登录验证 --- salt 可随机  + * 第二次md5--反解密 用户登录验证 --- salt 可随机 + * * @param formPass * @param salt * @return */ - public static String formPassToDBPass ( String formPass ,String salt ) { - String str = "" + salt.charAt(0) + salt.charAt(2)+ formPass + salt.charAt(4) + salt.charAt(6) ; + public static String formPassToDBPass(String formPass, String salt) { + String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(4) + salt.charAt(6); return MD5(str); } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/SnowflakeIdWorker.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/SnowflakeIdWorker.java index 8009ca5..510183e 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/SnowflakeIdWorker.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/SnowflakeIdWorker.java @@ -1,4 +1,5 @@ package com.geekq.miasha.utils; + /** * Twitter_Snowflake
* SnowFlake的结构如下(每部分用-分开):
@@ -14,52 +15,82 @@ package com.geekq.miasha.utils; public class SnowflakeIdWorker { // ==============================Fields=========================================== - /** 开始时间截 (2015-01-01) */ + /** + * 开始时间截 (2015-01-01) + */ private final long twepoch = 1420041600000L; - /** 机器id所占的位数 */ + /** + * 机器id所占的位数 + */ private final long workerIdBits = 5L; - /** 数据标识id所占的位数 */ + /** + * 数据标识id所占的位数 + */ private final long datacenterIdBits = 5L; - /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */ + /** + * 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) + */ private final long maxWorkerId = -1L ^ (-1L << workerIdBits); - /** 支持的最大数据标识id,结果是31 */ + /** + * 支持的最大数据标识id,结果是31 + */ private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); - /** 序列在id中占的位数 */ + /** + * 序列在id中占的位数 + */ private final long sequenceBits = 12L; - /** 机器ID向左移12位 */ + /** + * 机器ID向左移12位 + */ private final long workerIdShift = sequenceBits; - /** 数据标识id向左移17位(12+5) */ + /** + * 数据标识id向左移17位(12+5) + */ private final long datacenterIdShift = sequenceBits + workerIdBits; - /** 时间截向左移22位(5+5+12) */ + /** + * 时间截向左移22位(5+5+12) + */ private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits; - /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */ + /** + * 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) + */ private final long sequenceMask = -1L ^ (-1L << sequenceBits); - /** 工作机器ID(0~31) */ + /** + * 工作机器ID(0~31) + */ private long workerId; - /** 数据中心ID(0~31) */ + /** + * 数据中心ID(0~31) + */ private long datacenterId; - /** 毫秒内序列(0~4095) */ + /** + * 毫秒内序列(0~4095) + */ private long sequence = 0L; - /** 上次生成ID的时间截 */ + /** + * 上次生成ID的时间截 + */ private long lastTimestamp = -1L; //==============================Constructors===================================== + /** * 构造函数 - * @param workerId 工作ID (0~31) + * + * @param workerId 工作ID (0~31) * @param datacenterId 数据中心ID (0~31) */ public SnowflakeIdWorker(long workerId, long datacenterId) { @@ -75,18 +106,33 @@ public class SnowflakeIdWorker { /** * 生成订单唯一ID + * * @param workerId * @param datacenterId * @return */ - public static long getOrderId(long workerId, long datacenterId){ + public static long getOrderId(long workerId, long datacenterId) { SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); return idWorker.nextId(); } // ==============================Methods========================================== + + /** + * 测试 + */ + public static void main(String[] args) { + SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); + for (int i = 0; i < 1000; i++) { + long id = idWorker.nextId(); + System.out.println(Long.toBinaryString(id)); + System.out.println(id); + } + } + /** * 获得下一个ID (该方法是线程安全的) + * * @return SnowflakeId */ public synchronized long nextId() { @@ -124,6 +170,7 @@ public class SnowflakeIdWorker { /** * 阻塞到下一个毫秒,直到获得新的时间戳 + * * @param lastTimestamp 上次生成ID的时间截 * @return 当前时间戳 */ @@ -135,29 +182,16 @@ public class SnowflakeIdWorker { return timestamp; } + //==============================Test============================================= + /** * 返回以毫秒为单位的当前时间 + * * @return 当前时间(毫秒) */ protected long timeGen() { return System.currentTimeMillis(); } - //==============================Test============================================= - /** 测试 */ - public static void main(String[] args) { - SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0); - for (int i = 0; i < 1000; i++) { - long id = idWorker.nextId(); - System.out.println(Long.toBinaryString(id)); - System.out.println(id); - } - } - - - - - - } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UUIDUtil.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UUIDUtil.java index 9dcfe67..295c126 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UUIDUtil.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UUIDUtil.java @@ -4,7 +4,7 @@ import java.util.UUID; public class UUIDUtil { - public static String uuid(){ - return UUID.randomUUID().toString().replace("-",""); + public static String uuid() { + return UUID.randomUUID().toString().replace("-", ""); } } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UserContext.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UserContext.java index f6e5144..32c0669 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UserContext.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UserContext.java @@ -4,20 +4,20 @@ package com.geekq.miasha.utils; import com.geekq.miasha.entity.MiaoshaUser; public class UserContext { - - private static ThreadLocal userHolder = new ThreadLocal(); - - public static void setUser(MiaoshaUser user) { - userHolder.set(user); - } - - public static MiaoshaUser getUser() { - return userHolder.get(); - } + private static ThreadLocal userHolder = new ThreadLocal(); - public static void removeUser() { - userHolder.remove(); - } + public static MiaoshaUser getUser() { + + return userHolder.get(); + } + + public static void setUser(MiaoshaUser user) { + userHolder.set(user); + } + + public static void removeUser() { + userHolder.remove(); + } } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UserContext2.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UserContext2.java index a9514d8..2027e8d 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UserContext2.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/UserContext2.java @@ -8,8 +8,8 @@ import javax.servlet.http.HttpServletRequest; /** * @author 邱润泽 - * - * thread local 底层实现方法 和 UserContext 类似 本质上都是 每个线程工作都在自己的实例线程上拷贝 + *

+ * thread local 底层实现方法 和 UserContext 类似 本质上都是 每个线程工作都在自己的实例线程上拷贝 */ public class UserContext2 { diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/ValidatorUtil.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/ValidatorUtil.java index 4829de7..a9e40c4 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/ValidatorUtil.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/utils/ValidatorUtil.java @@ -7,16 +7,16 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class ValidatorUtil { - - private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}"); - - public static boolean isMobile(String src) { - if(StringUtils.isEmpty(src)) { - return false; - } - Matcher m = mobile_pattern.matcher(src); - return m.matches(); - } - + + private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}"); + + public static boolean isMobile(String src) { + if (StringUtils.isEmpty(src)) { + return false; + } + Matcher m = mobile_pattern.matcher(src); + return m.matches(); + } + } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/validator/MobileCheck.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/validator/MobileCheck.java index f374b9e..3744571 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/validator/MobileCheck.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/validator/MobileCheck.java @@ -9,7 +9,7 @@ import java.lang.annotation.*; @Documented @Constraint(validatedBy = {MobileValidator.class}) public @interface MobileCheck { - boolean required() default true ; + boolean required() default true; String message() default "手机号码格式有误!"; diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/validator/MobileValidator.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/validator/MobileValidator.java index e8bdbdc..c3b1b1b 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/validator/MobileValidator.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/validator/MobileValidator.java @@ -8,22 +8,22 @@ import javax.validation.ConstraintValidatorContext; public class MobileValidator implements ConstraintValidator { - private boolean require = false ; + private boolean require = false; @Override public void initialize(MobileCheck isMobile) { - require = isMobile.required() ; + require = isMobile.required(); } @Override public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { - if(require){ - return ValidatorUtil.isMobile(value) ; - }else{ - if(StringUtils.isEmpty(value)){ - return true ; - }else { - return ValidatorUtil.isMobile(value) ; + if (require) { + return ValidatorUtil.isMobile(value); + } else { + if (StringUtils.isEmpty(value)) { + return true; + } else { + return ValidatorUtil.isMobile(value); } } } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/GoodsDetailVo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/GoodsDetailVo.java index 5f337eb..11dfce9 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/GoodsDetailVo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/GoodsDetailVo.java @@ -13,9 +13,9 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class GoodsDetailVo { - private int miaoshaStatus = 0; - private int remainSeconds = 0; - private GoodsVoOrder goods ; - private MiaoshaUser user; + private int miaoshaStatus = 0; + private int remainSeconds = 0; + private GoodsVoOrder goods; + private MiaoshaUser user; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/GoodsVo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/GoodsVo.java index ef04733..2c8942a 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/GoodsVo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/GoodsVo.java @@ -15,8 +15,8 @@ import java.util.Date; @NoArgsConstructor @Alias("goodsVo") public class GoodsVo extends Goods { - private Double miaoshaPrice; - private Integer stockCount; - private Date startDate; - private Date endDate; + private Double miaoshaPrice; + private Integer stockCount; + private Date startDate; + private Date endDate; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/LoginVo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/LoginVo.java index 9dcdae2..323cd3e 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/LoginVo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/LoginVo.java @@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull; @NoArgsConstructor public class LoginVo { @NotNull - private String nickname ; + private String nickname; @NotNull private String password; diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/MiaoShaMessageVo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/MiaoShaMessageVo.java index 0c06b82..d840b7f 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/MiaoShaMessageVo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/MiaoShaMessageVo.java @@ -16,32 +16,32 @@ import java.util.Date; public class MiaoShaMessageVo implements Serializable { private static final long serialVersionUID = -1341750239648941486L; - private Integer id ; + private Integer id; private Long userId; - private String goodId ; + private String goodId; private Date orderId; - private Long messageId ; + private Long messageId; - private String content ; + private String content; private Date createTime; - private Integer status ; + private Integer status; - private Date overTime ; + private Date overTime; - private Integer messageType ; + private Integer messageType; - private Integer sendType ; + private Integer sendType; - private String goodName ; + private String goodName; - private BigDecimal price ; + private BigDecimal price; - private String messageHead ; + private String messageHead; } diff --git a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/OrderDetailVo.java b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/OrderDetailVo.java index 9f46e7b..3bb8d81 100644 --- a/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/OrderDetailVo.java +++ b/miaosha-v2/miaosha-common/src/main/java/com/geekq/miasha/vo/OrderDetailVo.java @@ -11,18 +11,22 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class OrderDetailVo { - private GoodsVo goods; - private OrderInfo order; - public GoodsVo getGoods() { - return goods; - } - public void setGoods(GoodsVo goods) { - this.goods = goods; - } - public OrderInfo getOrder() { - return order; - } - public void setOrder(OrderInfo order) { - this.order = order; - } + private GoodsVo goods; + private OrderInfo order; + + public GoodsVo getGoods() { + return goods; + } + + public void setGoods(GoodsVo goods) { + this.goods = goods; + } + + public OrderInfo getOrder() { + return order; + } + + public void setOrder(OrderInfo order) { + this.order = order; + } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/mapper/LogininfoMapper.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/mapper/LogininfoMapper.java index 7c58d4f..fd03823 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/mapper/LogininfoMapper.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/mapper/LogininfoMapper.java @@ -8,24 +8,24 @@ import java.util.Map; public interface LogininfoMapper { - int deleteByPrimaryKey(Long id); + int deleteByPrimaryKey(Long id); - int insert(Logininfo record); + int insert(Logininfo record); - Logininfo selectByPrimaryKey(Long id); + Logininfo selectByPrimaryKey(Long id); - List selectAll(); + List selectAll(); - int updateByPrimaryKey(Logininfo record); + int updateByPrimaryKey(Logininfo record); - int getCountByNickname(@Param("nickname") String nickname, + int getCountByNickname(@Param("nickname") String nickname, @Param("userType") int userType); - Logininfo getLoginInfoByNickname(@Param("nickname") String nickname, + Logininfo getLoginInfoByNickname(@Param("nickname") String nickname, @Param("userType") int userType); - Logininfo login(@Param("name") String name, + Logininfo login(@Param("name") String name, @Param("password") String password, @Param("userType") int userType); - List> autoComplate(@Param("word") String word, @Param("userType") int userType); + List> autoComplate(@Param("word") String word, @Param("userType") int userType); } \ No newline at end of file diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/mapper/MiaoShaUserMapper.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/mapper/MiaoShaUserMapper.java index aa4c1b1..59eccb5 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/mapper/MiaoShaUserMapper.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/mapper/MiaoShaUserMapper.java @@ -8,9 +8,9 @@ import org.apache.ibatis.annotations.Param; */ public interface MiaoShaUserMapper { - public MiaoshaUser getByNickname(@Param("nickname") String nickname) ; + public MiaoshaUser getByNickname(@Param("nickname") String nickname); - public MiaoshaUser getById(@Param("id") long id) ; + public MiaoshaUser getById(@Param("id") long id); public void update(MiaoshaUser toBeUpdate); diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQConfig.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQConfig.java index 47261c6..6609f69 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQConfig.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQConfig.java @@ -10,90 +10,100 @@ import java.util.Map; @Configuration public class MQConfig { - /** - * /usr/sbin/rabbitmq-plugins enable rabbitmq_management - * mq页面 - */ - public static final String MIAOSHA_QUEUE = "miaosha.queue"; + /** + * /usr/sbin/rabbitmq-plugins enable rabbitmq_management + * mq页面 + */ + public static final String MIAOSHA_QUEUE = "miaosha.queue"; - public static final String EXCHANGE_TOPIC = "exchange_topic"; + public static final String EXCHANGE_TOPIC = "exchange_topic"; - public static final String MIAOSHA_MESSAGE = "miaosha_mess"; + public static final String MIAOSHA_MESSAGE = "miaosha_mess"; + + public static final String MIAOSHATEST = "miaoshatest"; + + public static final String QUEUE = "queue"; + public static final String TOPIC_QUEUE1 = "topic.queue1"; + public static final String TOPIC_QUEUE2 = "topic.queue2"; + public static final String HEADER_QUEUE = "header.queue"; + public static final String TOPIC_EXCHANGE = "topicExchage"; + public static final String FANOUT_EXCHANGE = "fanoutxchage"; + public static final String HEADERS_EXCHANGE = "headersExchage"; + + /** + * Direct模式 交换机Exchange + */ + @Bean + public Queue queue() { + return new Queue(QUEUE, true); + } + + /** + * Topic模式 交换机Exchange + */ + @Bean + public Queue topicQueue1() { + return new Queue(TOPIC_QUEUE1, true); + } + + @Bean + public Queue topicQueue2() { + return new Queue(TOPIC_QUEUE2, true); + } + + @Bean + public TopicExchange topicExchage() { + return new TopicExchange(TOPIC_EXCHANGE); + } + + @Bean + public Binding topicBinding1() { + return BindingBuilder.bind(topicQueue1()).to(topicExchage()).with("topic.key1"); + } + + @Bean + public Binding topicBinding2() { + return BindingBuilder.bind(topicQueue2()).to(topicExchage()).with("topic.#"); + } + + /** + * Fanout模式 交换机Exchange + */ + @Bean + public FanoutExchange fanoutExchage() { + return new FanoutExchange(FANOUT_EXCHANGE); + } + + @Bean + public Binding FanoutBinding1() { + return BindingBuilder.bind(topicQueue1()).to(fanoutExchage()); + } + + @Bean + public Binding FanoutBinding2() { + return BindingBuilder.bind(topicQueue2()).to(fanoutExchage()); + } + + /** + * Header模式 交换机Exchange + */ + @Bean + public HeadersExchange headersExchage() { + return new HeadersExchange(HEADERS_EXCHANGE); + } + + @Bean + public Queue headerQueue1() { + return new Queue(HEADER_QUEUE, true); + } + + @Bean + public Binding headerBinding() { + Map map = new HashMap(); + map.put("header1", "value1"); + map.put("header2", "value2"); + return BindingBuilder.bind(headerQueue1()).to(headersExchage()).whereAll(map).match(); + } - public static final String MIAOSHATEST = "miaoshatest"; - public static final String QUEUE = "queue"; - public static final String TOPIC_QUEUE1 = "topic.queue1"; - public static final String TOPIC_QUEUE2 = "topic.queue2"; - public static final String HEADER_QUEUE = "header.queue"; - public static final String TOPIC_EXCHANGE = "topicExchage"; - public static final String FANOUT_EXCHANGE = "fanoutxchage"; - public static final String HEADERS_EXCHANGE = "headersExchage"; - - /** - * Direct模式 交换机Exchange - * */ - @Bean - public Queue queue() { - return new Queue(QUEUE, true); - } - - /** - * Topic模式 交换机Exchange - * */ - @Bean - public Queue topicQueue1() { - return new Queue(TOPIC_QUEUE1, true); - } - @Bean - public Queue topicQueue2() { - return new Queue(TOPIC_QUEUE2, true); - } - @Bean - public TopicExchange topicExchage(){ - return new TopicExchange(TOPIC_EXCHANGE); - } - @Bean - public Binding topicBinding1() { - return BindingBuilder.bind(topicQueue1()).to(topicExchage()).with("topic.key1"); - } - @Bean - public Binding topicBinding2() { - return BindingBuilder.bind(topicQueue2()).to(topicExchage()).with("topic.#"); - } - /** - * Fanout模式 交换机Exchange - * */ - @Bean - public FanoutExchange fanoutExchage(){ - return new FanoutExchange(FANOUT_EXCHANGE); - } - @Bean - public Binding FanoutBinding1() { - return BindingBuilder.bind(topicQueue1()).to(fanoutExchage()); - } - @Bean - public Binding FanoutBinding2() { - return BindingBuilder.bind(topicQueue2()).to(fanoutExchage()); - } - /** - * Header模式 交换机Exchange - * */ - @Bean - public HeadersExchange headersExchage(){ - return new HeadersExchange(HEADERS_EXCHANGE); - } - @Bean - public Queue headerQueue1() { - return new Queue(HEADER_QUEUE, true); - } - @Bean - public Binding headerBinding() { - Map map = new HashMap(); - map.put("header1", "value1"); - map.put("header2", "value2"); - return BindingBuilder.bind(headerQueue1()).to(headersExchage()).whereAll(map).match(); - } - - } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java index 8c7fbc7..80b9ac3 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQReceiver.java @@ -20,53 +20,52 @@ import org.springframework.stereotype.Service; @Service public class MQReceiver { - private static Logger log = LoggerFactory.getLogger(MQReceiver.class); - - @Autowired - RedisService redisService; - - @Autowired - GoodsService goodsService; - - @Autowired - OrderService orderService; - - @Autowired - MiaoshaService miaoshaService; + private static Logger log = LoggerFactory.getLogger(MQReceiver.class); - @Autowired - private com.geekq.api.service.GoodsService goodsServiceRpc; + @Autowired + RedisService redisService; + + @Autowired + GoodsService goodsService; + + @Autowired + OrderService orderService; + + @Autowired + MiaoshaService miaoshaService; + + @Autowired + private com.geekq.api.service.GoodsService goodsServiceRpc; // @Autowired // MiaoShaMessageService messageService ; - - @RabbitListener(queues=MQConfig.MIAOSHA_QUEUE) - public void receive(String message) { - log.info("receive message:"+message); - MiaoshaMessage mm = RedisService.stringToBean(message, MiaoshaMessage.class); - MiaoshaUser user = mm.getUser(); - long goodsId = mm.getGoodsId(); + + @RabbitListener(queues = MQConfig.MIAOSHA_QUEUE) + public void receive(String message) { + log.info("receive message:" + message); + MiaoshaMessage mm = RedisService.stringToBean(message, MiaoshaMessage.class); + MiaoshaUser user = mm.getUser(); + long goodsId = mm.getGoodsId(); // GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId); - ResultGeekQOrder goodsVoOrderResultGeekQOrder = goodsServiceRpc.getGoodsVoByGoodsId(goodsId); - if(!AbstractResultOrder.isSuccess(goodsVoOrderResultGeekQOrder)){ - throw new GlobleException(ResultStatus.SESSION_ERROR); - } - - GoodsVoOrder goods= goodsVoOrderResultGeekQOrder.getData(); - int stock = goods.getStockCount(); - if(stock <= 0) { - return; - } - //判断是否已经秒杀到了 - MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(Long.valueOf(user.getNickname()), goodsId); - if(order != null) { - return; - } - //减库存 下订单 写入秒杀订单 - miaoshaService.miaosha(user, goods); - } + ResultGeekQOrder goodsVoOrderResultGeekQOrder = goodsServiceRpc.getGoodsVoByGoodsId(goodsId); + if (!AbstractResultOrder.isSuccess(goodsVoOrderResultGeekQOrder)) { + throw new GlobleException(ResultStatus.SESSION_ERROR); + } + GoodsVoOrder goods = goodsVoOrderResultGeekQOrder.getData(); + int stock = goods.getStockCount(); + if (stock <= 0) { + return; + } + //判断是否已经秒杀到了 + MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(Long.valueOf(user.getNickname()), goodsId); + if (order != null) { + return; + } + //减库存 下订单 写入秒杀订单 + miaoshaService.miaosha(user, goods); + } // @RabbitListener(queues=MQConfig.MIAOSHATEST) diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java index e662fff..d231c20 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MQSender.java @@ -12,38 +12,40 @@ import org.springframework.stereotype.Service; @Service public class MQSender { - private static Logger log = LoggerFactory.getLogger(MQSender.class); - - @Autowired - AmqpTemplate amqpTemplate ; + private static Logger log = LoggerFactory.getLogger(MQSender.class); - @Autowired - private RabbitTemplate rabbitTemplate; + @Autowired + AmqpTemplate amqpTemplate; - public void sendMiaoshaMessage(MiaoshaMessage mm) { - String msg = RedisService.beanToString(mm); - log.info("send message:"+msg); - amqpTemplate.convertAndSend(MQConfig.MIAOSHA_QUEUE, msg); - } + @Autowired + private RabbitTemplate rabbitTemplate; - /** - * 站内信 - * @param mm - */ - public void sendMessage(MiaoshaMessage mm) { -// String msg = RedisService.beanToString(mm); - log.info("send message:"+"11111"); - rabbitTemplate.convertAndSend(MQConfig.EXCHANGE_TOPIC,"miaosha_*", "111111111"); - } + public void sendMiaoshaMessage(MiaoshaMessage mm) { + String msg = RedisService.beanToString(mm); + log.info("send message:" + msg); + amqpTemplate.convertAndSend(MQConfig.MIAOSHA_QUEUE, msg); + } /** * 站内信 + * + * @param mm + */ + public void sendMessage(MiaoshaMessage mm) { +// String msg = RedisService.beanToString(mm); + log.info("send message:" + "11111"); + rabbitTemplate.convertAndSend(MQConfig.EXCHANGE_TOPIC, "miaosha_*", "111111111"); + } + + /** + * 站内信 + * * @param */ public void sendRegisterMessage(MiaoShaMessageVo miaoShaMessageVo) { - String msg = RedisService.beanToString(miaoShaMessageVo); - log.info("send message:{}" , msg); - rabbitTemplate.convertAndSend(MQConfig.MIAOSHATEST,msg); + String msg = RedisService.beanToString(miaoShaMessageVo); + log.info("send message:{}", msg); + rabbitTemplate.convertAndSend(MQConfig.MIAOSHATEST, msg); // rabbitTemplate.convertAndSend(MQConfig.EXCHANGE_TOPIC,"miaosha_*", msg); } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java index 607c435..2daeb30 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/rabbitmq/MiaoshaMessage.java @@ -4,18 +4,22 @@ package com.geekq.miaosha.rabbitmq; import com.geekq.miasha.entity.MiaoshaUser; public class MiaoshaMessage { - private MiaoshaUser user; - private long goodsId; - public MiaoshaUser getUser() { - return user; - } - public void setUser(MiaoshaUser user) { - this.user = user; - } - public long getGoodsId() { - return goodsId; - } - public void setGoodsId(long goodsId) { - this.goodsId = goodsId; - } + private MiaoshaUser user; + private long goodsId; + + public MiaoshaUser getUser() { + return user; + } + + public void setUser(MiaoshaUser user) { + this.user = user; + } + + public long getGoodsId() { + return goodsId; + } + + public void setGoodsId(long goodsId) { + this.goodsId = goodsId; + } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/BasePrefix.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/BasePrefix.java index 8739387..9da654a 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/BasePrefix.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/BasePrefix.java @@ -4,16 +4,16 @@ public abstract class BasePrefix implements KeyPrefix { private int expireSeconds; - private String prefix ; + private String prefix; - public BasePrefix(int expireSeconds , String prefix ){ + public BasePrefix(int expireSeconds, String prefix) { - this.expireSeconds = expireSeconds ; + this.expireSeconds = expireSeconds; this.prefix = prefix; } public BasePrefix(String prefix) { - this(0,prefix); + this(0, prefix); } @Override @@ -23,11 +23,12 @@ public abstract class BasePrefix implements KeyPrefix { /** * 可确定获取唯一key + * * @return */ @Override public String getPrefix() { String className = getClass().getSimpleName(); - return className+":" +prefix; + return className + ":" + prefix; } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/GoodsKey.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/GoodsKey.java index 4c21370..069f025 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/GoodsKey.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/GoodsKey.java @@ -2,11 +2,11 @@ package com.geekq.miaosha.redis; public class GoodsKey extends BasePrefix { - private GoodsKey(int expireSeconds, String prefix) { - super(expireSeconds, prefix); - } - public static GoodsKey getGoodsList = new GoodsKey(60, "gl"); - public static GoodsKey getGoodsDetail = new GoodsKey(60, "gd"); - public static GoodsKey getMiaoshaGoodsStock = new GoodsKey(0, "gs"); + public static GoodsKey getGoodsList = new GoodsKey(60, "gl"); + public static GoodsKey getGoodsDetail = new GoodsKey(60, "gd"); + public static GoodsKey getMiaoshaGoodsStock = new GoodsKey(0, "gs"); + private GoodsKey(int expireSeconds, String prefix) { + super(expireSeconds, prefix); + } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java index 0b2e641..7574f98 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/KeyPrefix.java @@ -2,8 +2,8 @@ package com.geekq.miaosha.redis; public interface KeyPrefix { - public int expireSeconds() ; + public int expireSeconds(); - public String getPrefix() ; + public String getPrefix(); } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java index 3c5c042..d7b42a4 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/MiaoShaUserKey.java @@ -1,11 +1,11 @@ package com.geekq.miaosha.redis; -public class MiaoShaUserKey extends BasePrefix{ - public static final int TOKEN_EXPIRE = 3600 *24*2; - public static MiaoShaUserKey token = new MiaoShaUserKey(TOKEN_EXPIRE,"tk") ; +public class MiaoShaUserKey extends BasePrefix { + public static final int TOKEN_EXPIRE = 3600 * 24 * 2; + public static MiaoShaUserKey token = new MiaoShaUserKey(TOKEN_EXPIRE, "tk"); public static MiaoShaUserKey getByNickName = new MiaoShaUserKey(0, "nickName"); - public MiaoShaUserKey(int expireSeconds ,String prefix) { - super(expireSeconds,prefix); + public MiaoShaUserKey(int expireSeconds, String prefix) { + super(expireSeconds, prefix); } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java index 889a191..c899df5 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/MiaoshaKey.java @@ -1,13 +1,13 @@ package com.geekq.miaosha.redis; -public class MiaoshaKey extends BasePrefix{ +public class MiaoshaKey extends BasePrefix { - private MiaoshaKey( int expireSeconds, String prefix) { - super(expireSeconds, prefix); - } - public static MiaoshaKey isGoodsOver = new MiaoshaKey(0, "go"); - public static MiaoshaKey getMiaoshaPath = new MiaoshaKey(60, "mp"); - public static MiaoshaKey getMiaoshaVerifyCode = new MiaoshaKey(300, "vc"); - public static MiaoshaKey getMiaoshaVerifyCodeRegister = new MiaoshaKey(300, "register"); + public static MiaoshaKey isGoodsOver = new MiaoshaKey(0, "go"); + public static MiaoshaKey getMiaoshaPath = new MiaoshaKey(60, "mp"); + public static MiaoshaKey getMiaoshaVerifyCode = new MiaoshaKey(300, "vc"); + public static MiaoshaKey getMiaoshaVerifyCodeRegister = new MiaoshaKey(300, "register"); + private MiaoshaKey(int expireSeconds, String prefix) { + super(expireSeconds, prefix); + } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/OrderKey.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/OrderKey.java index f7985d6..3aea2f9 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/OrderKey.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/OrderKey.java @@ -2,10 +2,10 @@ package com.geekq.miaosha.redis; public class OrderKey extends BasePrefix { - public OrderKey( String prefix) { - super( prefix); - } - - public static OrderKey getMiaoshaOrderByUidGid = new OrderKey("moug"); + + + public OrderKey(String prefix) { + super(prefix); + } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisConfig.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisConfig.java index f798da5..e6ef563 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisConfig.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisConfig.java @@ -4,7 +4,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component -@ConfigurationProperties(prefix="redis") +@ConfigurationProperties(prefix = "redis") public class RedisConfig { private String host; private int port; @@ -13,45 +13,59 @@ public class RedisConfig { private int poolMaxTotal; private int poolMaxIdle; private int poolMaxWait;//秒 + public String getHost() { return host; } + public void setHost(String host) { this.host = host; } + public int getPort() { return port; } + public void setPort(int port) { this.port = port; } + public int getTimeout() { return timeout; } + public void setTimeout(int timeout) { this.timeout = timeout; } + public String getPassword() { return password; } + public void setPassword(String password) { this.password = password; } + public int getPoolMaxTotal() { return poolMaxTotal; } + public void setPoolMaxTotal(int poolMaxTotal) { this.poolMaxTotal = poolMaxTotal; } + public int getPoolMaxIdle() { return poolMaxIdle; } + public void setPoolMaxIdle(int poolMaxIdle) { this.poolMaxIdle = poolMaxIdle; } + public int getPoolMaxWait() { return poolMaxWait; } + public void setPoolMaxWait(int poolMaxWait) { this.poolMaxWait = poolMaxWait; } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java index 3398c11..9fc9a11 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisPoolFactory.java @@ -9,18 +9,18 @@ import redis.clients.jedis.JedisPoolConfig; @Service public class RedisPoolFactory { - @Autowired - RedisConfig redisConfig; - - @Bean - public JedisPool JedisPoolFactory() { - JedisPoolConfig poolConfig = new JedisPoolConfig(); - poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle()); - poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal()); - poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000); - JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(), - redisConfig.getTimeout()*1000, redisConfig.getPassword(), 0); - return jp; - } - + @Autowired + RedisConfig redisConfig; + + @Bean + public JedisPool JedisPoolFactory() { + JedisPoolConfig poolConfig = new JedisPoolConfig(); + poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle()); + poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal()); + poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000); + JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(), + redisConfig.getTimeout() * 1000, redisConfig.getPassword(), 0); + return jp; + } + } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisService.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisService.java index 71cea09..7e97e67 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisService.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedisService.java @@ -15,193 +15,80 @@ import java.util.List; @Service @Slf4j public class RedisService { - - @Autowired + + @Autowired JedisPool jedisPool; - /** - * 设置失效时间 - * @param key - * @param value - * @return - */ - public Long setnx(String key ,String value){ - Jedis jedis =null; - Long result = null; - try { - jedis = jedisPool.getResource(); - result = jedis.setnx(key,value); - }catch (Exception e){ - log.error("expire key:{} error",key,e); - jedisPool.returnResource(jedis); - return result; - } - jedisPool.returnResource(jedis); - return result; - - } - /** - * 设置key的有效期,单位是秒 - * @param key - * @param exTime - * @return - */ - public Long expire(String key,int exTime){ - Jedis jedis = null; - Long result = null; - try { - jedis = jedisPool.getResource(); - result = jedis.expire(key,exTime); - } catch (Exception e) { - log.error("expire key:{} error",key,e); - jedisPool.returnBrokenResource(jedis); - return result; - } - jedisPool.returnResource(jedis); - return result; - } - - /** - * 获取当个对象 - * */ - public T get(KeyPrefix prefix, String key, Class clazz) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - String str = jedis.get(realKey); - T t = stringToBean(str, clazz); - return t; - }finally { - returnToPool(jedis); - } - } - - public String get(String key){ - Jedis jedis = null; - String result = null; - try { - jedis = jedisPool.getResource(); - result = jedis.get(key); - } catch (Exception e) { - log.error("expire key:{} error",key,e); - jedisPool.returnBrokenResource(jedis); - return result; + public static String beanToString(T value) { + if (value == null) { + return null; + } + Class clazz = value.getClass(); + if (clazz == int.class || clazz == Integer.class) { + return "" + value; + } else if (clazz == String.class) { + return (String) value; + } else if (clazz == long.class || clazz == Long.class) { + return "" + value; + } else { + return JSON.toJSONString(value); } - jedisPool.returnResource(jedis); - return result; } - - public String getset(String key,String value){ - Jedis jedis = null; - String result = null; - try { - jedis = jedisPool.getResource(); - result = jedis.getSet(key,value); - } catch (Exception e) { - log.error("expire key:{} error",key,e); - jedisPool.returnBrokenResource(jedis); - return result; + @SuppressWarnings("unchecked") + public static T stringToBean(String str, Class clazz) { + if (str == null || str.length() <= 0 || clazz == null) { + return null; + } + if (clazz == int.class || clazz == Integer.class) { + return (T) Integer.valueOf(str); + } else if (clazz == String.class) { + return (T) str; + } else if (clazz == long.class || clazz == Long.class) { + return (T) Long.valueOf(str); + } else { + return JSON.toJavaObject(JSON.parseObject(str), clazz); } - jedisPool.returnResource(jedis); - return result; } - /** - * 设置对象 - * */ - public boolean set(KeyPrefix prefix, String key, T value) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - String str = beanToString(value); - if(str == null || str.length() <= 0) { - return false; - } - //生成真正的key - String realKey = prefix.getPrefix() + key; - int seconds = prefix.expireSeconds(); - if(seconds <= 0) { - jedis.set(realKey, str); - }else { - jedis.setex(realKey, seconds, str); - } - return true; - }finally { - returnToPool(jedis); - } - } - - /** - * 判断key是否存在 - * */ - public boolean exists(KeyPrefix prefix, String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - return jedis.exists(realKey); - }finally { - returnToPool(jedis); - } - } - - /** - * 删除 - * */ - public boolean delete(KeyPrefix prefix, String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - long ret = jedis.del(realKey); - return ret > 0; - }finally { - returnToPool(jedis); - } - } - - /** - * 增加值 - * */ - public Long incr(KeyPrefix prefix, String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - return jedis.incr(realKey); - }finally { - returnToPool(jedis); - } - } - - /** - * 减少值 - * */ - public Long decr(KeyPrefix prefix, String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - //生成真正的key - String realKey = prefix.getPrefix() + key; - return jedis.decr(realKey); - }finally { - returnToPool(jedis); - } - } - public Long del(String key){ + /** + * 设置失效时间 + * + * @param key + * @param value + * @return + */ + public Long setnx(String key, String value) { Jedis jedis = null; Long result = null; try { - jedis = jedisPool.getResource(); - result = jedis.del(key); + jedis = jedisPool.getResource(); + result = jedis.setnx(key, value); } catch (Exception e) { - log.error("del key:{} error",key,e); + log.error("expire key:{} error", key, e); + jedisPool.returnResource(jedis); + return result; + } + jedisPool.returnResource(jedis); + return result; + + } + + /** + * 设置key的有效期,单位是秒 + * + * @param key + * @param exTime + * @return + */ + public Long expire(String key, int exTime) { + Jedis jedis = null; + Long result = null; + try { + jedis = jedisPool.getResource(); + result = jedis.expire(key, exTime); + } catch (Exception e) { + log.error("expire key:{} error", key, e); jedisPool.returnBrokenResource(jedis); return result; } @@ -209,92 +96,207 @@ public class RedisService { return result; } + /** + * 获取当个对象 + */ + public T get(KeyPrefix prefix, String key, Class clazz) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + String str = jedis.get(realKey); + T t = stringToBean(str, clazz); + return t; + } finally { + returnToPool(jedis); + } + } - public boolean delete(KeyPrefix prefix) { - if(prefix == null) { - return false; - } - List keys = scanKeys(prefix.getPrefix()); - if(keys==null || keys.size() <= 0) { - return true; - } - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - jedis.del(keys.toArray(new String[0])); - return true; - } catch (final Exception e) { - e.printStackTrace(); - return false; - } finally { - if(jedis != null) { - jedis.close(); - } - } - } - - public List scanKeys(String key) { - Jedis jedis = null; - try { - jedis = jedisPool.getResource(); - List keys = new ArrayList(); - String cursor = "0"; - ScanParams sp = new ScanParams(); - sp.match("*"+key+"*"); - sp.count(100); - do{ - ScanResult ret = jedis.scan(cursor, sp); - List result = ret.getResult(); - if(result!=null && result.size() > 0){ - keys.addAll(result); - } - //再处理cursor - cursor = ret.getCursor(); - }while(!cursor.equals("0")); - return keys; - } finally { - if (jedis != null) { - jedis.close(); - } - } - } - - public static String beanToString(T value) { - if(value == null) { - return null; - } - Class clazz = value.getClass(); - if(clazz == int.class || clazz == Integer.class) { - return ""+value; - }else if(clazz == String.class) { - return (String)value; - }else if(clazz == long.class || clazz == Long.class) { - return ""+value; - }else { - return JSON.toJSONString(value); - } - } + public String get(String key) { + Jedis jedis = null; + String result = null; + try { + jedis = jedisPool.getResource(); + result = jedis.get(key); + } catch (Exception e) { + log.error("expire key:{} error", key, e); + jedisPool.returnBrokenResource(jedis); + return result; + } + jedisPool.returnResource(jedis); + return result; + } - @SuppressWarnings("unchecked") - public static T stringToBean(String str, Class clazz) { - if(str == null || str.length() <= 0 || clazz == null) { - return null; - } - if(clazz == int.class || clazz == Integer.class) { - return (T)Integer.valueOf(str); - }else if(clazz == String.class) { - return (T)str; - }else if(clazz == long.class || clazz == Long.class) { - return (T)Long.valueOf(str); - }else { - return JSON.toJavaObject(JSON.parseObject(str), clazz); - } - } + public String getset(String key, String value) { + Jedis jedis = null; + String result = null; + try { + jedis = jedisPool.getResource(); + result = jedis.getSet(key, value); + } catch (Exception e) { + log.error("expire key:{} error", key, e); + jedisPool.returnBrokenResource(jedis); + return result; + } + jedisPool.returnResource(jedis); + return result; + } - private void returnToPool(Jedis jedis) { - if(jedis != null) { - jedis.close(); - } - } + /** + * 设置对象 + */ + public boolean set(KeyPrefix prefix, String key, T value) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + String str = beanToString(value); + if (str == null || str.length() <= 0) { + return false; + } + //生成真正的key + String realKey = prefix.getPrefix() + key; + int seconds = prefix.expireSeconds(); + if (seconds <= 0) { + jedis.set(realKey, str); + } else { + jedis.setex(realKey, seconds, str); + } + return true; + } finally { + returnToPool(jedis); + } + } + + /** + * 判断key是否存在 + */ + public boolean exists(KeyPrefix prefix, String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + return jedis.exists(realKey); + } finally { + returnToPool(jedis); + } + } + + /** + * 删除 + */ + public boolean delete(KeyPrefix prefix, String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + long ret = jedis.del(realKey); + return ret > 0; + } finally { + returnToPool(jedis); + } + } + + /** + * 增加值 + */ + public Long incr(KeyPrefix prefix, String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + return jedis.incr(realKey); + } finally { + returnToPool(jedis); + } + } + + /** + * 减少值 + */ + public Long decr(KeyPrefix prefix, String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + //生成真正的key + String realKey = prefix.getPrefix() + key; + return jedis.decr(realKey); + } finally { + returnToPool(jedis); + } + } + + public Long del(String key) { + Jedis jedis = null; + Long result = null; + try { + jedis = jedisPool.getResource(); + result = jedis.del(key); + } catch (Exception e) { + log.error("del key:{} error", key, e); + jedisPool.returnBrokenResource(jedis); + return result; + } + jedisPool.returnResource(jedis); + return result; + } + + public boolean delete(KeyPrefix prefix) { + if (prefix == null) { + return false; + } + List keys = scanKeys(prefix.getPrefix()); + if (keys == null || keys.size() <= 0) { + return true; + } + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + jedis.del(keys.toArray(new String[0])); + return true; + } catch (final Exception e) { + e.printStackTrace(); + return false; + } finally { + if (jedis != null) { + jedis.close(); + } + } + } + + public List scanKeys(String key) { + Jedis jedis = null; + try { + jedis = jedisPool.getResource(); + List keys = new ArrayList(); + String cursor = "0"; + ScanParams sp = new ScanParams(); + sp.match("*" + key + "*"); + sp.count(100); + do { + ScanResult ret = jedis.scan(cursor, sp); + List result = ret.getResult(); + if (result != null && result.size() > 0) { + keys.addAll(result); + } + //再处理cursor + cursor = ret.getCursor(); + } while (!cursor.equals("0")); + return keys; + } finally { + if (jedis != null) { + jedis.close(); + } + } + } + + private void returnToPool(Jedis jedis) { + if (jedis != null) { + jedis.close(); + } + } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedissLockUtil.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedissLockUtil.java index 954467e..4a37354 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedissLockUtil.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/RedissLockUtil.java @@ -4,7 +4,6 @@ import java.util.concurrent.TimeUnit; /** * redis分布式锁帮助类 - * */ public class RedissLockUtil { private static DistributedLocker redissLock; @@ -23,6 +22,7 @@ public class RedissLockUtil { /** * 带超时的锁 + * * @param lockKey * @param timeout 超时时间 单位:秒 */ @@ -32,11 +32,12 @@ public class RedissLockUtil { /** * 带超时的锁 + * * @param lockKey - * @param unit 时间单位 + * @param unit 时间单位 * @param timeout 超时时间 */ - public static void lock(String lockKey, TimeUnit unit , int timeout) { + public static void lock(String lockKey, TimeUnit unit, int timeout) { redissLock.lock(lockKey, unit, timeout); } } \ No newline at end of file diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/Userkey.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/Userkey.java index c07fd8d..70f9d9b 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/Userkey.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/Userkey.java @@ -2,12 +2,11 @@ package com.geekq.miaosha.redis; public class Userkey extends BasePrefix { + public static Userkey getById = new Userkey("id"); + public static Userkey getByName = new Userkey("name"); + private Userkey(String prefix) { - super( prefix); + super(prefix); } - public static Userkey getById = new Userkey("id") ; - - public static Userkey getByName = new Userkey("name") ; - } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLimitRateWithLUA.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLimitRateWithLUA.java index 4e168ce..d1f4214 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLimitRateWithLUA.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLimitRateWithLUA.java @@ -18,7 +18,7 @@ public class RedisLimitRateWithLUA { public void run() { try { latch.await(); - System.out.println("请求是否被执行:"+accquire()); + System.out.println("请求是否被执行:" + accquire()); } catch (Exception e) { e.printStackTrace(); } @@ -39,12 +39,12 @@ public class RedisLimitRateWithLUA { " local current = tonumber(redis.call('get', key) or '0')" + " if current + 1 > limit " + " then return 0 " + - " else "+ + " else " + " redis.call('INCRBY', key,'1')" + " redis.call('expire', key,'2') " + " end return 1 "; - String key = "ip:" + System.currentTimeMillis()/1000; // 当前秒 + String key = "ip:" + System.currentTimeMillis() / 1000; // 当前秒 String limit = "3"; // 最大限制 List keys = new ArrayList(); keys.add(key); @@ -52,7 +52,7 @@ public class RedisLimitRateWithLUA { args.add(limit); jedis.auth("youxin11"); String luaScript = jedis.scriptLoad(lua); - Long result = (Long)jedis.evalsha(luaScript, keys, args); + Long result = (Long) jedis.evalsha(luaScript, keys, args); return result == 1; } } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLock.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLock.java index 6420b02..84ae696 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLock.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLock.java @@ -8,43 +8,43 @@ import java.util.UUID; public class RedisLock { - public String getLock(String key , int timeOut){ + public String getLock(String key, int timeOut) { try { - Jedis jedis = RedisManager.getJedis(); - String value = UUID.randomUUID().toString(); - long end =System.currentTimeMillis()+timeOut; - while (System.currentTimeMillis() list = transaction.exec(); - if(list ==null){ + if (list == null) { continue; } jedis.unwatch(); diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLua.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLua.java index 8ec475e..ed1a969 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLua.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisLua.java @@ -54,20 +54,20 @@ public class RedisLua { try { jedis = RedisManager.getJedis(); - String count = - "local num=redis.call('get',KEYS[1]) return num"; - List keys = new ArrayList(); - keys.add(key); - List argves = new ArrayList(); - jedis.auth("youxin11"); - String luaScript = jedis.scriptLoad(count); - System.out.println(luaScript); - object = jedis.evalsha(luaScript, keys, argves); + String count = + "local num=redis.call('get',KEYS[1]) return num"; + List keys = new ArrayList(); + keys.add(key); + List argves = new ArrayList(); + jedis.auth("youxin11"); + String luaScript = jedis.scriptLoad(count); + System.out.println(luaScript); + object = jedis.evalsha(luaScript, keys, argves); } catch (Exception e) { - logger.error("统计访问次数失败!!!",e); + logger.error("统计访问次数失败!!!", e); return "0"; } - return object; + return object; } /** @@ -89,7 +89,7 @@ public class RedisLua { System.out.println(luaScript); jedis.evalsha(luaScript, keys, argves); } catch (Exception e) { - logger.error("统计访问次数失败!!!",e); + logger.error("统计访问次数失败!!!", e); } } @@ -106,9 +106,9 @@ public class RedisLua { "local key = KEYS[1] " + "local limit = tonumber(ARGV[1]) " + "local current = tonumber(redis.call('get', key) or '0') " + - "if current + 1 > limit then return 0 " + + "if current + 1 > limit then return 0 " + "else redis.call('INCRBY', key,'1')" + - " redis.call('expire', key,'2') " + + " redis.call('expire', key,'2') " + "end return 1"; List keys = new ArrayList(); diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisManager.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisManager.java index 8209995..991aa7e 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisManager.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/redis/redismanager/RedisManager.java @@ -12,11 +12,11 @@ public class RedisManager { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxWaitMillis(20); jedisPoolConfig.setMaxIdle(10); - jedisPool = new JedisPool(jedisPoolConfig,"39.107.245.253"); + jedisPool = new JedisPool(jedisPoolConfig, "39.107.245.253"); } - public static Jedis getJedis() throws Exception{ - if(null!=jedisPool){ + public static Jedis getJedis() throws Exception { + if (null != jedisPool) { return jedisPool.getResource(); } throw new Exception("Jedispool was not init !!!"); diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/GoodsService.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/GoodsService.java index 11c9b8a..2016ef6 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/GoodsService.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/GoodsService.java @@ -10,26 +10,25 @@ import java.util.List; @Service public class GoodsService { - - @Autowired - GoodsMapper goodsMapper; + + @Autowired + GoodsMapper goodsMapper; - public List listGoodsVo(){ - return goodsMapper.listGoodsVo(); - } + public List listGoodsVo() { + return goodsMapper.listGoodsVo(); + } + + public GoodsVo getGoodsVoByGoodsId(long goodsId) { + return goodsMapper.getGoodsVoByGoodsId(goodsId); + } + + public boolean reduceStock(GoodsVo goods) { + MiaoshaGoods g = new MiaoshaGoods(); + g.setGoodsId(goods.getId()); + int ret = goodsMapper.reduceStock(g); + return ret > 0; + } - public GoodsVo getGoodsVoByGoodsId(long goodsId) { - return goodsMapper.getGoodsVoByGoodsId(goodsId); - } - public boolean reduceStock(GoodsVo goods) { - MiaoshaGoods g = new MiaoshaGoods(); - g.setGoodsId(goods.getId()); - int ret = goodsMapper.reduceStock(g); - return ret > 0; - } - - - } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoShaMessageService.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoShaMessageService.java index 99705fc..e27aae8 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoShaMessageService.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoShaMessageService.java @@ -1,14 +1,6 @@ package com.geekq.miaosha.service; -import com.geekq.miasha.entity.MiaoShaMessageInfo; -import com.geekq.miasha.entity.MiaoShaMessageUser; -import com.geekq.miasha.vo.MiaoShaMessageVo; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Date; -import java.util.List; @Service public class MiaoShaMessageService { diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java index 8574d25..d10b343 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoShaUserService.java @@ -28,47 +28,48 @@ import static com.geekq.miasha.enums.enums.ResultStatus.*; @Service public class MiaoShaUserService { - public static final String COOKIE_NAME_TOKEN = "token" ; + public static final String COOKIE_NAME_TOKEN = "token"; private static Logger logger = LoggerFactory.getLogger(MiaoShaUserService.class); @Autowired private MiaoShaUserMapper miaoShaUserMapper; @Autowired - private RedisService redisService ; + private RedisService redisService; @Autowired - private MQSender sender ; + private MQSender sender; - public boolean getNickNameCount(String userName){ + public boolean getNickNameCount(String userName) { - return miaoShaUserMapper.getCountByUserName(userName,USERTYPE_NORMAL) <=0; + return miaoShaUserMapper.getCountByUserName(userName, USERTYPE_NORMAL) <= 0; } - public MiaoshaUser getByToken(HttpServletResponse response , String token) { - if(StringUtils.isEmpty(token)){ - return null ; + public MiaoshaUser getByToken(HttpServletResponse response, String token) { + + if (StringUtils.isEmpty(token)) { + return null; } - MiaoshaUser user =redisService.get(MiaoShaUserKey.token,token,MiaoshaUser.class) ; - if(user!=null) { + MiaoshaUser user = redisService.get(MiaoShaUserKey.token, token, MiaoshaUser.class); + if (user != null) { addCookie(response, token, user); } - return user ; + return user; } public MiaoshaUser getByNickName(String nickName) { //取缓存 - MiaoshaUser user = redisService.get(MiaoShaUserKey.getByNickName, ""+nickName, MiaoshaUser.class); - if(user != null) { + MiaoshaUser user = redisService.get(MiaoShaUserKey.getByNickName, "" + nickName, MiaoshaUser.class); + if (user != null) { return user; } //取数据库 user = miaoShaUserMapper.getByNickname(nickName); - if(user != null) { - redisService.set(MiaoShaUserKey.getByNickName, ""+nickName, user); + if (user != null) { + redisService.set(MiaoShaUserKey.getByNickName, "" + nickName, user); } return user; } @@ -78,7 +79,7 @@ public class MiaoShaUserService { public boolean updatePassword(String token, String nickName, String formPass) { //取user MiaoshaUser user = getByNickName(nickName); - if(user == null) { + if (user == null) { throw new GlobleException(MOBILE_NOT_EXIST); } //更新数据库 @@ -87,95 +88,94 @@ public class MiaoShaUserService { toBeUpdate.setPassword(MD5Utils.formPassToDBPass(formPass, user.getSalt())); miaoShaUserMapper.update(toBeUpdate); //处理缓存 - redisService.delete(MiaoShaUserKey.getByNickName, ""+nickName); + redisService.delete(MiaoShaUserKey.getByNickName, "" + nickName); user.setPassword(toBeUpdate.getPassword()); redisService.set(MiaoShaUserKey.token, token, user); return true; } - public boolean register(String userName , String passWord , - HttpServletResponse response , HttpServletRequest request) { - MiaoshaUser miaoShaUser = new MiaoshaUser(); + public boolean register(String userName, String passWord, + HttpServletResponse response, HttpServletRequest request) { + MiaoshaUser miaoShaUser = new MiaoshaUser(); miaoShaUser.setNickname(userName); //password 应该在前段进行一次MD5 在后端在进行一个MD5 在入库 String salt = MD5Utils.getSaltT(); - String DBPassWord = MD5Utils.formPassToDBPass(passWord ,salt); + String DBPassWord = MD5Utils.formPassToDBPass(passWord, salt); miaoShaUser.setPassword(DBPassWord); miaoShaUser.setRegisterDate(new Date()); miaoShaUser.setSalt(salt); miaoShaUser.setNickname(userName); try { miaoShaUserMapper.insertMiaoShaUser(miaoShaUser); - IpLog log = new IpLog(userName,new Date(),request.getRemoteAddr(), - USERTYPE_NORMAL,null); + IpLog log = new IpLog(userName, new Date(), request.getRemoteAddr(), + USERTYPE_NORMAL, null); MiaoshaUser user = miaoShaUserMapper.getByNickname(miaoShaUser.getNickname()); - if(user == null){ + if (user == null) { return false; } //生成cookie 将session返回游览器 分布式session - String token= UUIDUtil.uuid(); + String token = UUIDUtil.uuid(); addCookie(response, token, user); } catch (Exception e) { - logger.error("注册失败",e); + logger.error("注册失败", e); return false; } return true; } - public boolean login(HttpServletResponse response , LoginVo loginVo) { - if(loginVo ==null){ - throw new GlobleException(SYSTEM_ERROR); + public boolean login(HttpServletResponse response, LoginVo loginVo) { + if (loginVo == null) { + throw new GlobleException(SYSTEM_ERROR); } - String mobile =loginVo.getNickname(); - String password =loginVo.getPassword(); + String mobile = loginVo.getNickname(); + String password = loginVo.getPassword(); MiaoshaUser user = getByNickName(mobile); - if(user == null) { + if (user == null) { throw new GlobleException(MOBILE_NOT_EXIST); } String dbPass = user.getPassword(); String saltDb = user.getSalt(); - String calcPass = MD5Utils.formPassToDBPass(password,saltDb); - if(!calcPass.equals(dbPass)){ + String calcPass = MD5Utils.formPassToDBPass(password, saltDb); + if (!calcPass.equals(dbPass)) { throw new GlobleException(PASSWORD_ERROR); } //生成cookie 将session返回游览器 分布式session - String token= UUIDUtil.uuid(); + String token = UUIDUtil.uuid(); addCookie(response, token, user); - return true ; + return true; } - - - public String createToken(HttpServletResponse response , LoginVo loginVo) { - if(loginVo ==null){ - throw new GlobleException(SYSTEM_ERROR); + public String createToken(HttpServletResponse response, LoginVo loginVo) { + if (loginVo == null) { + throw new GlobleException(SYSTEM_ERROR); } - String mobile =loginVo.getNickname(); - String password =loginVo.getPassword(); + String mobile = loginVo.getNickname(); + String password = loginVo.getPassword(); MiaoshaUser user = getByNickName(mobile); - if(user == null) { + if (user == null) { throw new GlobleException(MOBILE_NOT_EXIST); } String dbPass = user.getPassword(); String saltDb = user.getSalt(); - String calcPass = MD5Utils.formPassToDBPass(password,saltDb); - if(!calcPass.equals(dbPass)){ + String calcPass = MD5Utils.formPassToDBPass(password, saltDb); + if (!calcPass.equals(dbPass)) { throw new GlobleException(PASSWORD_ERROR); } //生成cookie 将session返回游览器 分布式session - String token= UUIDUtil.uuid(); + String token = UUIDUtil.uuid(); addCookie(response, token, user); - return token ; + return token; } + private void addCookie(HttpServletResponse response, String token, MiaoshaUser user) { redisService.set(MiaoShaUserKey.token, token, user); Cookie cookie = new Cookie(COOKIE_NAME_TOKEN, token); diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoshaService.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoshaService.java index d8c6484..c2acf7b 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoshaService.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/MiaoshaService.java @@ -9,7 +9,6 @@ import com.geekq.miasha.entity.MiaoshaUser; import com.geekq.miasha.entity.OrderInfo; import com.geekq.miasha.utils.MD5Utils; import com.geekq.miasha.utils.UUIDUtil; -import com.geekq.miasha.vo.GoodsVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,192 +21,189 @@ import java.util.Random; @Service public class MiaoshaService { - - @Autowired - GoodsService goodsService; - - @Autowired + + private static char[] ops = new char[]{'+', '-', '*'}; + @Autowired + GoodsService goodsService; + @Autowired OrderService orderService; - @Autowired + @Autowired RedisService redisService; + @Reference(version = "${demo.service.version}", retries = 3, timeout = 6000) + private com.geekq.api.service.GoodsService goodsServiceRpc; - @Reference(version = "${demo.service.version}",retries = 3,timeout = 6000) - private com.geekq.api.service.GoodsService goodsServiceRpc; + private static int calc(String exp) { + try { + ScriptEngineManager manager = new ScriptEngineManager(); + ScriptEngine engine = manager.getEngineByName("JavaScript"); + Integer catch1 = (Integer) engine.eval(exp); + return catch1.intValue(); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } - @Transactional - public OrderInfo miaosha(MiaoshaUser user, GoodsVoOrder goods) { - //减库存 下订单 写入秒杀订单 + @Transactional + public OrderInfo miaosha(MiaoshaUser user, GoodsVoOrder goods) { + //减库存 下订单 写入秒杀订单 // boolean success = goodsService.reduceStock(goods); - boolean success =goodsServiceRpc.reduceStock(goods); - if(success){ - return orderService.createOrder(user,goods) ; - }else { - //如果库存不存在则内存标记为true - setGoodsOver(goods.getId()); - return null; - } - } + boolean success = goodsServiceRpc.reduceStock(goods); + if (success) { + return orderService.createOrder(user, goods); + } else { + //如果库存不存在则内存标记为true + setGoodsOver(goods.getId()); + return null; + } + } + public long getMiaoshaResult(Long userId, long goodsId) { + MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(userId, goodsId); + if (order != null) {//秒杀成功 + return order.getOrderId(); + } else { + boolean isOver = getGoodsOver(goodsId); + if (isOver) { + return -1; + } else { + return 0; + } + } + } - public long getMiaoshaResult(Long userId, long goodsId) { - MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(userId, goodsId); - if(order != null) {//秒杀成功 - return order.getOrderId(); - }else { - boolean isOver = getGoodsOver(goodsId); - if(isOver) { - return -1; - }else { - return 0; - } - } - } + private void setGoodsOver(Long goodsId) { + redisService.set(MiaoshaKey.isGoodsOver, "" + goodsId, true); + } - private void setGoodsOver(Long goodsId) { - redisService.set(MiaoshaKey.isGoodsOver, ""+goodsId, true); - } + private boolean getGoodsOver(long goodsId) { + return redisService.exists(MiaoshaKey.isGoodsOver, "" + goodsId); + } - private boolean getGoodsOver(long goodsId) { - return redisService.exists(MiaoshaKey.isGoodsOver, ""+goodsId); - } + public boolean checkPath(MiaoshaUser user, long goodsId, String path) { + if (user == null || path == null) { + return false; + } + String pathOld = redisService.get(MiaoshaKey.getMiaoshaPath, "" + user.getNickname() + "_" + goodsId, String.class); + return path.equals(pathOld); + } - public boolean checkPath(MiaoshaUser user, long goodsId, String path) { - if(user == null || path == null) { - return false; - } - String pathOld = redisService.get(MiaoshaKey.getMiaoshaPath, ""+user.getNickname() + "_"+ goodsId, String.class); - return path.equals(pathOld); - } + public String createMiaoshaPath(MiaoshaUser user, long goodsId) { + if (user == null || goodsId <= 0) { + return null; + } + String str = MD5Utils.md5(UUIDUtil.uuid() + "123456"); + redisService.set(MiaoshaKey.getMiaoshaPath, "" + user.getNickname() + "_" + goodsId, str); + return str; + } - public String createMiaoshaPath(MiaoshaUser user, long goodsId) { - if(user == null || goodsId <=0) { - return null; - } - String str = MD5Utils.md5(UUIDUtil.uuid()+"123456"); - redisService.set(MiaoshaKey.getMiaoshaPath, ""+user.getNickname() + "_"+ goodsId, str); - return str; - } + public BufferedImage createVerifyCode(MiaoshaUser user, long goodsId) { + if (user == null || goodsId <= 0) { + return null; + } + int width = 80; + int height = 32; + //create the image + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics g = image.getGraphics(); + // set the background color + g.setColor(new Color(0xDCDCDC)); + g.fillRect(0, 0, width, height); + // draw the border + g.setColor(Color.black); + g.drawRect(0, 0, width - 1, height - 1); + // create a random instance to generate the codes + Random rdm = new Random(); + // make some confusion + for (int i = 0; i < 50; i++) { + int x = rdm.nextInt(width); + int y = rdm.nextInt(height); + g.drawOval(x, y, 0, 0); + } + // generate a random code + String verifyCode = generateVerifyCode(rdm); + g.setColor(new Color(0, 100, 0)); + g.setFont(new Font("Candara", Font.BOLD, 24)); + g.drawString(verifyCode, 8, 24); + g.dispose(); + //把验证码存到redis中 + int rnd = calc(verifyCode); + redisService.set(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname() + "," + goodsId, rnd); + //输出图片 + return image; + } - public BufferedImage createVerifyCode(MiaoshaUser user, long goodsId) { - if(user == null || goodsId <=0) { - return null; - } - int width = 80; - int height = 32; - //create the image - BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); - Graphics g = image.getGraphics(); - // set the background color - g.setColor(new Color(0xDCDCDC)); - g.fillRect(0, 0, width, height); - // draw the border - g.setColor(Color.black); - g.drawRect(0, 0, width - 1, height - 1); - // create a random instance to generate the codes - Random rdm = new Random(); - // make some confusion - for (int i = 0; i < 50; i++) { - int x = rdm.nextInt(width); - int y = rdm.nextInt(height); - g.drawOval(x, y, 0, 0); - } - // generate a random code - String verifyCode = generateVerifyCode(rdm); - g.setColor(new Color(0, 100, 0)); - g.setFont(new Font("Candara", Font.BOLD, 24)); - g.drawString(verifyCode, 8, 24); - g.dispose(); - //把验证码存到redis中 - int rnd = calc(verifyCode); - redisService.set(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname()+","+goodsId, rnd); - //输出图片 - return image; - } + /** + * 注册时用的验证码 + * + * @param verifyCode + * @return + */ + public boolean checkVerifyCodeRegister(int verifyCode) { + Integer codeOld = redisService.get(MiaoshaKey.getMiaoshaVerifyCodeRegister, "regitser", Integer.class); + if (codeOld == null || codeOld - verifyCode != 0) { + return false; + } + redisService.delete(MiaoshaKey.getMiaoshaVerifyCode, "regitser"); + return true; + } - /** - * 注册时用的验证码 - * @param verifyCode - * @return - */ - public boolean checkVerifyCodeRegister(int verifyCode) { - Integer codeOld = redisService.get(MiaoshaKey.getMiaoshaVerifyCodeRegister,"regitser", Integer.class); - if(codeOld == null || codeOld - verifyCode != 0 ) { - return false; - } - redisService.delete(MiaoshaKey.getMiaoshaVerifyCode, "regitser"); - return true; - } + public BufferedImage createVerifyCodeRegister() { + int width = 80; + int height = 32; + //create the image + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics g = image.getGraphics(); + // set the background color + g.setColor(new Color(0xDCDCDC)); + g.fillRect(0, 0, width, height); + // draw the border + g.setColor(Color.black); + g.drawRect(0, 0, width - 1, height - 1); + // create a random instance to generate the codes + Random rdm = new Random(); + // make some confusion + for (int i = 0; i < 50; i++) { + int x = rdm.nextInt(width); + int y = rdm.nextInt(height); + g.drawOval(x, y, 0, 0); + } + // generate a random code + String verifyCode = generateVerifyCode(rdm); + g.setColor(new Color(0, 100, 0)); + g.setFont(new Font("Candara", Font.BOLD, 24)); + g.drawString(verifyCode, 8, 24); + g.dispose(); + //把验证码存到redis中 + int rnd = calc(verifyCode); + redisService.set(MiaoshaKey.getMiaoshaVerifyCodeRegister, "regitser", rnd); + //输出图片 + return image; + } + public boolean checkVerifyCode(MiaoshaUser user, long goodsId, int verifyCode) { + if (user == null || goodsId <= 0) { + return false; + } + Integer codeOld = redisService.get(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname() + "," + goodsId, Integer.class); + if (codeOld == null || codeOld - verifyCode != 0) { + return false; + } + redisService.delete(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname() + "," + goodsId); + return true; + } - public BufferedImage createVerifyCodeRegister() { - int width = 80; - int height = 32; - //create the image - BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); - Graphics g = image.getGraphics(); - // set the background color - g.setColor(new Color(0xDCDCDC)); - g.fillRect(0, 0, width, height); - // draw the border - g.setColor(Color.black); - g.drawRect(0, 0, width - 1, height - 1); - // create a random instance to generate the codes - Random rdm = new Random(); - // make some confusion - for (int i = 0; i < 50; i++) { - int x = rdm.nextInt(width); - int y = rdm.nextInt(height); - g.drawOval(x, y, 0, 0); - } - // generate a random code - String verifyCode = generateVerifyCode(rdm); - g.setColor(new Color(0, 100, 0)); - g.setFont(new Font("Candara", Font.BOLD, 24)); - g.drawString(verifyCode, 8, 24); - g.dispose(); - //把验证码存到redis中 - int rnd = calc(verifyCode); - redisService.set(MiaoshaKey.getMiaoshaVerifyCodeRegister,"regitser",rnd); - //输出图片 - return image; - } + /** + * + - * + */ + private String generateVerifyCode(Random rdm) { + int num1 = rdm.nextInt(10); + int num2 = rdm.nextInt(10); + int num3 = rdm.nextInt(10); + char op1 = ops[rdm.nextInt(3)]; + char op2 = ops[rdm.nextInt(3)]; + String exp = "" + num1 + op1 + num2 + op2 + num3; + return exp; + } - private static int calc(String exp) { - try { - ScriptEngineManager manager = new ScriptEngineManager(); - ScriptEngine engine = manager.getEngineByName("JavaScript"); - Integer catch1 = (Integer)engine.eval(exp); - return catch1.intValue(); - }catch(Exception e) { - e.printStackTrace(); - return 0; - } - } - - public boolean checkVerifyCode(MiaoshaUser user, long goodsId, int verifyCode) { - if(user == null || goodsId <=0) { - return false; - } - Integer codeOld = redisService.get(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname()+","+goodsId, Integer.class); - if(codeOld == null || codeOld - verifyCode != 0 ) { - return false; - } - redisService.delete(MiaoshaKey.getMiaoshaVerifyCode, user.getNickname()+","+goodsId); - return true; - } - - private static char[] ops = new char[] {'+', '-', '*'}; - /** - * + - * - * */ - private String generateVerifyCode(Random rdm) { - int num1 = rdm.nextInt(10); - int num2 = rdm.nextInt(10); - int num3 = rdm.nextInt(10); - char op1 = ops[rdm.nextInt(3)]; - char op2 = ops[rdm.nextInt(3)]; - String exp = ""+ num1 + op1 + num2 + op2 + num3; - return exp; - } - } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/OrderService.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/OrderService.java index d708585..261cb41 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/OrderService.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/OrderService.java @@ -8,7 +8,6 @@ import com.geekq.miasha.entity.MiaoshaOrder; import com.geekq.miasha.entity.MiaoshaUser; import com.geekq.miasha.entity.OrderInfo; import com.geekq.miasha.utils.DateTimeUtils; -import com.geekq.miasha.vo.GoodsVo; import org.apache.commons.lang3.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,50 +21,50 @@ import static com.geekq.miasha.enums.Constanst.orderStaus.ORDER_NOT_PAY; @Service public class OrderService { - - @Autowired - OrderMapper orderMapper; - @Autowired - private RedisService redisService ; - - public MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(long userId, long goodsId) { - return redisService.get(OrderKey.getMiaoshaOrderByUidGid,""+userId+"_"+goodsId,MiaoshaOrder.class) ; - } + @Autowired + OrderMapper orderMapper; - public OrderInfo getOrderById(long orderId) { - return orderMapper.getOrderById(orderId); - } + @Autowired + private RedisService redisService; - @Transactional - public OrderInfo createOrder(MiaoshaUser user, GoodsVoOrder goods) { - OrderInfo orderInfo = new OrderInfo(); - orderInfo.setCreateDate(new Date()); - orderInfo.setDeliveryAddrId(0L); - orderInfo.setGoodsCount(1); - orderInfo.setGoodsId(goods.getId()); - orderInfo.setGoodsName(goods.getGoodsName()); - orderInfo.setGoodsPrice(goods.getMiaoshaPrice()); - orderInfo.setOrderChannel(1); - orderInfo.setStatus(0); - orderInfo.setUserId(Long.valueOf(user.getNickname())); - orderMapper.insert(orderInfo); - MiaoshaOrder miaoshaOrder = new MiaoshaOrder(); - miaoshaOrder.setGoodsId(goods.getId()); - miaoshaOrder.setOrderId(orderInfo.getId()); - miaoshaOrder.setUserId(Long.valueOf(user.getNickname())); - orderMapper.insertMiaoshaOrder(miaoshaOrder); - redisService.set(OrderKey.getMiaoshaOrderByUidGid,""+user.getNickname()+"_"+goods.getId(),miaoshaOrder) ; - return orderInfo; - } + public MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(long userId, long goodsId) { + return redisService.get(OrderKey.getMiaoshaOrderByUidGid, "" + userId + "_" + goodsId, MiaoshaOrder.class); + } + + public OrderInfo getOrderById(long orderId) { + return orderMapper.getOrderById(orderId); + } + + @Transactional + public OrderInfo createOrder(MiaoshaUser user, GoodsVoOrder goods) { + OrderInfo orderInfo = new OrderInfo(); + orderInfo.setCreateDate(new Date()); + orderInfo.setDeliveryAddrId(0L); + orderInfo.setGoodsCount(1); + orderInfo.setGoodsId(goods.getId()); + orderInfo.setGoodsName(goods.getGoodsName()); + orderInfo.setGoodsPrice(goods.getMiaoshaPrice()); + orderInfo.setOrderChannel(1); + orderInfo.setStatus(0); + orderInfo.setUserId(Long.valueOf(user.getNickname())); + orderMapper.insert(orderInfo); + MiaoshaOrder miaoshaOrder = new MiaoshaOrder(); + miaoshaOrder.setGoodsId(goods.getId()); + miaoshaOrder.setOrderId(orderInfo.getId()); + miaoshaOrder.setUserId(Long.valueOf(user.getNickname())); + orderMapper.insertMiaoshaOrder(miaoshaOrder); + redisService.set(OrderKey.getMiaoshaOrderByUidGid, "" + user.getNickname() + "_" + goods.getId(), miaoshaOrder); + return orderInfo; + } + + public void closeOrder(int hour) { + Date closeDateTime = DateUtils.addHours(new Date(), -hour); + List orderInfoList = orderMapper.selectOrderStatusByCreateTime(Integer.valueOf(ORDER_NOT_PAY.ordinal()), DateTimeUtils.dateToStr(closeDateTime)); + for (OrderInfo orderInfo : orderInfoList) { + System.out.println("orderinfo infomation " + orderInfo.getGoodsName()); + } + } - public void closeOrder(int hour){ - Date closeDateTime = DateUtils.addHours(new Date(),-hour); - List orderInfoList = orderMapper.selectOrderStatusByCreateTime(Integer.valueOf(ORDER_NOT_PAY.ordinal()), DateTimeUtils.dateToStr(closeDateTime)); - for (OrderInfo orderInfo:orderInfoList){ - System.out.println("orderinfo infomation "+orderInfo.getGoodsName()); - } - } - } diff --git a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/impl/LoginInfoServiceImpl.java b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/impl/LoginInfoServiceImpl.java index 4646628..34880df 100644 --- a/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/impl/LoginInfoServiceImpl.java +++ b/miaosha-v2/miaosha-service/src/main/java/com/geekq/miaosha/service/impl/LoginInfoServiceImpl.java @@ -1,15 +1,9 @@ package com.geekq.miaosha.service.impl; -import com.geekq.miaosha.mapper.IpLogMapper; import com.geekq.miaosha.mapper.LogininfoMapper; import com.geekq.miaosha.service.LoginInfoService; -import com.geekq.miasha.entity.IpLog; -import com.geekq.miasha.entity.Logininfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.geekq.miasha.utils.SnowflakeIdWorker; - -import java.util.List; /** * @author 邱润泽 @@ -19,10 +13,11 @@ public class LoginInfoServiceImpl implements LoginInfoService { @Autowired private LogininfoMapper logininfoMapper; + @Override public String checkName() { - logininfoMapper.selectAll(); + logininfoMapper.selectAll(); - return "" ; + return ""; } } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/GeekQMainApplication.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/GeekQMainApplication.java index 2435672..534cd18 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/GeekQMainApplication.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/GeekQMainApplication.java @@ -5,7 +5,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; -@ImportResource(value={"classpath:consumer.xml"}) +@ImportResource(value = {"classpath:consumer.xml"}) @SpringBootApplication @MapperScan("com.geekq.miaosha.mapper") public class GeekQMainApplication { @@ -18,44 +18,4 @@ public class GeekQMainApplication { } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/DruidConfig.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/DruidConfig.java index 85a7dbf..347a6a6 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/DruidConfig.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/DruidConfig.java @@ -11,174 +11,209 @@ import javax.sql.DataSource; import java.sql.SQLException; @Configuration -@ConfigurationProperties(prefix="spring.datasource") +@ConfigurationProperties(prefix = "spring.datasource") public class DruidConfig { - private String url; - private String username; - private String password; - private String driverClassName; - private String type; - private String filters; - private int maxActive; - private int initialSize; - private int minIdle; - private long maxWait; - private long timeBetweenEvictionRunsMillis; - private long minEvictableIdleTimeMillis; - private String validationQuery; - private boolean testWhileIdle; - private boolean testOnBorrow; - private boolean testOnReturn; - private boolean poolPreparedStatements; - private int maxOpenPreparedStatements; - - @Bean - public ServletRegistrationBean druidSverlet() { - ServletRegistrationBean reg = new ServletRegistrationBean(); - reg.setServlet(new StatViewServlet()); - reg.addUrlMappings("/druid/*"); - reg.addInitParameter("loginUsername", "joshua"); - reg.addInitParameter("loginPassword", "123456"); - reg.addInitParameter("logSlowSql", "true"); - reg.addInitParameter("slowSqlMillis", "1000"); - return reg; - } - - @Bean - public DataSource druidDataSource() { - DruidDataSource datasource = new DruidDataSource(); - datasource.setUrl(url); - datasource.setUsername(username); - datasource.setPassword(password); - datasource.setDriverClassName(driverClassName); - datasource.setInitialSize(initialSize); - datasource.setMinIdle(minIdle); - datasource.setMaxActive(maxActive); - datasource.setMaxWait(maxWait); - datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); - datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); - datasource.setValidationQuery(validationQuery); - datasource.setTestWhileIdle(testWhileIdle); - datasource.setTestOnBorrow(testOnBorrow); - datasource.setTestOnReturn(testOnReturn); - datasource.setPoolPreparedStatements(poolPreparedStatements); - datasource.setMaxOpenPreparedStatements(maxOpenPreparedStatements); - try { - datasource.setFilters(filters); - } catch (SQLException e) { - e.printStackTrace(); - } - return datasource; - } - - public String getUrl() { - return url; - } - public void setUrl(String url) { - this.url = url; - } - public String getUsername() { - return username; - } - public void setUsername(String username) { - this.username = username; - } - public String getPassword() { - return password; - } - public void setPassword(String password) { - this.password = password; - } - public String getDriverClassName() { - return driverClassName; - } - public void setDriverClassName(String driverClassName) { - this.driverClassName = driverClassName; - } - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - public String getFilters() { - return filters; - } - public void setFilters(String filters) { - this.filters = filters; - } - public int getMaxActive() { - return maxActive; - } - public void setMaxActive(int maxActive) { - this.maxActive = maxActive; - } - public int getInitialSize() { - return initialSize; - } - public void setInitialSize(int initialSize) { - this.initialSize = initialSize; - } - public int getMinIdle() { - return minIdle; - } - public void setMinIdle(int minIdle) { - this.minIdle = minIdle; - } - public long getMaxWait() { - return maxWait; - } - public void setMaxWait(long maxWait) { - this.maxWait = maxWait; - } - public long getTimeBetweenEvictionRunsMillis() { - return timeBetweenEvictionRunsMillis; - } - public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) { - this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; - } - public long getMinEvictableIdleTimeMillis() { - return minEvictableIdleTimeMillis; - } - public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { - this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; - } - public String getValidationQuery() { - return validationQuery; - } - public void setValidationQuery(String validationQuery) { - this.validationQuery = validationQuery; - } - public boolean isTestWhileIdle() { - return testWhileIdle; - } - public void setTestWhileIdle(boolean testWhileIdle) { - this.testWhileIdle = testWhileIdle; - } - public boolean isTestOnBorrow() { - return testOnBorrow; - } - public void setTestOnBorrow(boolean testOnBorrow) { - this.testOnBorrow = testOnBorrow; - } - public boolean isTestOnReturn() { - return testOnReturn; - } - public void setTestOnReturn(boolean testOnReturn) { - this.testOnReturn = testOnReturn; - } - public boolean isPoolPreparedStatements() { - return poolPreparedStatements; - } - public void setPoolPreparedStatements(boolean poolPreparedStatements) { - this.poolPreparedStatements = poolPreparedStatements; - } - public int getMaxOpenPreparedStatements() { - return maxOpenPreparedStatements; - } - public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) { - this.maxOpenPreparedStatements = maxOpenPreparedStatements; - } - + private String url; + private String username; + private String password; + private String driverClassName; + private String type; + private String filters; + private int maxActive; + private int initialSize; + private int minIdle; + private long maxWait; + private long timeBetweenEvictionRunsMillis; + private long minEvictableIdleTimeMillis; + private String validationQuery; + private boolean testWhileIdle; + private boolean testOnBorrow; + private boolean testOnReturn; + private boolean poolPreparedStatements; + private int maxOpenPreparedStatements; + + @Bean + public ServletRegistrationBean druidSverlet() { + ServletRegistrationBean reg = new ServletRegistrationBean(); + reg.setServlet(new StatViewServlet()); + reg.addUrlMappings("/druid/*"); + reg.addInitParameter("loginUsername", "joshua"); + reg.addInitParameter("loginPassword", "123456"); + reg.addInitParameter("logSlowSql", "true"); + reg.addInitParameter("slowSqlMillis", "1000"); + return reg; + } + + @Bean + public DataSource druidDataSource() { + DruidDataSource datasource = new DruidDataSource(); + datasource.setUrl(url); + datasource.setUsername(username); + datasource.setPassword(password); + datasource.setDriverClassName(driverClassName); + datasource.setInitialSize(initialSize); + datasource.setMinIdle(minIdle); + datasource.setMaxActive(maxActive); + datasource.setMaxWait(maxWait); + datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); + datasource.setValidationQuery(validationQuery); + datasource.setTestWhileIdle(testWhileIdle); + datasource.setTestOnBorrow(testOnBorrow); + datasource.setTestOnReturn(testOnReturn); + datasource.setPoolPreparedStatements(poolPreparedStatements); + datasource.setMaxOpenPreparedStatements(maxOpenPreparedStatements); + try { + datasource.setFilters(filters); + } catch (SQLException e) { + e.printStackTrace(); + } + return datasource; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getFilters() { + return filters; + } + + public void setFilters(String filters) { + this.filters = filters; + } + + public int getMaxActive() { + return maxActive; + } + + public void setMaxActive(int maxActive) { + this.maxActive = maxActive; + } + + public int getInitialSize() { + return initialSize; + } + + public void setInitialSize(int initialSize) { + this.initialSize = initialSize; + } + + public int getMinIdle() { + return minIdle; + } + + public void setMinIdle(int minIdle) { + this.minIdle = minIdle; + } + + public long getMaxWait() { + return maxWait; + } + + public void setMaxWait(long maxWait) { + this.maxWait = maxWait; + } + + public long getTimeBetweenEvictionRunsMillis() { + return timeBetweenEvictionRunsMillis; + } + + public void setTimeBetweenEvictionRunsMillis(long timeBetweenEvictionRunsMillis) { + this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; + } + + public long getMinEvictableIdleTimeMillis() { + return minEvictableIdleTimeMillis; + } + + public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { + this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; + } + + public String getValidationQuery() { + return validationQuery; + } + + public void setValidationQuery(String validationQuery) { + this.validationQuery = validationQuery; + } + + public boolean isTestWhileIdle() { + return testWhileIdle; + } + + public void setTestWhileIdle(boolean testWhileIdle) { + this.testWhileIdle = testWhileIdle; + } + + public boolean isTestOnBorrow() { + return testOnBorrow; + } + + public void setTestOnBorrow(boolean testOnBorrow) { + this.testOnBorrow = testOnBorrow; + } + + public boolean isTestOnReturn() { + return testOnReturn; + } + + public void setTestOnReturn(boolean testOnReturn) { + this.testOnReturn = testOnReturn; + } + + public boolean isPoolPreparedStatements() { + return poolPreparedStatements; + } + + public void setPoolPreparedStatements(boolean poolPreparedStatements) { + this.poolPreparedStatements = poolPreparedStatements; + } + + public int getMaxOpenPreparedStatements() { + return maxOpenPreparedStatements; + } + + public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) { + this.maxOpenPreparedStatements = maxOpenPreparedStatements; + } + } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/UserArgumentResolver.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/UserArgumentResolver.java index 4b772e6..fa93957 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/UserArgumentResolver.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/UserArgumentResolver.java @@ -16,10 +16,11 @@ public class UserArgumentResolver implements HandlerMethodArgumentResolver { @Autowired private MiaoShaUserService userService; + @Override public boolean supportsParameter(MethodParameter methodParameter) { - Class clazz = methodParameter.getParameterType() ; - return clazz == MiaoshaUser.class ; + Class clazz = methodParameter.getParameterType(); + return clazz == MiaoshaUser.class; } @Override diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/WebConfig.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/WebConfig.java index 084a922..3a5943a 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/WebConfig.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/config/WebConfig.java @@ -10,15 +10,14 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter import java.util.List; @Configuration -public class WebConfig extends WebMvcConfigurerAdapter { +public class WebConfig extends WebMvcConfigurerAdapter { + final String[] notLoginInterceptPaths = {"/do_login/**"}; @Autowired UserArgumentResolver resolver; - @Autowired private LoginInterceptor interceptor; - final String[] notLoginInterceptPaths = {"/do_login/**"}; @Override public void addInterceptors(InterceptorRegistry registry) { super.addInterceptors(registry); diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/BaseController.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/BaseController.java index 682a983..aee2c8b 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/BaseController.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/BaseController.java @@ -18,47 +18,45 @@ import java.io.OutputStream; public class BaseController { + @Autowired + ThymeleafViewResolver thymeleafViewResolver; + @Autowired + RedisService redisService; //加一个配置项 @Value("#{'${pageCache.enbale}'}") private boolean pageCacheEnable; - @Autowired - ThymeleafViewResolver thymeleafViewResolver; - - @Autowired - RedisService redisService; + public static void out(HttpServletResponse res, String html) { + res.setContentType("text/html"); + res.setCharacterEncoding("UTF-8"); + try { + OutputStream out = res.getOutputStream(); + out.write(html.getBytes("UTF-8")); + out.flush(); + out.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } public String render(HttpServletRequest request, HttpServletResponse response, Model model, String tplName, KeyPrefix prefix, String key) { - if(!pageCacheEnable) { + if (!pageCacheEnable) { return tplName; } //取缓存 String html = redisService.get(prefix, key, String.class); - if(!StringUtils.isEmpty(html)) { + if (!StringUtils.isEmpty(html)) { out(response, html); return null; } //手动渲染 - WebContext ctx = new WebContext(request,response, - request.getServletContext(),request.getLocale(), model.asMap()); + WebContext ctx = new WebContext(request, response, + request.getServletContext(), request.getLocale(), model.asMap()); html = thymeleafViewResolver.getTemplateEngine().process(tplName, ctx); - if(!StringUtils.isEmpty(html)) { + if (!StringUtils.isEmpty(html)) { redisService.set(prefix, key, html); } out(response, html); return null; } - - public static void out(HttpServletResponse res, String html){ - res.setContentType("text/html"); - res.setCharacterEncoding("UTF-8"); - try{ - OutputStream out = res.getOutputStream(); - out.write(html.getBytes("UTF-8")); - out.flush(); - out.close(); - }catch(Exception e){ - e.printStackTrace(); - } - } } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/GoodsController.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/GoodsController.java index 7930dae..63baeca 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/GoodsController.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/GoodsController.java @@ -35,56 +35,50 @@ import java.util.List; @RequestMapping("/goods") public class GoodsController extends BaseController { private static Logger log = LoggerFactory.getLogger(GoodsController.class); - - @Autowired - private MiaoShaUserService userService; - - @Autowired - private RedisService redisService; - - @Autowired - private GoodsService goodsService; - - @Autowired - private com.geekq.api.service.GoodsService goodsServiceRpc; - @Autowired ThymeleafViewResolver viewResolver; - @Autowired ApplicationContext applicationContext; + @Autowired + private MiaoShaUserService userService; + @Autowired + private RedisService redisService; + @Autowired + private GoodsService goodsService; + @Autowired + private com.geekq.api.service.GoodsService goodsServiceRpc; /** * QPS:1267 load:15 mysql * 5000 * 10 * QPS:2884, load:5 - * */ + */ @RequireLogin(seconds = 5, maxCount = 5, needLogin = true) - @RequestMapping(value="/to_list", produces="text/html") + @RequestMapping(value = "/to_list", produces = "text/html") @ResponseBody - public String list(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user) { + public String list(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user) { model.addAttribute("user", user); //订单服务化接口 miaosha-order ResultGeekQOrder> resultGoods = goodsServiceRpc.listGoodsVo(); - if(!AbstractResultOrder.isSuccess(resultGoods)){ - throw new GlobleException(ResultStatus.SYSTEM_ERROR); + if (!AbstractResultOrder.isSuccess(resultGoods)) { + throw new GlobleException(ResultStatus.SYSTEM_ERROR); } List goodsList = resultGoods.getData(); model.addAttribute("goodsList", goodsList); - return render(request,response,model,"goods_list", GoodsKey.getGoodsList,""); + return render(request, response, model, "goods_list", GoodsKey.getGoodsList, ""); } - @RequestMapping(value="/to_detail2/{goodsId}",produces="text/html") + @RequestMapping(value = "/to_detail2/{goodsId}", produces = "text/html") @ResponseBody public String detail2(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user, - @PathVariable("goodsId")long goodsId) { + @PathVariable("goodsId") long goodsId) { model.addAttribute("user", user); //取缓存 - String html = redisService.get(GoodsKey.getGoodsDetail, ""+goodsId, String.class); - if(!StringUtils.isEmpty(html)) { + String html = redisService.get(GoodsKey.getGoodsDetail, "" + goodsId, String.class); + if (!StringUtils.isEmpty(html)) { return html; } //手动渲染 @@ -93,7 +87,7 @@ public class GoodsController extends BaseController { * rpc服务化接口 */ ResultGeekQOrder goodsVoOrderResultGeekQOrder = goodsServiceRpc.getGoodsVoByGoodsId(goodsId); - if(!AbstractResultOrder.isSuccess(goodsVoOrderResultGeekQOrder)){ + if (!AbstractResultOrder.isSuccess(goodsVoOrderResultGeekQOrder)) { throw new GlobleException(ResultStatus.SESSION_ERROR); } model.addAttribute("goods", goods); @@ -104,13 +98,13 @@ public class GoodsController extends BaseController { int miaoshaStatus = 0; int remainSeconds = 0; - if(now < startAt ) {//秒杀还没开始,倒计时 + if (now < startAt) {//秒杀还没开始,倒计时 miaoshaStatus = 0; - remainSeconds = (int)((startAt - now )/1000); - }else if(now > endAt){//秒杀已经结束 + remainSeconds = (int) ((startAt - now) / 1000); + } else if (now > endAt) {//秒杀已经结束 miaoshaStatus = 2; remainSeconds = -1; - }else {//秒杀进行中 + } else {//秒杀进行中 miaoshaStatus = 1; remainSeconds = 0; } @@ -127,30 +121,31 @@ public class GoodsController extends BaseController { // model.asMap(), applicationContext ); // html = viewResolver.getTemplateEngine().process("goods_detail", ctx); - if(!StringUtils.isEmpty(html)) { - redisService.set(GoodsKey.getGoodsDetail, ""+goodsId, html); + if (!StringUtils.isEmpty(html)) { + redisService.set(GoodsKey.getGoodsDetail, "" + goodsId, html); } return html; } /** * 数据库很少使用long的 , id 正常使一般使用 snowflake 分布式自增id + * * @param model * @param user * @param goodsId * @return */ - @RequestMapping(value="/detail/{goodsId}") + @RequestMapping(value = "/detail/{goodsId}") @ResponseBody public ResultGeekQ detail(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user, - @PathVariable("goodsId")long goodsId) { + @PathVariable("goodsId") long goodsId) { ResultGeekQ result = ResultGeekQ.build(); /** * 服务化rpc接口 */ ResultGeekQOrder goodsVoOrderResultGeekQOrder = goodsServiceRpc.getGoodsVoByGoodsId(goodsId); - if(!AbstractResultOrder.isSuccess(goodsVoOrderResultGeekQOrder)){ + if (!AbstractResultOrder.isSuccess(goodsVoOrderResultGeekQOrder)) { throw new GlobleException(ResultStatus.SESSION_ERROR); } @@ -160,13 +155,13 @@ public class GoodsController extends BaseController { long now = System.currentTimeMillis(); int miaoshaStatus = 0; int remainSeconds = 0; - if(now < startAt ) {//秒杀还没开始,倒计时 + if (now < startAt) {//秒杀还没开始,倒计时 miaoshaStatus = 0; - remainSeconds = (int)((startAt - now )/1000); - }else if(now > endAt){//秒杀已经结束 + remainSeconds = (int) ((startAt - now) / 1000); + } else if (now > endAt) {//秒杀已经结束 miaoshaStatus = 2; remainSeconds = -1; - }else {//秒杀进行中 + } else {//秒杀进行中 miaoshaStatus = 1; remainSeconds = 0; } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/LoginController.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/LoginController.java index 6090f90..2c02ddd 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/LoginController.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/LoginController.java @@ -1,6 +1,5 @@ package com.geekq.miaosha.controller; -import com.alibaba.dubbo.config.annotation.Reference; import com.geekq.miaosha.redis.redismanager.RedisLua; import com.geekq.miaosha.service.MiaoShaUserService; import com.geekq.miasha.enums.resultbean.ResultGeekQ; @@ -33,16 +32,15 @@ public class LoginController { } - @RequestMapping("/to_login") - public String tologin(LoginVo loginVo, Model model) { + public String tologin(LoginVo loginVo, Model model) { logger.info(loginVo.toString()); //未完成 - RedisLua.vistorCount(COUNTLOGIN); + RedisLua.vistorCount(COUNTLOGIN); String count = RedisLua.getVistorCount(COUNTLOGIN).toString(); - logger.info("访问网站的次数为:{}",count); - model.addAttribute("count",count); + logger.info("访问网站的次数为:{}", count); + model.addAttribute("count", count); return "login"; } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/MiaoShaMessageController.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/MiaoShaMessageController.java index 5bf01f4..bb74c76 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/MiaoShaMessageController.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/MiaoShaMessageController.java @@ -2,8 +2,6 @@ package com.geekq.miaosha.controller; import com.geekq.miaosha.rabbitmq.MQSender; import com.geekq.miaosha.service.MiaoShaMessageService; -import com.geekq.miasha.entity.MiaoShaMessageInfo; -import com.geekq.miasha.enums.MessageStatus; import com.geekq.miasha.enums.enums.ResultStatus; import com.geekq.miasha.enums.resultbean.ResultGeekQ; import org.apache.commons.lang3.StringUtils; @@ -24,7 +22,7 @@ public class MiaoShaMessageController { private MQSender sendMessage; @RequestMapping(value = "/list", produces = "text/html") - public String list(@RequestParam(value = "userid",required= true) String userId, Model model) { + public String list(@RequestParam(value = "userid", required = true) String userId, Model model) { ResultGeekQ resultGeekQ = ResultGeekQ.build(); if (StringUtils.isBlank(userId)) { resultGeekQ.withError(ResultStatus.USER_NOT_EXIST); @@ -39,7 +37,7 @@ public class MiaoShaMessageController { @RequestMapping(value = "/getNewMessage", produces = "text/html") @ResponseBody - public String getNewMessage(@RequestParam(value = "userid",required= true) String userId, Model model) { + public String getNewMessage(@RequestParam(value = "userid", required = true) String userId, Model model) { // if (StringUtils.isBlank(userId)) { // return "0"; @@ -51,5 +49,7 @@ public class MiaoShaMessageController { // return "1"; // } return ""; - }; + } + + ; } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java index 7bc113f..a3eb006 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/MiaoshaController.java @@ -67,7 +67,7 @@ public class MiaoshaController implements InitializingBean { * get post get 幂等 从服务端获取数据 不会产生影响  post 对服务端产生变化 */ @RequireLogin(seconds = 5, maxCount = 5, needLogin = true) - @RequestMapping(value="/{path}/do_miaosha", method= RequestMethod.POST) + @RequestMapping(value = "/{path}/do_miaosha", method = RequestMethod.POST) @ResponseBody public ResultGeekQ miaosha(Model model, MiaoshaUser user, @PathVariable("path") String path, @RequestParam("goodsId") long goodsId) { @@ -178,7 +178,7 @@ public class MiaoshaController implements InitializingBean { @RequestMapping(value = "/verifyCodeRegister", method = RequestMethod.GET) @ResponseBody public ResultGeekQ getMiaoshaVerifyCod(HttpServletResponse response - ) { + ) { ResultGeekQ result = ResultGeekQ.build(); try { BufferedImage image = miaoshaService.createVerifyCodeRegister(); @@ -217,6 +217,7 @@ public class MiaoshaController implements InitializingBean { return result; } } + /** * 系统初始化 * diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/OrderController.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/OrderController.java index 922d2a1..5768057 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/OrderController.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/OrderController.java @@ -24,39 +24,39 @@ import static com.geekq.miasha.enums.enums.ResultStatus.SESSION_ERROR; @RequestMapping("/order") public class OrderController { - @Autowired - MiaoShaUserService userService; - - @Autowired + @Autowired + MiaoShaUserService userService; + + @Autowired RedisService redisService; - - @Autowired - OrderService orderService; - - @Autowired - GoodsService goodsService; - + + @Autowired + OrderService orderService; + + @Autowired + GoodsService goodsService; + @RequestMapping("/detail") @ResponseBody public ResultGeekQ info(Model model, MiaoshaUser user, - @RequestParam("orderId") long orderId) { - ResultGeekQ result = ResultGeekQ.build(); - if (user == null) { - result.withError(SESSION_ERROR.getCode(), SESSION_ERROR.getMessage()); - return result; - } - OrderInfo order = orderService.getOrderById(orderId); - if(order == null) { - result.withError(ORDER_NOT_EXIST.getCode(), ORDER_NOT_EXIST.getMessage()); - return result; - } - long goodsId = order.getGoodsId(); - GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId); - OrderDetailVo vo = new OrderDetailVo(); - vo.setOrder(order); - vo.setGoods(goods); - result.setData(vo); - return result; + @RequestParam("orderId") long orderId) { + ResultGeekQ result = ResultGeekQ.build(); + if (user == null) { + result.withError(SESSION_ERROR.getCode(), SESSION_ERROR.getMessage()); + return result; + } + OrderInfo order = orderService.getOrderById(orderId); + if (order == null) { + result.withError(ORDER_NOT_EXIST.getCode(), ORDER_NOT_EXIST.getMessage()); + return result; + } + long goodsId = order.getGoodsId(); + GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId); + OrderDetailVo vo = new OrderDetailVo(); + vo.setOrder(order); + vo.setGoods(goods); + result.setData(vo); + return result; } - + } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/RegisterController.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/RegisterController.java index 57fddc3..06316bc 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/RegisterController.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/controller/RegisterController.java @@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import static com.geekq.miasha.enums.Constanst.COUNTLOGIN; import static com.geekq.miasha.enums.enums.ResultStatus.RESIGETER_FAIL; @@ -28,42 +27,45 @@ public class RegisterController { @Autowired private MiaoShaUserService miaoShaUserService; @Autowired - private MiaoshaService miaoshaService ; + private MiaoshaService miaoshaService; /** * 登录页面 + * * @return */ @RequestMapping("/do_login") - public String loginIndex(Model model){ + public String loginIndex(Model model) { // //未完成 // RedisLua.vistorCount(COUNTLOGIN); // String count = RedisLua.getVistorCount(COUNTLOGIN).toString(); // logger.info("访问网站的次数为:{}",count); - model.addAttribute("count",100000); + model.addAttribute("count", 100000); return "login"; } /** * 注册页面 + * * @return */ @RequestMapping("/registerv2") - public String register(){ + public String register() { return "register2"; } /** * 校验程序 + * * @return */ @RequestMapping("/checkUsername") @ResponseBody - public ResultGeekQ checkUsername(String username){ + public ResultGeekQ checkUsername(String username) { - ResultGeekQ result = ResultGeekQ.build(); + ResultGeekQ result = ResultGeekQ.build(); boolean nickNameCount = miaoShaUserService.getNickNameCount(username); result.setData(nickNameCount); return result; @@ -71,21 +73,22 @@ public class RegisterController { /** * 注册网站 + * * @param userName * @param passWord * @return */ @RequestMapping("/register") @ResponseBody - public ResultGeekQ register(@RequestParam("username") String userName , - @RequestParam("password") String passWord, - HttpServletResponse response , - HttpServletRequest request){ + public ResultGeekQ register(@RequestParam("username") String userName, + @RequestParam("password") String passWord, + HttpServletResponse response, + HttpServletRequest request) { ResultGeekQ result = ResultGeekQ.build(); - boolean registerInfo = miaoShaUserService.register(userName,passWord,response ,request); - if(!registerInfo){ - result.withError(RESIGETER_FAIL.getCode(),RESIGETER_FAIL.getMessage()); + boolean registerInfo = miaoShaUserService.register(userName, passWord, response, request); + if (!registerInfo) { + result.withError(RESIGETER_FAIL.getCode(), RESIGETER_FAIL.getMessage()); result.setData(false); } result.setData(true); diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/AccessKey.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/AccessKey.java index c5793ac..3b2acd9 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/AccessKey.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/AccessKey.java @@ -4,12 +4,12 @@ import com.geekq.miaosha.redis.BasePrefix; public class AccessKey extends BasePrefix { - private AccessKey( int expireSeconds, String prefix) { - super(expireSeconds, prefix); - } - - public static AccessKey withExpire(int expireSeconds) { - return new AccessKey(expireSeconds, "interceptor"); - } - + private AccessKey(int expireSeconds, String prefix) { + super(expireSeconds, prefix); + } + + public static AccessKey withExpire(int expireSeconds) { + return new AccessKey(expireSeconds, "interceptor"); + } + } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/GlobalExceptionHandler.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/GlobalExceptionHandler.java index 6c77312..67a1dd9 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/GlobalExceptionHandler.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/GlobalExceptionHandler.java @@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletRequest; import java.util.List; import static com.geekq.miasha.enums.enums.ResultStatus.SESSION_ERROR; @@ -18,7 +17,6 @@ import static com.geekq.miasha.enums.enums.ResultStatus.SYSTEM_ERROR; /** * @author 邱润泽 - * * @ExceptionHandler 拦截了异常,我们可以通过该注解实现自定义异常处理。 * 其中,@ExceptionHandler 配置的 value 指定需要拦截的异常类型,上面拦截了 Exception.class 这种异常。 */ @@ -29,14 +27,14 @@ public class GlobalExceptionHandler { public static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); @ResponseBody - @ExceptionHandler(value=Exception.class) - public ResultGeekQ exceptionHandler(Exception e){ + @ExceptionHandler(value = Exception.class) + public ResultGeekQ exceptionHandler(Exception e) { e.printStackTrace(); - if(e instanceof GlobleException){ - GlobleException ex= (GlobleException)e; + if (e instanceof GlobleException) { + GlobleException ex = (GlobleException) e; return ResultGeekQ.error(ex.getStatus()); - }else if( e instanceof BindException){ - BindException ex = (BindException) e ; + } else if (e instanceof BindException) { + BindException ex = (BindException) e; List errors = ex.getAllErrors(); ObjectError error = errors.get(0); String msg = error.getDefaultMessage(); @@ -45,7 +43,7 @@ public class GlobalExceptionHandler { */ logger.error(String.format(msg, msg)); return ResultGeekQ.error(SESSION_ERROR); - }else { + } else { return ResultGeekQ.error(SYSTEM_ERROR); } } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/GlobalParamAdvice.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/GlobalParamAdvice.java index 3b75bdb..3de19da 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/GlobalParamAdvice.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/GlobalParamAdvice.java @@ -5,7 +5,6 @@ import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.ResponseBody; /** * @author 邱润泽 增强器 @@ -15,13 +14,16 @@ public class GlobalParamAdvice { /** * 应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器 + * * @param binder */ @InitBinder - public void initBinder(WebDataBinder binder) {} + public void initBinder(WebDataBinder binder) { + } /** * 把值绑定到Model中,使全局@RequestMapping可以获取到该值 + * * @param model */ @ModelAttribute diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/LoginInterceptor.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/LoginInterceptor.java index 072546e..5c8bf2a 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/LoginInterceptor.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/LoginInterceptor.java @@ -27,102 +27,102 @@ import static com.geekq.miasha.enums.enums.ResultStatus.SESSION_ERROR; @Service public class LoginInterceptor extends HandlerInterceptorAdapter { - private static Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); + private static Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); - @Autowired - MiaoShaUserService userService; + @Autowired + MiaoShaUserService userService; - @Autowired + @Autowired RedisService redisService; - @Override - public boolean preHandle(HttpServletRequest request, - HttpServletResponse response, Object handler) - throws Exception { - /** - * 获取调用 获取主要方法 - */ - if(handler instanceof HandlerMethod) { - logger.info("打印拦截方法handler :{} ",handler); - HandlerMethod hm = (HandlerMethod)handler; - MiaoshaUser user = getUser(request, response); + @Override + public boolean preHandle(HttpServletRequest request, + HttpServletResponse response, Object handler) + throws Exception { + /** + * 获取调用 获取主要方法 + */ + if (handler instanceof HandlerMethod) { + logger.info("打印拦截方法handler :{} ", handler); + HandlerMethod hm = (HandlerMethod) handler; + MiaoshaUser user = getUser(request, response); - /** - * 去拦截器 - */ + /** + * 去拦截器 + */ // if(user == null){ // response.sendRedirect("/do_login"); // return super.preHandle(request, response, handler); // } - UserContext.setUser(user); - RequireLogin accessLimit = hm.getMethodAnnotation(RequireLogin.class); - if(accessLimit == null) { - return true; - } - int seconds = accessLimit.seconds(); - int maxCount = accessLimit.maxCount(); - boolean needLogin = accessLimit.needLogin(); - String key = request.getRequestURI(); - if(needLogin) { - if(user == null) { - render(response, SESSION_ERROR); - return false; - } - key += "_" + user.getNickname(); - }else { - //do nothing - } - AccessKey ak = AccessKey.withExpire(seconds); - Integer count = redisService.get(ak, key, Integer.class); - if(count == null) { - redisService.set(ak, key, 1); - }else if(count < maxCount) { - redisService.incr(ak, key); - }else { - render(response, ACCESS_LIMIT_REACHED); - return false; - } - } - return true; - } + UserContext.setUser(user); + RequireLogin accessLimit = hm.getMethodAnnotation(RequireLogin.class); + if (accessLimit == null) { + return true; + } + int seconds = accessLimit.seconds(); + int maxCount = accessLimit.maxCount(); + boolean needLogin = accessLimit.needLogin(); + String key = request.getRequestURI(); + if (needLogin) { + if (user == null) { + render(response, SESSION_ERROR); + return false; + } + key += "_" + user.getNickname(); + } else { + //do nothing + } + AccessKey ak = AccessKey.withExpire(seconds); + Integer count = redisService.get(ak, key, Integer.class); + if (count == null) { + redisService.set(ak, key, 1); + } else if (count < maxCount) { + redisService.incr(ak, key); + } else { + render(response, ACCESS_LIMIT_REACHED); + return false; + } + } + return true; + } - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - super.afterCompletion(request, response, handler, ex); - UserContext.removeUser(); - } + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + super.afterCompletion(request, response, handler, ex); + UserContext.removeUser(); + } - private void render(HttpServletResponse response, ResultStatus cm)throws Exception { - response.setContentType("application/json;charset=UTF-8"); - OutputStream out = response.getOutputStream(); - String str = JSON.toJSONString(ResultGeekQ.error(cm)); - out.write(str.getBytes("UTF-8")); - out.flush(); - out.close(); - } + private void render(HttpServletResponse response, ResultStatus cm) throws Exception { + response.setContentType("application/json;charset=UTF-8"); + OutputStream out = response.getOutputStream(); + String str = JSON.toJSONString(ResultGeekQ.error(cm)); + out.write(str.getBytes("UTF-8")); + out.flush(); + out.close(); + } - private MiaoshaUser getUser(HttpServletRequest request, HttpServletResponse response) { - String paramToken = request.getParameter(MiaoShaUserService.COOKIE_NAME_TOKEN); - String cookieToken = getCookieValue(request, MiaoShaUserService.COOKIE_NAME_TOKEN); - if(StringUtils.isEmpty(cookieToken) && StringUtils.isEmpty(paramToken)) { - return null; - } - String token = StringUtils.isEmpty(paramToken)?cookieToken:paramToken; - return userService.getByToken(response, token); - } + private MiaoshaUser getUser(HttpServletRequest request, HttpServletResponse response) { + String paramToken = request.getParameter(MiaoShaUserService.COOKIE_NAME_TOKEN); + String cookieToken = getCookieValue(request, MiaoShaUserService.COOKIE_NAME_TOKEN); + if (StringUtils.isEmpty(cookieToken) && StringUtils.isEmpty(paramToken)) { + return null; + } + String token = StringUtils.isEmpty(paramToken) ? cookieToken : paramToken; + return userService.getByToken(response, token); + } - private String getCookieValue(HttpServletRequest request, String cookiName) { - Cookie[] cookies = request.getCookies(); - if(cookies == null || cookies.length <= 0){ - return null; - } - for(Cookie cookie : cookies) { - if(cookie.getName().equals(cookiName)) { - return cookie.getValue(); - } - } - return null; - } + private String getCookieValue(HttpServletRequest request, String cookiName) { + Cookie[] cookies = request.getCookies(); + if (cookies == null || cookies.length <= 0) { + return null; + } + for (Cookie cookie : cookies) { + if (cookie.getName().equals(cookiName)) { + return cookie.getValue(); + } + } + return null; + } } diff --git a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/RequireLogin.java b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/RequireLogin.java index cf7adcf..823d931 100644 --- a/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/RequireLogin.java +++ b/miaosha-v2/miaosha-web/src/main/java/com/geekq/miaosha/interceptor/RequireLogin.java @@ -9,7 +9,9 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Retention(RUNTIME) @Target(METHOD) public @interface RequireLogin { - int seconds(); - int maxCount(); - boolean needLogin() default true; + int seconds(); + + int maxCount(); + + boolean needLogin() default true; } diff --git a/miaosha-v2/pom.xml b/miaosha-v2/pom.xml index 344db19..90a3992 100644 --- a/miaosha-v2/pom.xml +++ b/miaosha-v2/pom.xml @@ -19,17 +19,6 @@ miaosha-web Demo project for Spring Boot - - 1.8 - 1.3.2 - 1.1.10 - 2.1.1 - 1.0.0 - 3.4.6 - 0.1 - 5.1.0 - 0.2.0 - diff --git a/pom.xml b/pom.xml index 7d63f63..7ce2a2e 100644 --- a/pom.xml +++ b/pom.xml @@ -22,9 +22,11 @@ 2.6.1 0.2.1.RELEASE 2.2.0 - 3.4.6 + 3.4.14 0.1 5.1.0 + 1.2.15 + 4.1.3 UTF-8 1.8 1.8 @@ -47,6 +49,16 @@ pom import + + com.github.miemiedev + mybatis-paginator + ${mybatis.paginator.version} + + + com.github.pagehelper + pagehelper + ${pagehelper.version} + org.mybatis.spring.boot mybatis-spring-boot-starter @@ -147,6 +159,11 @@ mybatis-spring 1.2.3 + + com.alibaba.spring.boot + dubbo-spring-boot-starter + 2.0.0 + @@ -164,7 +181,6 @@ mysql mysql-connector-java - 5.1.21