无忧付支付订单

This commit is contained in:
GYJ
2024-12-04 13:27:44 +08:00
parent 2e6ffef10a
commit 1c5bae5118
6 changed files with 211 additions and 103 deletions

View File

@@ -30,6 +30,6 @@ public interface InviteService {
PageUtils inviteAnalysis(int page,int limit, String time, Integer flag); PageUtils inviteAnalysis(int page,int limit, String time, Integer flag);
Map updateInvite(UserEntity userEntity, String format, Long userId, BigDecimal price); Map<String,Object> updateInvite(UserEntity userEntity, String format, Long userId, BigDecimal price);
} }

View File

@@ -188,7 +188,7 @@ public class InviteServiceImpl extends ServiceImpl<InviteDao, Invite> implements
@Override @Override
public Map updateInvite(UserEntity userEntity, String format, Long userId, BigDecimal price) { public Map<String,Object> updateInvite(UserEntity userEntity, String format, Long userId, BigDecimal price) {
Map<String,Object> result=new HashMap<>(); Map<String,Object> result=new HashMap<>();
if (userEntity != null && userId != null && price != null) { if (userEntity != null && userId != null && price != null) {
Invite invite1 = inviteDao.selectInviteByUser(userEntity.getUserId(), userId,1); Invite invite1 = inviteDao.selectInviteByUser(userEntity.getUserId(), userId,1);

View File

@@ -70,7 +70,7 @@ public class Orders implements Serializable {
private Integer diamond; private Integer diamond;
/** /**
* 支付方式 1微信app 2微信公众号 3微信小程序 4支付宝 5会员免费 6金豆 7抖音 8快手 * 支付方式 1微信app 2微信公众号 3微信小程序 4支付宝 5会员免费 6金豆 7抖音 8快手 9无忧付支付宝
*/ */
private Integer payWay; private Integer payWay;

View File

@@ -217,9 +217,13 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
//查询会员信息 //查询会员信息
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (courseId == null) {
return Result.error("短剧的id不能为空");
}
//订单模板对象 //订单模板对象
Orders orders = new Orders(); Orders orders = new Orders();
if (courseId != null) {
//根据短剧id去查询短剧相关信息 来填充订单模板 //根据短剧id去查询短剧相关信息 来填充订单模板
QueryWrapper<Course> queryWrapper = new QueryWrapper<>(); QueryWrapper<Course> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_delete", 0); queryWrapper.eq("is_delete", 0);
@@ -260,9 +264,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
} else { } else {
return Result.error("生成订单失败!"); return Result.error("生成订单失败!");
} }
} else {
return Result.error("短剧的id不能为空");
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.error("生成商品订单错误!!!" + e.getMessage()); log.error("生成商品订单错误!!!" + e.getMessage());
@@ -309,26 +311,26 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
@Override @Override
public Result payMoney(Long ordersId) { public Result payMoney(Long ordersId) {
reentrantReadWriteLock.writeLock().lock(); reentrantReadWriteLock.writeLock().lock();
try{ try {
Orders orders = baseMapper.selectById(ordersId); Orders orders = baseMapper.selectById(ordersId);
if (orders == null || !orders.getStatus().equals(0)) { if (orders == null || !orders.getStatus().equals(0)) {
return Result.error("订单错误,请刷新后重试!"); return Result.error("订单错误,请刷新后重试!");
} }
if(orders.getOrdersType()==1){ if (orders.getOrdersType() == 1) {
int count=0; int count = 0;
if(orders.getCourseDetailsId() != null){ if (orders.getCourseDetailsId() != null) {
count = courseUserDao.selectCount(new QueryWrapper<CourseUser>() count = courseUserDao.selectCount(new QueryWrapper<CourseUser>()
.eq("user_id", orders.getUserId()) .eq("user_id", orders.getUserId())
.eq("classify",2) .eq("classify", 2)
.eq("course_id", orders.getCourseId()) .eq("course_id", orders.getCourseId())
.eq(orders.getCourseDetailsId() != null, "course_details_id", orders.getCourseDetailsId())); .eq(orders.getCourseDetailsId() != null, "course_details_id", orders.getCourseDetailsId()));
}else{ } else {
count = courseUserDao.selectCount(new QueryWrapper<CourseUser>() count = courseUserDao.selectCount(new QueryWrapper<CourseUser>()
.eq("user_id", orders.getUserId()) .eq("user_id", orders.getUserId())
.eq("classify",1) .eq("classify", 1)
.eq("course_id", orders.getCourseId())); .eq("course_id", orders.getCourseId()));
} }
if(count>0){ if (count > 0) {
return Result.error("您已购买,请不要重复点击"); return Result.error("您已购买,请不要重复点击");
} }
} }
@@ -356,27 +358,27 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
UserEntity byUser = userService.queryByInvitationCode(userEntity.getInviterCode()); UserEntity byUser = userService.queryByInvitationCode(userEntity.getInviterCode());
Map map = inviteService.updateInvite(byUser, DateUtils.format(new Date()), userEntity.getUserId(), orders.getPayMoney()); Map map = inviteService.updateInvite(byUser, DateUtils.format(new Date()), userEntity.getUserId(), orders.getPayMoney());
Object oneUserId = map.get("oneUserId"); Object oneUserId = map.get("oneUserId");
if(oneUserId!=null){ if (oneUserId != null) {
orders.setOneUserId(Long.parseLong(String.valueOf(oneUserId))); orders.setOneUserId(Long.parseLong(String.valueOf(oneUserId)));
orders.setOneMoney(new BigDecimal(String.valueOf(map.get("oneMoney")))); orders.setOneMoney(new BigDecimal(String.valueOf(map.get("oneMoney"))));
} }
Object twoUserId = map.get("twoUserId"); Object twoUserId = map.get("twoUserId");
if(twoUserId!=null){ if (twoUserId != null) {
orders.setTwoUserId(Long.parseLong(String.valueOf(twoUserId))); orders.setTwoUserId(Long.parseLong(String.valueOf(twoUserId)));
orders.setTwoMoney(new BigDecimal(String.valueOf(map.get("twoMoney")))); orders.setTwoMoney(new BigDecimal(String.valueOf(map.get("twoMoney"))));
} }
Object sysUserId = map.get("sysUserId"); Object sysUserId = map.get("sysUserId");
if(sysUserId!=null){ if (sysUserId != null) {
orders.setSysUserId(Long.parseLong(String.valueOf(sysUserId))); orders.setSysUserId(Long.parseLong(String.valueOf(sysUserId)));
orders.setQdMoney(new BigDecimal(String.valueOf(map.get("qdMoney")))); orders.setQdMoney(new BigDecimal(String.valueOf(map.get("qdMoney"))));
} }
baseMapper.updateById(orders); baseMapper.updateById(orders);
insertOrders(orders); insertOrders(orders);
return Result.success(); return Result.success();
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.error("金豆支付订单异常:"+e.getMessage(),e); log.error("金豆支付订单异常:" + e.getMessage(), e);
}finally { } finally {
reentrantReadWriteLock.writeLock().unlock(); reentrantReadWriteLock.writeLock().unlock();
} }
return Result.success(); return Result.success();
@@ -394,7 +396,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
if (!refund) { if (!refund) {
return Result.error("退款失败!"); return Result.error("退款失败!");
} }
} else if(bean.getPayWay()==4 || bean.getPayWay()==5){ } else if (bean.getPayWay() == 4 || bean.getPayWay() == 5) {
String code = aliPayController.alipayRefund(bean); String code = aliPayController.alipayRefund(bean);
if (StringUtils.isNotBlank(code)) { if (StringUtils.isNotBlank(code)) {
JSONObject jsonObject = JSON.parseObject(code); JSONObject jsonObject = JSON.parseObject(code);
@@ -406,18 +408,18 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
} else { } else {
return Result.error("退款失败!"); return Result.error("退款失败!");
} }
}else if(bean.getPayWay()==7){ } else if (bean.getPayWay() == 7) {
boolean refund = dyService.refund(bean); boolean refund = dyService.refund(bean);
if (!refund) { if (!refund) {
return Result.error("退款失败!"); return Result.error("退款失败!");
} }
}else{ } else {
userMoneyService.updateMoney(1,bean.getUserId(),bean.getPayMoney().doubleValue()); userMoneyService.updateMoney(1, bean.getUserId(), bean.getPayMoney().doubleValue());
UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setMoney(bean.getPayMoney()); userMoneyDetails.setMoney(bean.getPayMoney());
userMoneyDetails.setUserId(bean.getUserId()); userMoneyDetails.setUserId(bean.getUserId());
userMoneyDetails.setContent("订单:"+bean.getOrdersNo()); userMoneyDetails.setContent("订单:" + bean.getOrdersNo());
userMoneyDetails.setTitle("订单退款:"+bean.getPayMoney()); userMoneyDetails.setTitle("订单退款:" + bean.getPayMoney());
userMoneyDetails.setType(1); userMoneyDetails.setType(1);
userMoneyDetails.setClassify(1); userMoneyDetails.setClassify(1);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -435,23 +437,23 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
UserVip userVip = userVipService.selectUserVipByUserId(bean.getUserId()); UserVip userVip = userVipService.selectUserVipByUserId(bean.getUserId());
if (userVip != null) { if (userVip != null) {
//判断用户开通的会员是否到期 //判断用户开通的会员是否到期
if(userVip.getIsVip()!=null && userVip.getIsVip()==2){ if (userVip.getIsVip() != null && userVip.getIsVip() == 2) {
int month=0; int month = 0;
//0会月/1季度/2年 //0会月/1季度/2年
if(bean.getVipNameType()==0){ if (bean.getVipNameType() == 0) {
month=1; month = 1;
}else if(bean.getVipNameType()==1){ } else if (bean.getVipNameType() == 1) {
month=3; month = 3;
}else{ } else {
month=12; month = 12;
} }
Calendar calendar=Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.setTime(DateUtils.stringToDate(userVip.getEndTime(),DateUtils.DATE_TIME_PATTERN)); calendar.setTime(DateUtils.stringToDate(userVip.getEndTime(), DateUtils.DATE_TIME_PATTERN));
calendar.add(Calendar.MONTH,-month); calendar.add(Calendar.MONTH, -month);
if(calendar.getTime().getTime()>System.currentTimeMillis()){ if (calendar.getTime().getTime() > System.currentTimeMillis()) {
//判断时间是否大于当前时间 如果大于 则改 //判断时间是否大于当前时间 如果大于 则改
userVip.setEndTime(DateUtils.format(calendar.getTime())); userVip.setEndTime(DateUtils.format(calendar.getTime()));
}else{ } else {
//否则设置为当前时间 并且会员改为过期 //否则设置为当前时间 并且会员改为过期
userVip.setEndTime(DateUtils.format(new Date())); userVip.setEndTime(DateUtils.format(new Date()));
userVip.setIsVip(1); userVip.setIsVip(1);
@@ -466,12 +468,12 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
} }
@Override @Override
public Result selectOrders(Integer page, Integer limit, String ordersNo, Integer status, Long userId,Long courseId, public Result selectOrders(Integer page, Integer limit, String ordersNo, Integer status, Long userId, Long courseId,
Integer flag,String time,String userName,Integer ordersType,String startTime,String endTime, Integer flag, String time, String userName, Integer ordersType, String startTime, String endTime,
Long sysUserId,String qdCode,String sysUserName) { Long sysUserId, String qdCode, String sysUserName) {
Page<Orders> pages = new Page<>(page, limit); Page<Orders> pages = new Page<>(page, limit);
return Result.success().put("data", new PageUtils(baseMapper.selectOrdersByOrdersNo(pages, ordersNo, status, userId,courseId, return Result.success().put("data", new PageUtils(baseMapper.selectOrdersByOrdersNo(pages, ordersNo, status, userId, courseId,
flag,time,userName,ordersType,startTime,endTime,sysUserId,qdCode,sysUserName))); flag, time, userName, ordersType, startTime, endTime, sysUserId, qdCode, sysUserName)));
} }
@Override @Override
@@ -522,26 +524,25 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
@Override @Override
public Integer selectOrdersCount(Integer status, Integer ordersType, Integer flag, String time,Long sysUserId) { public Integer selectOrdersCount(Integer status, Integer ordersType, Integer flag, String time, Long sysUserId) {
return baseMapper.selectOrdersCount(status, ordersType, flag, time,sysUserId); return baseMapper.selectOrdersCount(status, ordersType, flag, time, sysUserId);
} }
@Override @Override
public Double selectOrdersMoney(Integer status, Integer ordersType, Integer flag, String time,Long courseId,Long sysUserId) { public Double selectOrdersMoney(Integer status, Integer ordersType, Integer flag, String time, Long courseId, Long sysUserId) {
return baseMapper.selectOrdersMoney(status, ordersType, flag, time,courseId,sysUserId); return baseMapper.selectOrdersMoney(status, ordersType, flag, time, courseId, sysUserId);
} }
@Override @Override
public Double selectFenXiaoMoney(Integer type,Long sysUserId,Integer flag,String time) { public Double selectFenXiaoMoney(Integer type, Long sysUserId, Integer flag, String time) {
return baseMapper.selectFenXiaoMoney(type, sysUserId, flag, time); return baseMapper.selectFenXiaoMoney(type, sysUserId, flag, time);
} }
@Override @Override
public Integer selectOrdersCountStatisticsByYear(Integer flag,String time,Integer status){ public Integer selectOrdersCountStatisticsByYear(Integer flag, String time, Integer status) {
return baseMapper.selectOrdersCountStatisticsByYear(flag, time, status); return baseMapper.selectOrdersCountStatisticsByYear(flag, time, status);
} }
} }

View File

@@ -1,17 +1,28 @@
package com.sqx.modules.pay.controller.app; package com.sqx.modules.pay.controller.app;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.amazonaws.services.dynamodbv2.xspec.M; import com.sqx.common.utils.DateUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.entity.UserEntity;
import com.sqx.modules.app.service.UserService;
import com.sqx.modules.invite.service.InviteService;
import com.sqx.modules.orders.entity.Orders;
import com.sqx.modules.orders.service.OrdersService;
import com.sqx.modules.pay.dao.PayDetailsDao;
import com.sqx.modules.pay.entity.PayDetails;
import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.Encrypt; import com.sqx.modules.pay.wuyou.Encrypt;
import com.sqx.modules.pay.wuyou.NotifyDto; import com.sqx.modules.pay.wuyou.NotifyDto;
import com.sqx.modules.pay.wuyou.WuyouPay;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -24,6 +35,57 @@ import java.util.Map;
@RequestMapping("/app/wuyou") @RequestMapping("/app/wuyou")
public class WuyouController { public class WuyouController {
private final OrdersService ordersService;
private final PayDetailsDao payDetailsDao;
private final UserService userService;
private final InviteService inviteService;
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
WuyouController(OrdersService ordersService, PayDetailsDao payDetailsDao, UserService userService, InviteService inviteService) {
this.ordersService = ordersService;
this.payDetailsDao = payDetailsDao;
this.userService = userService;
this.inviteService = inviteService;
}
@ApiOperation("支付订单")
@PostMapping("/payOrder")
public Result payOrder(HttpServletRequest request, @RequestBody Long orderId, @RequestAttribute("userId") Long userId) {
Orders order = ordersService.getById(orderId);
if (order == null) {
return Result.error("订单不存在");
}
if (order.getStatus() != 0) {
return Result.error("订单已支付");
}
if (!order.getUserId().equals(userId)) {
return Result.error("订单不属于当前用户");
}
PayDetails payDetails = payDetailsDao.selectByOrderId(order.getOrdersNo());
if (payDetails == null) {
payDetails = new PayDetails();
payDetails.setState(0);
payDetails.setCreateTime(sdf.format(new Date()));
payDetails.setOrderId(order.getOrdersNo());
payDetails.setUserId(order.getUserId());
payDetails.setMoney(order.getPayMoney().doubleValue());
payDetails.setType(1);
payDetails.setClassify(9);
payDetailsDao.insert(payDetails);
}
BaseResp baseResp = WuyouPay.payOrder(order.getOrdersNo(), order.getPayMoney().toString(), request.getHeader("User-Agent"));
if (baseResp.getCode() != 200) {
return Result.error(baseResp.getMsg());
}
return Result.success().put("data", baseResp.getData());
}
@PostMapping("/notify") @PostMapping("/notify")
public String notify(HttpServletRequest request, @RequestBody NotifyDto notifyDto) { public String notify(HttpServletRequest request, @RequestBody NotifyDto notifyDto) {
log.info("无忧支付回调"); log.info("无忧支付回调");
@@ -41,6 +103,51 @@ public class WuyouController {
log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto)); log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto));
Orders order = ordersService.selectOrderByOrdersNo(notifyDto.getOutTradeNo());
if (order == null) {
log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto));
return "订单不存在";
}
if (order.getStatus() != 0) {
log.error("无忧支付回调订单已支付, 参数: {}", JSONObject.toJSONString(notifyDto));
return "订单已支付";
}
PayDetails payDetails = payDetailsDao.selectByOrderId(notifyDto.getOutTradeNo());
if (payDetails.getState() != 0) {
log.info("订单表信息丢失!");
}
String format = sdf.format(new Date());
payDetailsDao.updateState(payDetails.getId(), 1, format, notifyDto.getOutTradeNo());
order.setPayWay(9);
order.setStatus(1);
order.setPayTime(DateUtils.format(new Date()));
UserEntity user = userService.selectUserById(order.getUserId());
UserEntity byUser = userService.queryByInvitationCode(user.getInviterCode());
Map<String, Object> map = inviteService.updateInvite(byUser, format, user.getUserId(), order.getPayMoney());
Object oneUserId = map.get("oneUserId");
if (oneUserId != null) {
order.setOneUserId(Long.parseLong(String.valueOf(oneUserId)));
order.setOneMoney(new BigDecimal(String.valueOf(map.get("oneMoney"))));
}
Object twoUserId = map.get("twoUserId");
if (twoUserId != null) {
order.setTwoUserId(Long.parseLong(String.valueOf(twoUserId)));
order.setTwoMoney(new BigDecimal(String.valueOf(map.get("twoMoney"))));
}
Object sysUserId = map.get("sysUserId");
if (sysUserId != null) {
order.setSysUserId(Long.parseLong(String.valueOf(sysUserId)));
order.setQdMoney(new BigDecimal(String.valueOf(map.get("qdMoney"))));
}
ordersService.updateById(order);
ordersService.insertOrders(order);
return "success"; return "success";
} }
} }