|
@@ -25,12 +25,14 @@ import org.springblade.common.constant.CommonConstant;
|
|
|
import org.springblade.common.utils.CommonUtil;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.log.logger.BladeLogger;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.support.Kv;
|
|
|
import org.springblade.core.tool.utils.DateUtil;
|
|
|
import org.springblade.core.tool.utils.StringUtil;
|
|
|
import org.springblade.modules.api.controller.AliPay01Controller;
|
|
|
import org.springblade.modules.api.request.*;
|
|
|
import org.springblade.modules.api.response.ConsignResponse;
|
|
|
+import org.springblade.modules.api.service.IApiService;
|
|
|
import org.springblade.modules.finance.entity.Order;
|
|
|
import org.springblade.modules.finance.entity.OrderConsign;
|
|
|
import org.springblade.modules.finance.entity.OrderGoods;
|
|
@@ -41,6 +43,8 @@ import org.springblade.modules.finance.vo.OrderVO;
|
|
|
import org.springblade.modules.finance.mapper.OrderMapper;
|
|
|
import org.springblade.modules.finance.service.IOrderService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springblade.modules.platform.entity.UserTicket;
|
|
|
+import org.springblade.modules.platform.service.IUserTicketService;
|
|
|
import org.springblade.modules.shopping.entity.*;
|
|
|
import org.springblade.modules.shopping.mapper.*;
|
|
|
import org.springblade.modules.system.entity.User;
|
|
@@ -95,6 +99,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
@Autowired
|
|
|
private IOrderService orderService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IUserTicketService userTicketService;
|
|
|
+
|
|
|
+
|
|
|
private BladeLogger logger;
|
|
|
|
|
|
@Override
|
|
@@ -104,7 +112,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public synchronized String commonOrderInsert(OrderCommonSaveRequest request, String tenantId) {
|
|
|
+ public String commonOrderInsert(OrderCommonSaveRequest request, String tenantId) {
|
|
|
UserApp userApp = new UserApp();
|
|
|
UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId,request.getUserId()));
|
|
|
if (query == null){
|
|
@@ -188,6 +196,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if (i != 1){
|
|
|
throw new ServiceException("操作失败!");
|
|
|
}
|
|
|
+
|
|
|
return outTradeNo;
|
|
|
|
|
|
}
|
|
@@ -436,8 +445,52 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
orderConsign.setConsignPrice(consign.getConsignPrice());
|
|
|
int j = orderConsignMapper.insert(orderConsign);
|
|
|
if(j != 1){
|
|
|
- throw new ServiceException("购买失败!");
|
|
|
+ throw new ServiceException("抢单失败!");
|
|
|
}
|
|
|
+
|
|
|
+ if(user != null){
|
|
|
+ //扣除用户绿色积分 添加明细
|
|
|
+ //寄售金额 * 3% = 绿色积分的
|
|
|
+ Double c = NumberUtil.mul(consign.getConsignPrice(), Double.valueOf(0.03));
|
|
|
+ Double ratioTicket = NumberUtil.roundDown(c , 2).doubleValue();
|
|
|
+ UserApp userApp = new UserApp();
|
|
|
+ UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId,user.getId()));
|
|
|
+ Double ticket = NumberUtil.sub(userApp.getTicket() - c).doubleValue();
|
|
|
+ //用户减去绿色积分(酒票)
|
|
|
+ UserApp param = new UserApp();
|
|
|
+ param.setId(query.getId());
|
|
|
+ param.setTicket(ticket);
|
|
|
+ flg = param.updateById();
|
|
|
+ if (flg){
|
|
|
+ //添加积分明细(酒票) 寄售扣除3%的手续费
|
|
|
+ UserTicket userTicket = new UserTicket();
|
|
|
+ userTicket.setDataSrc(2);//酒票转让
|
|
|
+ userTicket.setServesRatio(0.03);
|
|
|
+ userTicket.setTicket(ratioTicket);
|
|
|
+ userTicket.setUserId(query.getUserId());
|
|
|
+ userTicket.setUserTicket(query.getTicket());
|
|
|
+ userTicket.setTicketType(2);//支出
|
|
|
+ userTicket.setCreateTime(DateUtil.now());
|
|
|
+ userTicket.setDataId(consign.getId()); //寄售ID
|
|
|
+ userTicket.setDataRemarks("进货扣除");
|
|
|
+ userTicket.setLastTicket(ticket); //最后酒票数
|
|
|
+ userTicketService.save(userTicket);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 1 生成订单
|
|
|
+ * 2 调用确认接口----统一收单接口
|
|
|
+ * 3 你收到支付宝的回调----去打款(商户给用户打款.)、
|
|
|
+ * 4 打款完成----去改变 (订单表---单个抢购订单状态--完成--寄售中)
|
|
|
+ * 4.1 去改变( 预授单表) ---1 单----stauts --2
|
|
|
+ * ------------------------5 单--- num --5 -1 4
|
|
|
+ * 5 返回数给前端app ---同时告诉app 用户是需要再次做预授
|
|
|
+ */
|
|
|
+ /*R res = apiService.orderConsign(outTradeNo, request.getOrderNo());
|
|
|
+ if (!res.isSuccess()){
|
|
|
+ throw new ServiceException("抢单失败!");
|
|
|
+ }*/
|
|
|
return outTradeNo;
|
|
|
}
|
|
|
return "";
|
|
@@ -455,6 +508,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
log.info("用户【" + query.getUserId() + "】为普通用户,判断信誉积分数据");
|
|
|
double k = (double)query.getCreditScore() / 100; //可抢次数
|
|
|
int scoreCount = NumberUtil.roundDown(k, 2).intValue();
|
|
|
+ Integer consignCount = Integer.valueOf(ParamCache.getValue(CommonConstant.DEFAULT_CONDIGN_COUNT));
|
|
|
+ //最多只能抢次数
|
|
|
+ if (scoreCount > consignCount){
|
|
|
+ scoreCount = consignCount;
|
|
|
+ }
|
|
|
log.info("用户【" + query.getUserId() + "】为信誉分可抢次数为:" + scoreCount);
|
|
|
int num = scoreCount - count;
|
|
|
if (num <= 0){
|
|
@@ -470,11 +528,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
return response;
|
|
|
}
|
|
|
List<Order> list = orderService.list(Wrappers.<Order>lambdaQuery().in(Order::getGrantNo, orderNo));
|
|
|
+ log.info("用户【" + query.getUserId() + "】授权订单号【" + orderNo +"】已授权的关联的订单数为:" + list.size());
|
|
|
+ log.info("用户【" + query.getUserId() + "】授权订单号【" + orderNo +"】的数量:" + orderGrant.getNum());
|
|
|
//如果剩余次数为大于等于1
|
|
|
// 订单表 -- 预授表 -- 5 --3 --2
|
|
|
- if(list.size() < orderGrant.getNum() && orderGrant.getStatus() == 1){
|
|
|
+ if(list.size() < orderGrant.getNum()){
|
|
|
response.setStatus(2);//已授权
|
|
|
- response.setNum(orderGrant.getNum()); //剩余已授权的次数
|
|
|
+ response.setNum(orderGrant.getNowNum()); //剩余已授权的次数
|
|
|
return response;
|
|
|
}
|
|
|
}
|
|
@@ -513,10 +573,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
ConsignConfig consignConfig = consignConfigMapper.selectById(queryConsign.getConsignConfigId());
|
|
|
//当前时间 + 寄售天数
|
|
|
Date date = cn.hutool.core.date.DateUtil.offsetDay(DateUtil.now(), query.getConsignDays());
|
|
|
- //获取年月日
|
|
|
String ymd = DateUtil.format(date, DateUtil.PATTERN_DATE);
|
|
|
- String startTime = ymd + " " + consignConfig.getStartTime();
|
|
|
- String endTime = ymd + " " + consignConfig.getEndTime();
|
|
|
+ String st = DateUtil.format(consignConfig.getStartTime(), DateUtil.PATTERN_TIME);
|
|
|
+ String et = DateUtil.format(consignConfig.getEndTime(), DateUtil.PATTERN_TIME);
|
|
|
+ String startTime = ymd + " " + st;
|
|
|
+ String endTime = ymd + " " + et;
|
|
|
Date startDate = DateUtil.parse(startTime, DateUtil.PATTERN_DATE);
|
|
|
Date endDate = DateUtil.parse(endTime, DateUtil.PATTERN_DATE);
|
|
|
//更新寄售状态为已售出
|
|
@@ -574,20 +635,34 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
logger.error("订单异常", "订单回调失败!订单号:" + outTradeNo);
|
|
|
throw new ServiceException("订单回调失败!");
|
|
|
}
|
|
|
- //更新用户数据
|
|
|
- UserApp userApp = new UserApp();
|
|
|
- UserApp queryUserApp = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId,queryOrder.getUserId()));
|
|
|
- if (queryUserApp == null){
|
|
|
- logger.error("订单异常", "获取用户信息失败!订单号:" + outTradeNo);
|
|
|
- throw new ServiceException("获取用户信息失败!");
|
|
|
- }
|
|
|
- userApp.setId(queryUserApp.getId());
|
|
|
- Double ticket = NumberUtil.add(queryUserApp.getTicket(), queryOrder.getTotalTicket());
|
|
|
- userApp.setTicket(ticket);
|
|
|
- boolean flg = userApp.updateById();
|
|
|
- if (!flg){
|
|
|
- logger.error("订单异常", "更新用户信息失败!订单号:" + outTradeNo);
|
|
|
- throw new ServiceException("更新用户信息失败!");
|
|
|
+ if (queryOrder.getOrderType() == 1 && queryOrder.getPayFlag() == 1){
|
|
|
+ //更新用户数据
|
|
|
+ UserApp userApp = new UserApp();
|
|
|
+ UserApp queryUserApp = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId,queryOrder.getUserId()));
|
|
|
+ if (queryUserApp == null){
|
|
|
+ logger.error("订单异常", "获取用户信息失败!订单号:" + outTradeNo);
|
|
|
+ throw new ServiceException("获取用户信息失败!");
|
|
|
+ }
|
|
|
+ userApp.setId(queryUserApp.getId());
|
|
|
+ Double ticket = NumberUtil.add(queryUserApp.getTicket(), queryOrder.getTotalTicket());
|
|
|
+ userApp.setTicket(ticket);
|
|
|
+ boolean flg = userApp.updateById();
|
|
|
+ if (!flg){
|
|
|
+ logger.error("订单异常", "更新用户信息失败!订单号:" + outTradeNo);
|
|
|
+ throw new ServiceException("更新用户信息失败!");
|
|
|
+ }
|
|
|
+ UserTicket userTicket = new UserTicket();
|
|
|
+ userTicket.setDataSrc(1);//1.订单
|
|
|
+ userTicket.setServesRatio(0D);
|
|
|
+ userTicket.setTicket(queryOrder.getTotalTicket());
|
|
|
+ userTicket.setUserId(queryUserApp.getUserId());
|
|
|
+ userTicket.setUserTicket(queryUserApp.getTicket());
|
|
|
+ userTicket.setTicketType(1);//收入
|
|
|
+ userTicket.setCreateTime(DateUtil.now());
|
|
|
+ userTicket.setDataId(queryOrder.getId()); //订单号
|
|
|
+ userTicket.setDataRemarks("赠送积分");
|
|
|
+ userTicket.setLastTicket(ticket); //最后酒票数
|
|
|
+ userTicketService.save(userTicket);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
@@ -607,4 +682,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
return i == 1;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|