From 85fefef6c862c543117ad8d2691817bfeae69f41 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 23 六月 2023 11:11:15 +0800
Subject: [PATCH] 修改bug
---
user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java | 211 ++++++++++++++++++++++++++++++++++------------------
1 files changed, 138 insertions(+), 73 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 35f1aee..e371ad1 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
@@ -17,6 +17,7 @@
import com.supersavedriving.user.modular.system.util.MallBook.model.PaymentOrder;
import com.supersavedriving.user.modular.system.util.MallBook.model.PaymentOrderGood;
import com.supersavedriving.user.modular.system.util.MallBook.model.QueryOrder;
+import com.supersavedriving.user.modular.system.util.MallBook.util.Transfer;
import com.supersavedriving.user.modular.system.util.MallBook.util.TrhRequest;
import com.supersavedriving.user.modular.system.util.PayMoneyUtil;
import com.supersavedriving.user.modular.system.util.RedisUtil;
@@ -38,6 +39,7 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
+import java.math.BigInteger;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -73,6 +75,12 @@
@Autowired
private IAccountChangeDetailService accountChangeDetailService;
+
+ @Autowired
+ private IDriverService driverService;
+
+ @Autowired
+ private ISystemConfigService systemConfigService;
@Value("${callbackPath}")
private String callbackPath;//支付回调网关地址
@@ -145,60 +153,116 @@
@Override
public ResultUtil<SignInToRegisterWarpper> signInToRegister(SignInToRegister signInToRegister) throws Exception {
SignInToRegisterWarpper warpper = new SignInToRegisterWarpper();
- if(ToolUtil.isEmpty(signInToRegister.getJscode())){
- return ResultUtil.paranErr("jscode");
- }
- if(ToolUtil.isEmpty(signInToRegister.getEncryptedDataPhone())){
- return ResultUtil.paranErr("encryptedDataPhone");
- }
- if(ToolUtil.isEmpty(signInToRegister.getIvPhone())){
- return ResultUtil.paranErr("ivPhone");
- }
- Code2Session code2Session = weChatUtil.code2Session(signInToRegister.getJscode());
- if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){
- return ResultUtil.error(code2Session.getErrmsg());
- }
- String openid = code2Session.getOpenid();
- String session_key = code2Session.getSession_key();
- String decrypt = WXCore.decrypt(signInToRegister.getEncryptedDataPhone(), session_key, signInToRegister.getIvPhone());
- if(ToolUtil.isEmpty(decrypt)){
- return ResultUtil.error("获取手机号失败");
- }
- JSONObject phone = JSON.parseObject(decrypt);
- String purePhoneNumber = phone.getString("purePhoneNumber");
- AppUser appUser = this.selectOne(new EntityWrapper<AppUser>().eq("phone", purePhoneNumber).ne("status", 3));
- if(null == appUser){
- appUser = new AppUser();
- appUser.setNickname("亲爱的用户");
- appUser.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png");
- appUser.setPhone(purePhoneNumber);
- appUser.setOpenid(openid);
- appUser.setUnionid(code2Session.getUnionid());
- appUser.setAccountBalance(0D);
- appUser.setStatus(1);
- appUser.setCreateTime(new Date());
- appUser.setIsException(1);
- 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);
+ try {
+ if(ToolUtil.isEmpty(signInToRegister.getJscode())){
+ return ResultUtil.paranErr("jscode");
}
+ if(ToolUtil.isEmpty(signInToRegister.getEncryptedDataPhone())){
+ return ResultUtil.paranErr("encryptedDataPhone");
+ }
+ if(ToolUtil.isEmpty(signInToRegister.getIvPhone())){
+ return ResultUtil.paranErr("ivPhone");
+ }
+ Code2Session code2Session = weChatUtil.code2Session(signInToRegister.getJscode());
+ if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){
+ return ResultUtil.error(code2Session.getErrmsg());
+ }
+ String openid = code2Session.getOpenid();
+ String session_key = code2Session.getSession_key();
+ String decrypt = WXCore.decrypt(signInToRegister.getEncryptedDataPhone(), session_key, signInToRegister.getIvPhone());
+ if(ToolUtil.isEmpty(decrypt)){
+ return ResultUtil.error("获取手机号失败");
+ }
+ JSONObject phone = JSON.parseObject(decrypt);
+ String purePhoneNumber = phone.getString("purePhoneNumber");
+ AppUser appUser = this.selectOne(new EntityWrapper<AppUser>().eq("phone", purePhoneNumber).ne("status", 3));
+ if(null == appUser){
+ appUser = new AppUser();
+ appUser.setNickname("亲爱的用户");
+ appUser.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png");
+ appUser.setPhone(purePhoneNumber);
+ appUser.setOpenid(openid);
+ appUser.setUnionid(code2Session.getUnionid());
+ appUser.setAccountBalance(0D);
+ appUser.setStatus(1);
+ appUser.setCreateTime(new Date());
+ appUser.setIsException(1);
+ if(null != signInToRegister.getInviterId()){
+ appUser.setInviterId(signInToRegister.getInviterId());
+ appUser.setInviterType(signInToRegister.getInviterType());
+ }
+ this.insert(appUser);
+ //发送优惠券
+ boolean lock = redisUtil.lock(5);
+ if(!lock){
+ int num1 = 1;
+ while (num1 <= 10){
+ Thread.sleep(3000);//等待3秒
+ lock = redisUtil.lock(5);
+ if(lock){
+ break;
+ }else{
+ num1++;
+ }
+ }
+ }
+ if(lock){
+ List<CouponWarpper> list = pushCoupon(appUser.getId());
+ redisUtil.unlock();
+ warpper.setCoupons(list);
+ }
+ }
+ if(appUser.getStatus() == 2){
+ return ResultUtil.error("账号被冻结");
+ }
+ String token = getToken(appUser);
+ if(ToolUtil.isEmpty(token)){
+ return ResultUtil.error("获取身份凭证失败");
+ }
+ warpper.setToken(token);
+ }catch (Exception e){
+ e.printStackTrace();
+ redisUtil.unlock();
}
- if(appUser.getStatus() == 2){
- return ResultUtil.error("账号被冻结");
- }
- String token = getToken(appUser);
- if(ToolUtil.isEmpty(token)){
- return ResultUtil.error("获取身份凭证失败");
- }
- warpper.setToken(token);
return ResultUtil.success(warpper);
}
+
+
+ /**
+ * 转账
+ * @param id
+ * @param merOrderId
+ * @param toUserId
+ * @param amount
+ * @param notifyUrl
+ * @return
+ */
+ public ResultUtil zhaunzhang(Integer id, String merOrderId, String toUserId, Double amount, String notifyUrl){
+ Transfer transfer = new Transfer();
+ transfer.setDepositMerOrderId(merOrderId);
+ transfer.setToUserId(toUserId);
+ transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+ transfer.setOrderName("补贴");
+ transfer.setNotifyUrl(notifyUrl);
+ transfer.setParameter1(id.toString());
+ TrhRequest<Transfer> request = new TrhRequest();
+ InterfaceResponse execute = request.execute(transfer, Transfer.SERVICE_CODE);
+ if("0000".equals(execute.getCode())){
+ JSONObject jsonObject = JSON.parseObject(execute.getResult());
+ Integer status = jsonObject.getInteger("status");//0:待处理;1:成功;2:失败
+ if(2 == status){
+ System.err.println("转账失败");
+ return ResultUtil.error("转账失败");
+ }
+ return ResultUtil.success();
+ }else{
+ System.err.println("转账失败:" + execute.getMsg());
+ return ResultUtil.error(execute.getMsg());
+ }
+ }
+
+
+
/**
@@ -210,28 +274,30 @@
.eq("coupon_state", 1).eq("status", 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);
+ Integer num = coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ?
+ coupon.getRemainingQuantity() : coupon.getCouponSendQuantity();
+ for (int i = 0; i < num; i++) {
+ UserToCoupon userToCoupon = new UserToCoupon();
+ userToCoupon.setCouponId(coupon.getId());
+ userToCoupon.setCreateTime(new Date());
+ userToCoupon.setUserId(userId);
+ userToCoupon.setStatus(1);
+ userToCoupon.setCouponTotal(1);
+ userToCoupon.setValidCount(1);
+ userToCoupon.setExpireTime(new Date(System.currentTimeMillis() + (coupon.getCouponValidity().longValue() * 24L * 60L * 60L * 1000L)));
+ userToCouponService.insert(userToCoupon);
+ 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);
+ }
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;
}
@@ -317,12 +383,10 @@
rechargeRecord.setPayStatus(1);
rechargeRecord.setPayType(1);
rechargeRecordService.insert(rechargeRecord);
-// ResultUtil weixinpay = payMoneyUtil.weixinpay("余额充值", "", out_trade_no, amount.toString(), "/base/appUser/rechargeBalanceCallback", "JSAPI", appUser.getOpenid());
-// return weixinpay;
PaymentOrder paymentOrder = new PaymentOrder();
paymentOrder.setBizOrderId(out_trade_no);
- paymentOrder.setAmount(String.valueOf(amount * 100));
+ paymentOrder.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
paymentOrder.setOrderName("账户充值");
paymentOrder.setPayType("WX_MINI");
paymentOrder.setTransferType("0");
@@ -335,7 +399,7 @@
paymentOrderGood.setGoodsName("账户充值");
goodsDetail.add(paymentOrderGood);
paymentOrder.setGoodsDetail(goodsDetail);
- paymentOrder.setFrontUrl("");
+ paymentOrder.setFrontUrl(callbackPath + "/base/appUser/rechargeBalanceCallback");
paymentOrder.setNotifyUrl(callbackPath + "/base/appUser/rechargeBalanceCallback");
paymentOrder.setParameter1(out_trade_no);
@@ -349,6 +413,7 @@
if("2".equals(status)){
return ResultUtil.error("失败");
}
+ String merOrderId = jsonObject.getString("merOrderId");
String payCode = jsonObject.getString("payCode");
if(ToolUtil.isNotEmpty(payCode)){
new Thread(new Runnable() {
@@ -365,7 +430,7 @@
return;
}
QueryOrder queryOrder = new QueryOrder();
- queryOrder.setOriginalMerOrderId(out_trade_no);
+ queryOrder.setOriginalMerOrderId(merOrderId);
queryOrder.setQueryType("1");
TrhRequest<QueryOrder> request = new TrhRequest();
InterfaceResponse execute1 = request.execute(queryOrder, QueryOrder.SERVICE_CODE);
--
Gitblit v1.7.1