|
@@ -16,13 +16,14 @@ import com.iamberry.wechat.face.integral.IntegralProductService;
|
|
import com.iamberry.wechat.face.member.MemberService;
|
|
import com.iamberry.wechat.face.member.MemberService;
|
|
import com.iamberry.wechat.service.mapper.*;
|
|
import com.iamberry.wechat.service.mapper.*;
|
|
import com.iamberry.wechat.tools.OrderNOUtil;
|
|
import com.iamberry.wechat.tools.OrderNOUtil;
|
|
|
|
+import com.iamberry.wechat.tools.StrUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
import util.PageUtil;
|
|
import util.PageUtil;
|
|
|
|
|
|
-import java.beans.Transient;
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -65,7 +66,7 @@ public class IntegralOrderServiceImpl implements IntegralOrderService {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- @Transient
|
|
|
|
|
|
+ @Transactional
|
|
public synchronized Map<String, Object> addOrder(String openId, List<IntegralCart> integralCartList) {
|
|
public synchronized Map<String, Object> addOrder(String openId, List<IntegralCart> integralCartList) {
|
|
/**
|
|
/**
|
|
* 查询商品是否有库存
|
|
* 查询商品是否有库存
|
|
@@ -81,11 +82,11 @@ public class IntegralOrderServiceImpl implements IntegralOrderService {
|
|
Member member = memberMapper.getMemberByUserOpenId(openId);
|
|
Member member = memberMapper.getMemberByUserOpenId(openId);
|
|
|
|
|
|
/*获取用户当前等级*/
|
|
/*获取用户当前等级*/
|
|
- memberService.
|
|
|
|
|
|
+ Integer rankRuleId = memberService.getUserGrad(member.getUserId());
|
|
|
|
|
|
/*创建订单*/
|
|
/*创建订单*/
|
|
IntegralOrder IntegralOrder = new IntegralOrder();
|
|
IntegralOrder IntegralOrder = new IntegralOrder();
|
|
- IntegralOrder.setIntegralOrderOpenId(member.getUserOpenid());
|
|
|
|
|
|
+ IntegralOrder.setIntegralOrderOpenId(member.getUserOpenid());
|
|
IntegralOrder.setIntegralOrderId(OrderNOUtil.createOrderCode(member.getUserId()));
|
|
IntegralOrder.setIntegralOrderId(OrderNOUtil.createOrderCode(member.getUserId()));
|
|
IntegralOrder.setIntegralOrderUserRemark(""); //用户备注
|
|
IntegralOrder.setIntegralOrderUserRemark(""); //用户备注
|
|
|
|
|
|
@@ -103,20 +104,37 @@ public class IntegralOrderServiceImpl implements IntegralOrderService {
|
|
if(integralProduct == null ){
|
|
if(integralProduct == null ){
|
|
throw new RuntimeException("商品不存在,请重新添加");
|
|
throw new RuntimeException("商品不存在,请重新添加");
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ boolean isRank = false;
|
|
IntegralProductGrade integralProductGrade = new IntegralProductGrade();
|
|
IntegralProductGrade integralProductGrade = new IntegralProductGrade();
|
|
integralProductGrade.setIntegralProductId(integralProduct.getIntegralProductId());
|
|
integralProductGrade.setIntegralProductId(integralProduct.getIntegralProductId());
|
|
List<IntegralProductGrade> integralProductGradeList = integralProductGradeMapper.getIntegralProductGradeList(integralProductGrade);
|
|
List<IntegralProductGrade> integralProductGradeList = integralProductGradeMapper.getIntegralProductGradeList(integralProductGrade);
|
|
- for (integralProductGradeList:) {
|
|
|
|
-
|
|
|
|
|
|
+ if(integralProductGradeList != null && integralProductGradeList.size() >0){
|
|
|
|
+ for (IntegralProductGrade ipg:integralProductGradeList) {
|
|
|
|
+ if(rankRuleId == ipg.getRankId()){
|
|
|
|
+ isRank = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ isRank = true;
|
|
|
|
+ }
|
|
|
|
+ if(!isRank){
|
|
|
|
+ throw new RuntimeException("对不起你的等级无法购买"+integralProduct.getIntegralProductName());
|
|
}
|
|
}
|
|
|
|
|
|
//商品总数量 - 商品已兑换数量
|
|
//商品总数量 - 商品已兑换数量
|
|
|
|
+ if(integralProduct.getIntegralProductNum() == null || integralProduct.getIntegralProductRemainingNum() == null){
|
|
|
|
+ throw new RuntimeException("数量不足");
|
|
|
|
+ }
|
|
if(integralProduct.getIntegralProductNum() - integralProduct.getIntegralProductRemainingNum() < 0){
|
|
if(integralProduct.getIntegralProductNum() - integralProduct.getIntegralProductRemainingNum() < 0){
|
|
- throw new RuntimeException(integralProduct.getIntegralProductName() + "商品数量为空");
|
|
|
|
|
|
+ throw new RuntimeException(integralProduct.getIntegralProductName() + "商品已售空");
|
|
}
|
|
}
|
|
|
|
|
|
/*获取商品兑换信息*/
|
|
/*获取商品兑换信息*/
|
|
IntegralProductConvert ipc = integralProductConvertMapper.getIntegralProductConvertByProductId(integralProduct.getIntegralProductId());
|
|
IntegralProductConvert ipc = integralProductConvertMapper.getIntegralProductConvertByProductId(integralProduct.getIntegralProductId());
|
|
|
|
+ if(ipc == null ){
|
|
|
|
+ throw new RuntimeException("该商品不能兑换");
|
|
|
|
+ }
|
|
if(ipc.getConvertIsPay() == 1){ //需要支付, //1:需要支付 2:不需要支付
|
|
if(ipc.getConvertIsPay() == 1){ //需要支付, //1:需要支付 2:不需要支付
|
|
/*此处写支付*/
|
|
/*此处写支付*/
|
|
Integer monTol = ipc.getConvertPrice() * integralCart.getNum();
|
|
Integer monTol = ipc.getConvertPrice() * integralCart.getNum();
|
|
@@ -151,12 +169,14 @@ public class IntegralOrderServiceImpl implements IntegralOrderService {
|
|
IntegralProduct ip = new IntegralProduct();
|
|
IntegralProduct ip = new IntegralProduct();
|
|
ip.setIntegralProductId(integralProduct.getIntegralProductId());
|
|
ip.setIntegralProductId(integralProduct.getIntegralProductId());
|
|
ip.setIntegralProductRemainingNum(integralProduct.getIntegralProductRemainingNum()+integralCart.getNum());
|
|
ip.setIntegralProductRemainingNum(integralProduct.getIntegralProductRemainingNum()+integralCart.getNum());
|
|
- flag = integralProductMapper.update(ip);
|
|
|
|
|
|
+ try{
|
|
|
|
+ flag = integralProductMapper.update(ip);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ throw new RuntimeException("商品减去库存失败");
|
|
|
|
+ }
|
|
if(flag < 1){
|
|
if(flag < 1){
|
|
throw new RuntimeException("商品减去库存失败");
|
|
throw new RuntimeException("商品减去库存失败");
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if(member.getUserSurplusIntegral() < dfbiTotal){ //剩余积分-朵粉币 < 所需朵粉币数量
|
|
if(member.getUserSurplusIntegral() < dfbiTotal){ //剩余积分-朵粉币 < 所需朵粉币数量
|
|
@@ -173,19 +193,6 @@ public class IntegralOrderServiceImpl implements IntegralOrderService {
|
|
IntegralOrder.setIntegralOrderStatus(2); //直接用朵粉币兑换,状态直接为已兑换
|
|
IntegralOrder.setIntegralOrderStatus(2); //直接用朵粉币兑换,状态直接为已兑换
|
|
}
|
|
}
|
|
IntegralOrder.setIntegralOrderDfbi(dfbiTotal);
|
|
IntegralOrder.setIntegralOrderDfbi(dfbiTotal);
|
|
- flag = integralOrderMapper.save(IntegralOrder); //添加订单
|
|
|
|
- if(flag < 1){
|
|
|
|
- throw new RuntimeException("添加订单失败");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- for (IntegralItem ii: integralItemList) {
|
|
|
|
- ii.setIntegralItemOrderId(IntegralOrder.getIntegralOrderId());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- flag = integralItemMapper.saveList(integralItemList);
|
|
|
|
- if(flag < 1){
|
|
|
|
- throw new RuntimeException("添加订单项失败");
|
|
|
|
- }
|
|
|
|
|
|
|
|
/*判断是否用积分兑换,支付为0,直接操作*/
|
|
/*判断是否用积分兑换,支付为0,直接操作*/
|
|
if(isPay != 1 || monTotal == 0){
|
|
if(isPay != 1 || monTotal == 0){
|
|
@@ -194,10 +201,13 @@ public class IntegralOrderServiceImpl implements IntegralOrderService {
|
|
Integer couponTypeId = ii.getIntegralItemCouponId();
|
|
Integer couponTypeId = ii.getIntegralItemCouponId();
|
|
CouponType couponType = couponTypeMapper.getCouponTypeById(couponTypeId);
|
|
CouponType couponType = couponTypeMapper.getCouponTypeById(couponTypeId);
|
|
CouponItem couponItem = new CouponItem();
|
|
CouponItem couponItem = new CouponItem();
|
|
|
|
+ String uuidStr = StrUtils.getUUID();
|
|
|
|
+ couponItem.setCouponItemId(uuidStr);
|
|
|
|
+ ii.setIntegralItemCouponItemId(uuidStr);
|
|
couponItem.setCouponId(couponTypeId);
|
|
couponItem.setCouponId(couponTypeId);
|
|
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
Calendar calendar = Calendar.getInstance();
|
|
- calendar.add(Calendar.DATE,couponType.getCouponGetDays()); //领取后有效天数
|
|
|
|
|
|
+ calendar.add(Calendar.DATE,couponType.getCouponGetDays()); //领取后有效天数
|
|
|
|
|
|
couponItem.setCouponUseEndDate(calendar.getTime());
|
|
couponItem.setCouponUseEndDate(calendar.getTime());
|
|
couponItem.setCouponReceiveDate(new Date());
|
|
couponItem.setCouponReceiveDate(new Date());
|
|
@@ -221,6 +231,21 @@ public class IntegralOrderServiceImpl implements IntegralOrderService {
|
|
ii.setIntegralItemOrderId(IntegralOrder.getIntegralOrderId());
|
|
ii.setIntegralItemOrderId(IntegralOrder.getIntegralOrderId());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ flag = integralOrderMapper.save(IntegralOrder); //添加订单
|
|
|
|
+ if(flag < 1){
|
|
|
|
+ throw new RuntimeException("添加订单失败");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (IntegralItem ii: integralItemList) {
|
|
|
|
+ ii.setIntegralItemOrderId(IntegralOrder.getIntegralOrderId());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ flag = integralItemMapper.saveList(integralItemList);
|
|
|
|
+ if(flag < 1){
|
|
|
|
+ throw new RuntimeException("添加订单项失败");
|
|
|
|
+ }
|
|
|
|
+
|
|
//变动前可用积分总额
|
|
//变动前可用积分总额
|
|
Integer integralBeforeNumber = member.getUserSurplusIntegral();
|
|
Integer integralBeforeNumber = member.getUserSurplusIntegral();
|
|
//变动后可用积分总额
|
|
//变动后可用积分总额
|