|
@@ -1,9 +1,10 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
|
-import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
|
|
|
+import com.ym.mec.biz.dal.dto.Cloud2022ActivityDto;
|
|
|
import com.ym.mec.biz.dal.dto.MemberPayParamDto;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.dal.enums.*;
|
|
@@ -28,7 +29,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Isolation;
|
|
|
-import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
@@ -82,6 +82,8 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
private ActivityUserMapperDao activityUserMapperDao;
|
|
|
@Autowired
|
|
|
private MemberFeeSettingService memberFeeSettingService;
|
|
|
+ @Autowired
|
|
|
+ private TeacherDao teacherDao;
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
|
|
@@ -163,8 +165,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
if (student == null) {
|
|
|
throw new BizException("非法访问");
|
|
|
}
|
|
|
- SysUser user = sysUserFeignService.queryUserById(userId);
|
|
|
-
|
|
|
+ SysUser user = teacherDao.getUser(userId);
|
|
|
Integer organId = user.getOrganId();
|
|
|
if (organId == null) {
|
|
|
throw new BizException("学生没有分部编号");
|
|
@@ -174,9 +175,12 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
String[] checkCoupon = CouponDetailTypeEnum.getAllowType(MEMBER);
|
|
|
//校验优惠券
|
|
|
StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(memberPayParamDto.getCouponIdList(), actualAmount, true, checkCoupon);
|
|
|
+ studentPaymentOrder.setUserId(userId);
|
|
|
+ studentPaymentOrder.setOrganId(organId);
|
|
|
studentPaymentOrder.setMusicGroupId(paymentId.toString());
|
|
|
studentPaymentOrder.setMemo(cloudCoachPaymentProgram.getRemark());
|
|
|
- Map<String, Object> result = getMap(memberPayParamDto.getAmount(), memberPayParamDto.getUseBalancePayment(), userId, organId, studentPaymentOrder);
|
|
|
+ studentPaymentOrder.setGroupType(GroupType.MEMBER);
|
|
|
+ Map<String, Object> result = getMap(memberPayParamDto.getAmount(), memberPayParamDto.getUseBalancePayment(),studentPaymentOrder);
|
|
|
return BaseController.succeed(result);
|
|
|
}
|
|
|
|
|
@@ -201,8 +205,11 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
String[] checkCoupon = CouponDetailTypeEnum.getAllowType(MEMBER);
|
|
|
//校验优惠券
|
|
|
StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(memberPayParamDto.getCouponIdList(), actualAmount, true, checkCoupon);
|
|
|
+ studentPaymentOrder.setUserId(sysUser.getId());
|
|
|
+ studentPaymentOrder.setOrganId(sysUser.getOrganId());
|
|
|
studentPaymentOrder.setMemo("学员团练宝购买");
|
|
|
- Map<String, Object> result = getMap(memberPayParamDto.getAmount(), memberPayParamDto.getUseBalancePayment(), sysUser.getId(), sysUser.getOrganId(), studentPaymentOrder);
|
|
|
+ studentPaymentOrder.setGroupType(GroupType.MEMBER);
|
|
|
+ Map<String, Object> result = getMap(memberPayParamDto.getAmount(), memberPayParamDto.getUseBalancePayment(),studentPaymentOrder);
|
|
|
//生产团练宝订单
|
|
|
CloudTeacherOrder cloudTeacherOrder = new CloudTeacherOrder();
|
|
|
cloudTeacherOrder.setOrderId(studentPaymentOrder.getId());
|
|
@@ -217,6 +224,46 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
return BaseController.succeed(result);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
|
|
|
+ public HttpResponseResult activeBuy(MemberPayParamDto memberPayParamDto) throws Exception {
|
|
|
+ SysUser sysUser = Optional.of(sysUserFeignService.queryUserInfo()).orElseThrow(()-> new BizException("请登录"));
|
|
|
+ String activeConfig = sysConfigDao.findConfigValue("cloud_teacher_active_config");
|
|
|
+ List<Cloud2022ActivityDto> cloud2022ActivityDtos = JSONArray.parseArray(activeConfig, Cloud2022ActivityDto.class);
|
|
|
+ Cloud2022ActivityDto activityDto = cloud2022ActivityDtos.stream().filter(e -> e.getOrganId().contains(sysUser.getOrganId().toString())).findFirst().get();
|
|
|
+ if(Objects.isNull(activityDto)){
|
|
|
+ throw new BizException("当前分部暂未开通活动");
|
|
|
+ }
|
|
|
+ //是否还有购买资格
|
|
|
+ Integer activityId = Integer.parseInt(activityDto.getActivityId());
|
|
|
+ VipGroupActivity vipGroupActivity = Optional.of(vipGroupActivityDao.get(activityId)).orElseThrow(()-> new BizException("活动不存在"));
|
|
|
+ if(vipGroupActivity.getStudentMaxUsedTimes() != -1){
|
|
|
+ //获取活动购买次数
|
|
|
+ int activityBuyNum = activityUserMapperDao.countActivityBuyNum(vipGroupActivity.getId(),sysUser.getId());
|
|
|
+ if(activityBuyNum >= vipGroupActivity.getStudentMaxUsedTimes()){
|
|
|
+ throw new BizException("您已达到购买次数上限");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断用户是否已存在订单
|
|
|
+ List<StudentPaymentOrder> memberIngOrders = studentPaymentOrderService.queryByCondition(GroupType.ACTIVITY,null,sysUser.getId(), DealStatusEnum.ING,OrderTypeEnum.MEMBER);
|
|
|
+ if (CollectionUtils.isNotEmpty(memberIngOrders)) {
|
|
|
+ HttpResponseResult result = studentPaymentOrderService.checkRepeatPay(memberIngOrders.get(0), memberPayParamDto.getRepeatPay());
|
|
|
+ if (result.getCode() != 200) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //优惠券使用范围
|
|
|
+ String[] checkCoupon = CouponDetailTypeEnum.getAllowType(MEMBER);
|
|
|
+ //校验优惠券
|
|
|
+ StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(memberPayParamDto.getCouponIdList(), vipGroupActivity.getMarketPrice(), true, checkCoupon);
|
|
|
+ studentPaymentOrder.setUserId(sysUser.getId());
|
|
|
+ studentPaymentOrder.setOrganId(sysUser.getOrganId());
|
|
|
+ studentPaymentOrder.setMemo("小小训练营活动购买");
|
|
|
+ studentPaymentOrder.setGroupType(GroupType.ACTIVITY);
|
|
|
+ Map<String, Object> result = getMap(memberPayParamDto.getAmount(), memberPayParamDto.getUseBalancePayment(),studentPaymentOrder);
|
|
|
+ return BaseController.succeed(result);
|
|
|
+ }
|
|
|
+
|
|
|
public static final String BUY_2_QQHE_LOCK = "BUY_2_QQHE_LOCK:";
|
|
|
|
|
|
@Override
|
|
@@ -286,7 +333,10 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
cache.set(cacheMap, 40, TimeUnit.MINUTES);
|
|
|
//创建订单
|
|
|
studentPaymentOrder.setOrderNo(orderNo);
|
|
|
- Map<String, Object> result = getMap(dto.getAmount(), dto.getUseBalancePayment(), sysUser.getId(), sysUser.getOrganId(), studentPaymentOrder);
|
|
|
+ studentPaymentOrder.setUserId(sysUser.getId());
|
|
|
+ studentPaymentOrder.setOrganId(sysUser.getOrganId());
|
|
|
+ studentPaymentOrder.setGroupType(GroupType.MEMBER);
|
|
|
+ Map<String, Object> result = getMap(dto.getAmount(), dto.getUseBalancePayment(),studentPaymentOrder);
|
|
|
return BaseController.succeed(result);
|
|
|
}
|
|
|
|
|
@@ -377,23 +427,19 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
}
|
|
|
|
|
|
//写入支付数据
|
|
|
- private Map<String, Object> getMap(BigDecimal amount, Boolean UseBalance, Integer userId, Integer organId, StudentPaymentOrder studentPaymentOrder) throws Exception {
|
|
|
+ private Map<String, Object> getMap(BigDecimal amount, Boolean UseBalance,StudentPaymentOrder studentPaymentOrder) throws Exception {
|
|
|
Date date = new Date();
|
|
|
BigDecimal actualAmount = studentPaymentOrder.getActualAmount();
|
|
|
- studentPaymentOrder.setUserId(userId);
|
|
|
- studentPaymentOrder.setOrganId(organId);
|
|
|
- studentPaymentOrder.setRoutingOrganId(organId);
|
|
|
+ studentPaymentOrder.setRoutingOrganId(studentPaymentOrder.getOrganId());
|
|
|
studentPaymentOrder.setCreateTime(date);
|
|
|
studentPaymentOrder.setUpdateTime(date);
|
|
|
studentPaymentOrder.setBalancePaymentAmount(BigDecimal.ZERO);
|
|
|
studentPaymentOrder.setStatus(DealStatusEnum.ING);
|
|
|
studentPaymentOrder.setVersion(0);
|
|
|
studentPaymentOrder.setType(OrderTypeEnum.MEMBER);
|
|
|
- studentPaymentOrder.setGroupType(GroupType.MEMBER);
|
|
|
studentPaymentOrder.setRemitFee(BigDecimal.ZERO);
|
|
|
studentPaymentOrder.setCourseRemitFee(BigDecimal.ZERO);
|
|
|
studentPaymentOrder.setPaymentChannel("BALANCE");
|
|
|
- studentPaymentOrder.setMemo(OrderTypeEnum.MEMBER.getMsg());
|
|
|
// 判断金额是否正确
|
|
|
if (actualAmount.compareTo(amount) != 0) {
|
|
|
throw new BizException("非法请求");
|
|
@@ -437,7 +483,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
public boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
|
|
|
//查询原定的是否已处理
|
|
|
StudentPaymentOrder orignStudentPaymentOrder = studentPaymentOrderService.lockOrder(studentPaymentOrder.getId());
|
|
@@ -448,15 +494,6 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
return false;
|
|
|
}
|
|
|
Integer userId = studentPaymentOrder.getUserId();
|
|
|
- Student student = studentService.get(userId);
|
|
|
- if (student == null) {
|
|
|
- throw new BizException("学员信息不存在");
|
|
|
- }
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserById(userId);
|
|
|
- if (sysUser == null) {
|
|
|
- throw new BizException("学员信息不存在");
|
|
|
- }
|
|
|
-
|
|
|
Date nowDate = new Date();
|
|
|
// 更新订单信息
|
|
|
studentPaymentOrder.setUpdateTime(nowDate);
|
|
@@ -467,6 +504,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
studentPaymentOrderService.returnBalanceAndCoupon(studentPaymentOrder, "购买会员支付失败");
|
|
|
return true;
|
|
|
}
|
|
|
+ SysUser sysUser = teacherDao.getUser(userId);
|
|
|
|
|
|
// 支付成功
|
|
|
if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
|
|
@@ -479,11 +517,11 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
cloudTeacherOrder.setLevel(1);
|
|
|
cloudTeacherOrder.setStatus(1);
|
|
|
cloudTeacherOrder.setType(activity.getPeriodEnum());
|
|
|
- if(activity.getGiveCouponNum() == 1 && activity.getPeriodEnum() == PeriodEnum.MONTH){
|
|
|
- cloudTeacherOrder.setTime(studentPaymentOrder.getActivityBuyNum() * 2);
|
|
|
- }else {
|
|
|
+// if(activity.getGiveCouponNum() == 1 && activity.getPeriodEnum() == PeriodEnum.MONTH){
|
|
|
+// cloudTeacherOrder.setTime(studentPaymentOrder.getActivityBuyNum() * 2);
|
|
|
+// }else {
|
|
|
cloudTeacherOrder.setTime(studentPaymentOrder.getActivityBuyNum());
|
|
|
- }
|
|
|
+// }
|
|
|
cloudTeacherOrder.setStudentId(studentPaymentOrder.getUserId());
|
|
|
cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
|
|
|
cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
|
|
@@ -493,16 +531,16 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
activityUserMapper.setUserId(studentPaymentOrder.getUserId());
|
|
|
activityUserMapper.setActivityId(activity.getId());
|
|
|
activityUserMapper.setActualPrice(studentPaymentOrder.getExpectAmount());
|
|
|
- activityUserMapper.setGiveCouponId(activity.getGiveCouponId());
|
|
|
+ activityUserMapper.setGivePracticeFlag(1);
|
|
|
activityUserMapper.setReturnFee(false);
|
|
|
activityUserMapperDao.insert(activityUserMapper);
|
|
|
//赠送优惠券
|
|
|
- Integer giveCouponId = activity.getGiveCouponId();
|
|
|
- Integer giveCouponNum = activity.getGiveCouponNum();
|
|
|
- if(Objects.nonNull(giveCouponId) && Objects.nonNull(giveCouponNum)){
|
|
|
- sysCouponCodeService.exchangeCoupon(userId,giveCouponId,
|
|
|
- studentPaymentOrder.getId(),giveCouponNum,2,null);
|
|
|
- }
|
|
|
+// Integer giveCouponId = activity.getGiveCouponId();
|
|
|
+// Integer giveCouponNum = activity.getGiveCouponNum();
|
|
|
+// if(Objects.nonNull(giveCouponId) && Objects.nonNull(giveCouponNum)){
|
|
|
+// sysCouponCodeService.exchangeCoupon(userId,giveCouponId,
|
|
|
+// studentPaymentOrder.getId(),giveCouponNum,2,null);
|
|
|
+// }
|
|
|
}else {
|
|
|
//齐齐哈尔购买成功默认激活
|
|
|
// 活动时间:
|
|
@@ -519,6 +557,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
|
|
|
//分部编号59 并且下单时间大于等于activityDateStr todo 并且redis能查询到的就算齐齐哈尔活动购买的
|
|
|
if (sysUser.getOrganId() == 59 && studentPaymentOrder.getCreateTime().after(activityDate) && cache.isExists()) {
|
|
|
//齐齐哈尔会员活动
|
|
|
+ Student student = studentService.get(userId);
|
|
|
qqheMemberActivity(studentPaymentOrder, student, sysUser, cache);
|
|
|
//删除标记
|
|
|
cache.delete();
|