From 213f6b217ba9eb8f5562adb7e90407a7797a581a Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 24 三月 2023 10:35:37 +0800
Subject: [PATCH] 发票管理修改
---
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java | 92 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 88 insertions(+), 4 deletions(-)
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java
index ab94bfa..fd81855 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java
@@ -4,19 +4,26 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.supersavedriving.user.core.common.constant.JwtConstants;
import com.supersavedriving.user.core.shiro.ShiroKit;
import com.supersavedriving.user.core.shiro.ShiroUser;
import com.supersavedriving.user.core.util.JwtTokenUtil;
import com.supersavedriving.user.core.util.ToolUtil;
import com.supersavedriving.user.modular.system.dao.AppUserMapper;
import com.supersavedriving.user.modular.system.model.AppUser;
+import com.supersavedriving.user.modular.system.model.Coupon;
+import com.supersavedriving.user.modular.system.model.UserToCoupon;
import com.supersavedriving.user.modular.system.service.IAppUserService;
+import com.supersavedriving.user.modular.system.service.ICouponService;
+import com.supersavedriving.user.modular.system.service.IUserToCouponService;
import com.supersavedriving.user.modular.system.util.RedisUtil;
import com.supersavedriving.user.modular.system.util.ResultUtil;
import com.supersavedriving.user.modular.system.util.weChat.WXCore;
import com.supersavedriving.user.modular.system.util.weChat.WeChatUtil;
import com.supersavedriving.user.modular.system.util.weChat.model.Code2Session;
+import com.supersavedriving.user.modular.system.warpper.CouponWarpper;
import com.supersavedriving.user.modular.system.warpper.SignInToRegister;
+import com.supersavedriving.user.modular.system.warpper.SignInToRegisterWarpper;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
@@ -24,8 +31,13 @@
import org.apache.shiro.util.ByteSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
/**
@@ -42,12 +54,18 @@
private final String salt = "s5d1";
+ @Autowired
+ private ICouponService couponService;
+
+ @Autowired
+ private IUserToCouponService userToCouponService;
+
@Override
public ResultUtil<String> appUserLogin(String jscode) throws Exception {
Code2Session code2Session = weChatUtil.code2Session(jscode);
- if(code2Session.getErrcode() != 0){
+ if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){
return ResultUtil.error(code2Session.getErrmsg());
}
String openid = code2Session.getOpenid();
@@ -107,7 +125,8 @@
* @throws Exception
*/
@Override
- public ResultUtil signInToRegister(SignInToRegister signInToRegister) throws Exception {
+ public ResultUtil<SignInToRegisterWarpper> signInToRegister(SignInToRegister signInToRegister) throws Exception {
+ SignInToRegisterWarpper warpper = new SignInToRegisterWarpper();
if(ToolUtil.isEmpty(signInToRegister.getJscode())){
return ResultUtil.paranErr("jscode");
}
@@ -118,7 +137,7 @@
return ResultUtil.paranErr("ivPhone");
}
Code2Session code2Session = weChatUtil.code2Session(signInToRegister.getJscode());
- if(code2Session.getErrcode() != 0){
+ if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){
return ResultUtil.error(code2Session.getErrmsg());
}
String openid = code2Session.getOpenid();
@@ -143,6 +162,13 @@
appUser.setInviterId(signInToRegister.getInviterId());
appUser.setInviterType(signInToRegister.getInviterType());
this.insert(appUser);
+ //发送优惠券
+ boolean lock = redisUtil.lock();
+ if(lock){
+ List<CouponWarpper> list = pushCoupon(appUser.getId());
+ redisUtil.unlock();
+ warpper.setCoupons(list);
+ }
}
if(appUser.getStatus() == 2){
return ResultUtil.error("账号被冻结");
@@ -151,6 +177,64 @@
if(ToolUtil.isEmpty(token)){
return ResultUtil.error("获取身份凭证失败");
}
- return ResultUtil.success(token);
+ warpper.setToken(token);
+ return ResultUtil.success(warpper);
+ }
+
+
+ /**
+ * 发送优惠券
+ * @param userId
+ */
+ public List<CouponWarpper> pushCoupon(Integer userId){
+ List<Coupon> coupons = couponService.selectList(new EntityWrapper<Coupon>().eq("coupon_type", 2).eq("coupon_state", 1).gt("remaining_quantity", 0));
+ List<CouponWarpper> list = new ArrayList<>();
+ for (Coupon coupon : coupons) {
+ UserToCoupon userToCoupon = new UserToCoupon();
+ userToCoupon.setCouponId(coupon.getId());
+ userToCoupon.setCreateTime(new Date());
+ userToCoupon.setUserId(userId);
+ userToCoupon.setStatus(1);
+ userToCoupon.setCouponTotal(coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ?
+ coupon.getRemainingQuantity() : coupon.getCouponSendQuantity());
+ userToCoupon.setValidCount(userToCoupon.getCouponTotal());
+ userToCoupon.setExpireTime(new Date(System.currentTimeMillis() + (coupon.getCouponValidity() * 24 * 60 * 60 * 1000)));
+ userToCouponService.insert(userToCoupon);
+
+ coupon.setRemainingQuantity(coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ? 0 :
+ coupon.getRemainingQuantity() - coupon.getCouponSendQuantity());
+ couponService.updateById(coupon);
+
+ CouponWarpper couponWarpper = new CouponWarpper();
+ couponWarpper.setCouponConditionalAmount(coupon.getCouponConditionalAmount());
+ couponWarpper.setCouponPreferentialAmount(coupon.getCouponPreferentialAmount());
+ couponWarpper.setCouponName(coupon.getCouponName());
+ couponWarpper.setNumber(userToCoupon.getValidCount());
+ couponWarpper.setExpirationDate(userToCoupon.getExpireTime().getTime());
+ list.add(couponWarpper);
+ }
+ return list;
+ }
+
+
+ @Override
+ public Integer getUserByRequest() throws Exception {
+ ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = servletRequestAttributes.getRequest();
+ String requestHeader = request.getHeader(JwtConstants.AUTH_HEADER);
+ if (ToolUtil.isNotEmpty(requestHeader) && requestHeader.startsWith("Bearer ")) {
+ requestHeader = requestHeader.substring(requestHeader.indexOf(" ") + 1);
+ String key = null;
+ int length = requestHeader.length();
+ if(length > 16){
+ key = requestHeader.substring(length - 16);
+ }else{
+ key = requestHeader;
+ }
+ String value = redisUtil.getValue(key);
+ return null != value ? Integer.valueOf(value) : null;
+ }else{
+ return null;
+ }
}
}
--
Gitblit v1.7.1