|
|
@@ -1,7 +1,9 @@
|
|
|
package beilv.web.controller.carinformation;
|
|
|
|
|
|
-import beilv.cardpurchaserecord.domain.CardPurchaseRecord;
|
|
|
-import beilv.cardpurchaserecord.service.ICardPurchaseRecordService;
|
|
|
+import beilv.admissionticket.domain.AdmissionTicket;
|
|
|
+import beilv.admissionticket.service.IAdmissionTicketService;
|
|
|
+import beilv.bootacourse.domain.BootACourseBO;
|
|
|
+import beilv.bootacourse.service.IBootACourseService;
|
|
|
import beilv.carinformation.domain.CarInformation;
|
|
|
import beilv.carinformation.service.ICarInformationService;
|
|
|
import beilv.common.core.controller.BaseController;
|
|
|
@@ -9,6 +11,9 @@ import beilv.common.core.domain.AjaxResult;
|
|
|
import beilv.common.utils.DateUtils;
|
|
|
import beilv.common.utils.StringUtils;
|
|
|
import beilv.common.utils.uuid.IdUtils;
|
|
|
+import beilv.competition.domain.Competition;
|
|
|
+import beilv.competition.service.ICompetitionService;
|
|
|
+import beilv.site.service.IBeilvSiteService;
|
|
|
import beilv.usermembershipcard.domain.UserMembershipCard;
|
|
|
import beilv.usermembershipcard.service.IUserMembershipCardService;
|
|
|
import beilv.vipCard.domain.VipCard;
|
|
|
@@ -23,7 +28,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
import java.math.RoundingMode;
|
|
|
-import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* 会员卡AppController
|
|
|
@@ -32,17 +36,14 @@ import java.util.List;
|
|
|
* @date 2025-01-02
|
|
|
*/
|
|
|
@Controller
|
|
|
-//@RequestMapping("/app-api/cardApp")
|
|
|
-@RequestMapping("/cardApp")
|
|
|
+@RequestMapping("/app-api/cardApp")
|
|
|
+//@RequestMapping("/cardApp")
|
|
|
public class cardAppController extends BaseController {
|
|
|
|
|
|
@Autowired
|
|
|
private ICarInformationService carInformationService;
|
|
|
|
|
|
@Autowired
|
|
|
- private ICardPurchaseRecordService cardPurchaseRecordService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private IUserMembershipCardService userMembershipCardService;
|
|
|
|
|
|
@Autowired
|
|
|
@@ -51,22 +52,143 @@ public class cardAppController extends BaseController {
|
|
|
@Autowired
|
|
|
private IVipCardService vipCardService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IBeilvSiteService siteService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IBootACourseService courseService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IAdmissionTicketService ticketService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ICompetitionService competitionService;
|
|
|
+
|
|
|
/**
|
|
|
* 新增充值记录
|
|
|
- * userId
|
|
|
- * practicalMoney
|
|
|
+ * id 生成的数据标识(后续交互的关键信息)
|
|
|
+ * user_id 用户id
|
|
|
+ * bus_id 业务关联id(根据支付方式不同, 写入的值不同)
|
|
|
+ * order_type 订单类型(充值:chongzhi; 约球:yueqiu; 购卡:gouka; 报名参赛:cansai; 观看门票:menpiao)
|
|
|
+ * payment_status 支付状态: 生成订单, 默认为待支付:payment_status_to_be_paid
|
|
|
+ * create_time 订单生成时间
|
|
|
+ * payment_type 支付类型(微信:weChart; 会员卡:vipCard; 次卡:numCard)
|
|
|
+ * payment_time 支付时间: 如果支付类型为微信, 则回调接口设置时间; 如果是会员卡或次卡, 直接设置为订单生成时间
|
|
|
+ * cancellation_time 取消时间: 支付类型为微信支付, 则回调接口设置时间; 如果是会员卡或次卡, 则不会产生数据
|
|
|
+ * verify_time 核销时间: 定时任务核销
|
|
|
+ * refund_time 退款时间: 用户发起退款时生成的时间
|
|
|
+ * practical_money 实际支付金额
|
|
|
+ * ooriginal_price 原价
|
|
|
+ * member_price 会员价
|
|
|
*/
|
|
|
@PostMapping("/addVipCardLog")
|
|
|
@ResponseBody
|
|
|
public AjaxResult addSave(@RequestBody VipCardLog vipCardLog) {
|
|
|
- String orderId = IdUtils.fastSimpleUUID();
|
|
|
- vipCardLog.setId(IdUtils.fastSimpleUUID());
|
|
|
+ String uuid = IdUtils.fastSimpleUUID();
|
|
|
+ vipCardLog.setId(uuid);
|
|
|
+ vipCardLog.setBusId(IdUtils.fastSimpleUUID());
|
|
|
+ vipCardLog.setOrderType("chongzhi");
|
|
|
vipCardLog.setPaymentStatus("payment_status_to_be_paid");
|
|
|
- vipCardLog.setOrderId(orderId);
|
|
|
- vipCardLog.setOrderType("1");
|
|
|
- int i = vipCardLogService.insertVipCardLog(vipCardLog);
|
|
|
- if (i > 0) {
|
|
|
- return AjaxResult.success("添加成功!", orderId);
|
|
|
+ vipCardLog.setCreateTime(DateUtils.getNowDate());
|
|
|
+ vipCardLog.setPaymentType("weChart");
|
|
|
+ if (vipCardLogService.insertVipCardLog(vipCardLog) > 0) {
|
|
|
+ return AjaxResult.success("操作成功!", uuid);
|
|
|
+ } else {
|
|
|
+ return toAjax(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增其他订单记录
|
|
|
+ * id 生成的数据标识(后续交互的关键信息)
|
|
|
+ * user_id 用户id
|
|
|
+ * bus_id 业务关联id
|
|
|
+ * (当支付方式为微信时: 约球: 场地id; 购卡: 卡片id; 报名参赛: 赛事id; 门票: 赛事id)
|
|
|
+ * (当支付方式为会员卡时: 会员卡id)
|
|
|
+ * (当支付方式为次卡时: 次卡id)
|
|
|
+ * order_type 订单类型(充值:chongzhi; 约球:yueqiu; 购卡:gouka; 报名参赛:cansai; 观看门票:menpiao)
|
|
|
+ * payment_status 支付状态: 生成订单, 默认为待支付:payment_status_to_be_paid
|
|
|
+ * create_time 订单生成时间
|
|
|
+ * payment_type 支付类型(微信:weChart; 会员卡:vipCard; 次卡:numCard)
|
|
|
+ * payment_time 支付时间: 如果支付类型为微信, 则回调接口设置时间; 如果是会员卡或次卡, 直接设置为订单生成时间
|
|
|
+ * cancellation_time 取消时间: 支付类型为微信支付, 则回调接口设置时间; 如果是会员卡或次卡, 则不会产生数据
|
|
|
+ * verify_time 核销时间: 定时任务核销
|
|
|
+ * refund_time 退款时间: 用户发起退款时生成的时间
|
|
|
+ * practical_money 实际支付金额
|
|
|
+ * ooriginal_price 原价
|
|
|
+ * member_price 会员价
|
|
|
+ */
|
|
|
+ @PostMapping("/addOrderLog")
|
|
|
+ @ResponseBody
|
|
|
+ public AjaxResult addOrderLog(@RequestBody VipCardLog vipCardLog) {
|
|
|
+ String uuid = IdUtils.fastSimpleUUID();
|
|
|
+ vipCardLog.setId(uuid);//设置订单编号
|
|
|
+ vipCardLog.setCreateTime(DateUtils.getNowDate());//设置订单生成时间
|
|
|
+
|
|
|
+
|
|
|
+ //验证购票种类及对应的信息是否可用
|
|
|
+ String orderType = vipCardLog.getOrderType();
|
|
|
+ if ("yueqiu".equals(orderType)) {
|
|
|
+ //约球, 验证场次是否可用, 如果可用将其锁定
|
|
|
+ if (courseService.isOk(new BootACourseBO(vipCardLog.getBusId()))) {
|
|
|
+ //将门票信息修改为2: 线上预约的时段;
|
|
|
+ AdmissionTicket admissionTicket = new AdmissionTicket();
|
|
|
+ admissionTicket.setId(vipCardLog.getBusId());
|
|
|
+ admissionTicket.setAdmissionTicketStatus("2");
|
|
|
+ ticketService.updateBeilvAdmissionTicket(admissionTicket);
|
|
|
+ } else {
|
|
|
+ return AjaxResult.error("当前场次已被预订!");
|
|
|
+ }
|
|
|
+ } else if ("cansai".equals(orderType)) {
|
|
|
+ //参赛, 验证赛事报名是否结束, 参赛人员是否已满. 如果可用则锁定名额
|
|
|
+
|
|
|
+ //查询赛事信息.
|
|
|
+ Competition competition = competitionService.selectCompetitionById(Integer.valueOf(vipCardLog.getBusId()));
|
|
|
+ String competitionState = competition.getCompetitionState();
|
|
|
+ if ("competiton_state_3".equals(competitionState)) {
|
|
|
+ return AjaxResult.error("赛事报名结束!");
|
|
|
+ } else if ("competiton_state_4".equals(competitionState)) {
|
|
|
+ return AjaxResult.error("赛事已关闭!");
|
|
|
+ } else {
|
|
|
+ //查询已经报名的人数会团队数
|
|
|
+ int registrantsNumber = vipCardLogService.getRegistrantsNumber(vipCardLog);
|
|
|
+ if (registrantsNumber >= competition.getTeamMax()) {
|
|
|
+ return AjaxResult.error("参赛人(团队)数已满!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //验证支付方式
|
|
|
+ String paymentType = vipCardLog.getPaymentType();
|
|
|
+ if ("weChart".equals(paymentType)) {
|
|
|
+ //微信支付, 状态为待支付.
|
|
|
+ vipCardLog.setPaymentStatus("payment_status_to_be_paid");
|
|
|
+ } else {
|
|
|
+ //其他支付, 状态已支付
|
|
|
+ vipCardLog.setPaymentStatus("payment_status_have_paid");
|
|
|
+ vipCardLog.setPaymentTime(vipCardLog.getCreateTime());//支付时间同订单生成时间
|
|
|
+ if ("vipCard".equals(paymentType)) {
|
|
|
+ //如果是会员卡, 进行会员卡扣费
|
|
|
+ VipCard vipCard = vipCardService.selectVipCardById(vipCardLog.getPaymentId());
|
|
|
+ vipCard.setBalance(vipCard.getBalance().subtract(vipCardLog.getPracticalMoney()).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ vipCardService.updateVipCard(vipCard);
|
|
|
+ } else if ("numCard".equals(paymentType)) {
|
|
|
+ //如果是次卡, 进行次卡扣次数
|
|
|
+ UserMembershipCard userMembershipCard = userMembershipCardService.selectUserMembershipCardById(Long.valueOf(vipCardLog.getPaymentId()));
|
|
|
+ if (userMembershipCard.getRemainingNumber() == 0) {
|
|
|
+ return AjaxResult.error("次数不足!");
|
|
|
+ }
|
|
|
+ userMembershipCard.setRemainingNumber(userMembershipCard.getRemainingNumber() - 1);
|
|
|
+ userMembershipCardService.updateUserMembershipCard(userMembershipCard);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ return AjaxResult.error("未知支付类型!");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (vipCardLogService.insertVipCardLog(vipCardLog) > 0) {
|
|
|
+ return AjaxResult.success("操作成功!", uuid);
|
|
|
} else {
|
|
|
return toAjax(0);
|
|
|
}
|
|
|
@@ -83,13 +205,13 @@ public class cardAppController extends BaseController {
|
|
|
@PostMapping("/addVipCardLogCallBack")
|
|
|
@ResponseBody
|
|
|
public AjaxResult addVipCardLogCallBack(@RequestBody VipCardLog vipCardLog) {
|
|
|
- if (StringUtils.isEmpty(vipCardLog.getOrderId())) {
|
|
|
+ if (StringUtils.isEmpty(vipCardLog.getId())) {
|
|
|
return AjaxResult.error("订单号不能为空!");
|
|
|
}
|
|
|
|
|
|
if ("payment_status_have_paid".equals(vipCardLog.getPaymentStatus())) {
|
|
|
//拉取订单信息
|
|
|
- VipCardLog orderInfo = vipCardLogService.getOrderByOrderId(vipCardLog.getOrderId());
|
|
|
+ VipCardLog orderInfo = vipCardLogService.selectVipCardLogById(vipCardLog.getId());
|
|
|
|
|
|
//获取会员卡信息
|
|
|
VipCard vipCard = vipCardService.selectVipCardByUserId(orderInfo.getUserId());
|
|
|
@@ -99,10 +221,8 @@ public class cardAppController extends BaseController {
|
|
|
vipCardService.insertVipCard(new VipCard(Long.parseLong(orderInfo.getUserId()), orderInfo.getPracticalMoney()));
|
|
|
} else {
|
|
|
//false 有会员卡,
|
|
|
-
|
|
|
vipCardService.updateVipCard(new VipCard(Long.parseLong(orderInfo.getUserId()), orderInfo.getPracticalMoney().add(vipCard.getBalance()).setScale(2, RoundingMode.HALF_UP)));
|
|
|
}
|
|
|
-
|
|
|
vipCardLog.setPaymentTime(DateUtils.getNowDate());
|
|
|
} else if ("payment_status_cancelled".equals(vipCardLog.getPaymentStatus())) {
|
|
|
vipCardLog.setCancellationTime(DateUtils.getNowDate());
|
|
|
@@ -112,66 +232,115 @@ public class cardAppController extends BaseController {
|
|
|
return toAjax(vipCardLogService.updateVipCardLogByOrderId(vipCardLog));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * 查询卡种信息列表
|
|
|
+ * 其他支付回调
|
|
|
*/
|
|
|
- @PostMapping("/cardInformationlist")
|
|
|
+ @PostMapping("/addOrderLogCallBack")
|
|
|
@ResponseBody
|
|
|
- public AjaxResult cardInformationlist(@RequestBody CarInformation carInformation) {
|
|
|
- return AjaxResult.success(carInformationService.selectCarInformationList(carInformation));
|
|
|
- }
|
|
|
+ public AjaxResult addOrderLogCallBack(@RequestBody VipCardLog vipCardLog) {
|
|
|
+ if (StringUtils.isEmpty(vipCardLog.getId())) {
|
|
|
+ return AjaxResult.error("订单号不能为空!");
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 查询购卡记录列表
|
|
|
- */
|
|
|
- @PostMapping("/getRecordlist")
|
|
|
- @ResponseBody
|
|
|
- public AjaxResult list(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
|
|
|
- List<CardPurchaseRecord> list = cardPurchaseRecordService.selectCardPurchaseRecordList(cardPurchaseRecord);
|
|
|
- return AjaxResult.success(list);
|
|
|
- }
|
|
|
+ //拉取订单信息
|
|
|
+ VipCardLog orderInfo = vipCardLogService.selectVipCardLogById(vipCardLog.getId());
|
|
|
|
|
|
- /**
|
|
|
- * 购卡生成订单
|
|
|
- */
|
|
|
- @PostMapping("/addCard")
|
|
|
- @ResponseBody
|
|
|
- public AjaxResult addCard(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
|
|
|
- return AjaxResult.success(cardPurchaseRecordService.insertCardPurchaseRecord(cardPurchaseRecord));
|
|
|
- }
|
|
|
+ if ("payment_status_have_paid".equals(vipCardLog.getPaymentStatus())) {
|
|
|
+ vipCardLog.setPaymentTime(DateUtils.getNowDate());
|
|
|
+ String orderType = orderInfo.getOrderType();
|
|
|
|
|
|
- /**
|
|
|
- * 购卡回调(购卡、取消订单)
|
|
|
- */
|
|
|
- @PostMapping("/addCardCallback")
|
|
|
- @ResponseBody
|
|
|
- public AjaxResult addCardCallback(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
|
|
|
- return toAjax(cardPurchaseRecordService.addCardCallback(cardPurchaseRecord));
|
|
|
+ if ("gouka".equals(orderType)) {
|
|
|
+ CarInformation carInformation = carInformationService.selectCarInformationById(Long.valueOf(orderInfo.getBusId()));
|
|
|
+ //购卡订单, 支付成功, 生成卡片写入到次卡表
|
|
|
+ userMembershipCardService.insertUserMembershipCard(new UserMembershipCard(orderInfo.getUserId(), vipCardLog.getId(), carInformation.getTotalNumber(), "0", "3", DateUtils.getNowDate()));
|
|
|
+ }
|
|
|
+ } else if ("payment_status_cancelled".equals(vipCardLog.getPaymentStatus())) {
|
|
|
+ vipCardLog.setCancellationTime(DateUtils.getNowDate());
|
|
|
+
|
|
|
+ if ("yueqiu".equals(vipCardLog.getOrderType())) {
|
|
|
+ AdmissionTicket admissionTicket = new AdmissionTicket();
|
|
|
+ admissionTicket.setId(vipCardLog.getBusId());
|
|
|
+ admissionTicket.setAdmissionTicketStatus("0");
|
|
|
+ ticketService.updateBeilvAdmissionTicket(admissionTicket);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ return AjaxResult.error("支付状态错误!");
|
|
|
+ }
|
|
|
+ return toAjax(vipCardLogService.updateVipCardLogByOrderId(vipCardLog));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 查询用户会员卡列表
|
|
|
+ * 查询我的订单
|
|
|
*/
|
|
|
- @PostMapping("/getUserCardList")
|
|
|
+ @PostMapping("/selectOrderList")
|
|
|
@ResponseBody
|
|
|
- public AjaxResult getUserCardList(@RequestBody UserMembershipCard userMembershipCard) {
|
|
|
- return AjaxResult.success(userMembershipCardService.selectUserMembershipCardList(userMembershipCard));
|
|
|
+ public AjaxResult selectOrderList(@RequestBody VipCardLog vipCardLog) {
|
|
|
+ return AjaxResult.success(vipCardLogService.selectVipCardLogList(vipCardLog));
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * 退卡
|
|
|
- *
|
|
|
- * @author 韩福成
|
|
|
- * @date 2025/1/7 上午10:46
|
|
|
- */
|
|
|
- @PostMapping("/refundCard")
|
|
|
- @ResponseBody
|
|
|
- public AjaxResult refundCard(@RequestBody UserMembershipCard userMembershipCard) {
|
|
|
- int inserted = userMembershipCardService.refundCard(userMembershipCard);
|
|
|
- if (inserted == -1) {
|
|
|
- return AjaxResult.error("退款金额小于0,不支持退款!");
|
|
|
- }
|
|
|
- return toAjax(inserted);
|
|
|
- }
|
|
|
+
|
|
|
+//
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 查询卡种信息列表
|
|
|
+// */
|
|
|
+// @PostMapping("/cardInformationlist")
|
|
|
+// @ResponseBody
|
|
|
+// public AjaxResult cardInformationlist(@RequestBody CarInformation carInformation) {
|
|
|
+// return AjaxResult.success(carInformationService.selectCarInformationList(carInformation));
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 查询购卡记录列表
|
|
|
+// */
|
|
|
+// @PostMapping("/getRecordlist")
|
|
|
+// @ResponseBody
|
|
|
+// public AjaxResult list(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
|
|
|
+// List<CardPurchaseRecord> list = cardPurchaseRecordService.selectCardPurchaseRecordList(cardPurchaseRecord);
|
|
|
+// return AjaxResult.success(list);
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 购卡生成订单
|
|
|
+// */
|
|
|
+// @PostMapping("/addCard")
|
|
|
+// @ResponseBody
|
|
|
+// public AjaxResult addCard(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
|
|
|
+// return AjaxResult.success(cardPurchaseRecordService.insertCardPurchaseRecord(cardPurchaseRecord));
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 购卡回调(购卡、取消订单)
|
|
|
+// */
|
|
|
+// @PostMapping("/addCardCallback")
|
|
|
+// @ResponseBody
|
|
|
+// public AjaxResult addCardCallback(@RequestBody CardPurchaseRecord cardPurchaseRecord) {
|
|
|
+// return toAjax(cardPurchaseRecordService.addCardCallback(cardPurchaseRecord));
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 查询用户会员卡列表
|
|
|
+// */
|
|
|
+// @PostMapping("/getUserCardList")
|
|
|
+// @ResponseBody
|
|
|
+// public AjaxResult getUserCardList(@RequestBody UserMembershipCard userMembershipCard) {
|
|
|
+// return AjaxResult.success(userMembershipCardService.selectUserMembershipCardList(userMembershipCard));
|
|
|
+// }
|
|
|
+//
|
|
|
+// /*
|
|
|
+// * 退卡
|
|
|
+// *
|
|
|
+// * @author 韩福成
|
|
|
+// * @date 2025/1/7 上午10:46
|
|
|
+// */
|
|
|
+// @PostMapping("/refundCard")
|
|
|
+// @ResponseBody
|
|
|
+// public AjaxResult refundCard(@RequestBody UserMembershipCard userMembershipCard) {
|
|
|
+// int inserted = userMembershipCardService.refundCard(userMembershipCard);
|
|
|
+// if (inserted == -1) {
|
|
|
+// return AjaxResult.error("退款金额小于0,不支持退款!");
|
|
|
+// }
|
|
|
+// return toAjax(inserted);
|
|
|
+// }
|
|
|
}
|