VEAR 2 лет назад
Родитель
Сommit
3414724ffb

+ 23 - 9
src/main/java/org/springblade/modules/api/controller/AliPay01Controller.java

@@ -36,6 +36,7 @@ import org.springblade.modules.finance.service.IOrderGrantService;
 import org.springblade.modules.finance.service.IOrderService;
 import org.springblade.modules.shopping.entity.Consign;
 import org.springblade.modules.shopping.service.IConsignService;
+import org.springblade.modules.shopping.wrapper.ConsignWrapper;
 import org.springblade.modules.system.entity.User;
 import org.springblade.modules.system.entity.UserApp;
 import org.springblade.modules.system.service.IUserService;
@@ -204,6 +205,20 @@ public class AliPay01Controller {
 		return R.fail("发起支付失败!");
 	}
 
+	/**
+	 * 发起支付宝预授权
+	 *
+	 * 1、判断用户是否能抢购
+	 * 2、查询是否有寄售/进货单
+	 * 3、发起支付宝预支付
+	 * 4、请求成功 创建预支付订单 默认为未授权
+	 * @param userId 用户id
+	 * @param batNo 批次ID
+	 * @param price 金额
+	 * @param num 预授数量
+	 * @return R
+	 * @throws AlipayApiException
+	 */
 	@ApiLog("发起支付宝预授权")
 	@PostMapping("/pay_003")
 	@ApiOperation(value = "线上资金授权冻结接口-调用支付宝预授权", notes = "支付请求")
@@ -214,10 +229,12 @@ public class AliPay01Controller {
 							@ApiParam(value = "数量", required = true) @RequestParam Integer num) throws AlipayApiException {
 		UserApp userApp = new UserApp();
 		UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId,userId));
+		if (Objects.isNull(query)){
+			return R.fail("该用户不存在!");
+		}
 		if (query.getEnableAuth() != 2){
 			double k = (double)query.getCreditScore() / 100;
 			int scoreCount = NumberUtil.roundDown(k, 2).intValue();
-			log.info("用户【"+ query.getUserId() +"】的积分【" + query.getCreditScore() +  "】可抢次数: " + scoreCount);
 			int consignCount = Integer.parseInt(ParamCache.getValue(CommonConstant.DEFAULT_CONDIGN_COUNT));
 			if (scoreCount > consignCount){
 				scoreCount = consignCount;
@@ -226,23 +243,22 @@ public class AliPay01Controller {
 				return R.fail("预授数量不能大于单场可抢次数!");
 			}
 		}
-		if(query.getState() != 1){
+		if(query.getState() != 1 ){
 			return R.fail("该账号已冻结!");
 		}
 		Consign consign = consignService.queryConsign(batNo, userId);
-		if (consign == null){
+		if (Objects.isNull(consign)){
 			return R.fail("亲,好物已抢完欢迎再来!");
 		}
 		//判断用户是否在该场次下有预授权
 		OrderGrant orderGrant = orderGrantService.getOne(Wrappers.<OrderGrant>lambdaQuery()
-			.eq(OrderGrant::getBatNo,batNo)
-			.eq(OrderGrant::getUserId,userId)
+			.eq(OrderGrant::getBatNo, batNo)
+			.eq(OrderGrant::getUserId, userId)
 			.eq(OrderGrant::getStatus,1)
 		);
-		if (orderGrant != null){
+		if (Objects.isNull(orderGrant)){
 			return R.fail("您已发起预授权,无需再次发起!");
 		}
-		//1.通过批次号和用户id查询是有在预授权的数据
 		JSONObject data = new JSONObject();
 		String orderNo = CommonUtil.genTimeID();
 		data.put("out_order_no", orderNo);
@@ -260,7 +276,6 @@ public class AliPay01Controller {
 		//必须使用 sdkExecute
 		AlipayFundAuthOrderAppFreezeResponse response = client.sdkExecute(request);
 		if(response.isSuccess()){
-			//查询数据如果已经预授权的
 			String dataDate = DateUtil.format(DateUtil.now(), DateUtil.PATTERN_DATE);
 			OrderGrant grant = new OrderGrant();
 			grant.setBatNo(batNo);
@@ -275,7 +290,6 @@ public class AliPay01Controller {
 			orderGrantService.save(grant);
 			return R.data(response.getBody());
 		}
-		//return R.data(400,null,"授权失败");
 		return R.fail("授权失败!");
 	}
 

+ 2 - 1
src/main/java/org/springblade/modules/api/controller/Api03Controller.java

@@ -63,6 +63,7 @@ import org.springframework.web.bind.annotation.RestController;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 控制器
@@ -125,7 +126,7 @@ public class Api03Controller extends BladeController {
 	public R<ConsignVO> detail(@ApiParam(value = "抢购主键", required = true) @RequestParam String consignId,
 							   @ApiParam(value = "用户ID", required = true) @RequestParam Long userId) {
 		Consign detail = consignService.getById(consignId);
-		if (detail == null){
+		if (Objects.isNull(detail)){
 			return R.fail("无商品数据!");
 		}
 		ConsignVO consignVO = ConsignWrapper.build().entityVO(detail);

+ 1 - 1
src/main/java/org/springblade/modules/api/service/impl/TradeServiceImpl.java

@@ -182,8 +182,8 @@ public class TradeServiceImpl implements ITradeService {
 	@Override
 	public void orderGrant(List<OrderGrant> list) {
 		for (OrderGrant orderGrant: list) {
+			OrderGrant param = new OrderGrant();
 			try {
-				OrderGrant param = new OrderGrant();
 				param.setId(orderGrant.getId());
 				String authNo = orderGrant.getAuthNo();
 				logger.info("解冻资金:", authNo);

+ 10 - 15
src/main/java/org/springblade/modules/api/task/ConsignSchedulingTask.java

@@ -96,7 +96,6 @@ public class ConsignSchedulingTask implements SchedulingConfigurer {
 			.lt(ConsignConfig::getEndTime, DateUtil.now())
 				.eq(ConsignConfig::getIsEnabled, 2)
 			.orderByDesc(ConsignConfig::getEndTime).last(" limit 1"));
-		log.info(TASK_NAME + "获取场次数据: " + consignConfig);
 		if (consignConfig != null){
 			ConsignConfig config = new ConsignConfig();
 			//场次开始时间和结束时间都加上增益时间
@@ -106,22 +105,19 @@ public class ConsignSchedulingTask implements SchedulingConfigurer {
 			String ymd = DateUtil.format(DateUtil.date(), PATTERN_DATE);
 			String startTime = ymd + StringPool.SPACE + startDate;
 			String endTime = ymd + StringPool.SPACE + endDate;
-			log.info(TASK_NAME + "获取场次数据开始时间 : " + startTime);
-			log.info(TASK_NAME + "获取场次数据结束时间: " + endTime);
 			//设置增益时间偏移量
 			Date start = DateUtil.offsetMinute(DateUtil.parse(startTime,PATTERN_DATETIME),gainTime);
 			Date end = DateUtil.offsetMinute(DateUtil.parse(endTime,PATTERN_DATETIME),gainTime);
-			log.info(TASK_NAME + "获取场次偏移开始时间: " + start);
-			log.info(TASK_NAME + "获取场次偏移结束时间: " + end);
 			//更新数据
 			config.setStartTime(start);
 			config.setEndTime(end);
 			config.setTitle(consignConfig.getTitle());
 			config.setIsEnabled(consignConfig.getIsEnabled());
-			log.info(TASK_NAME + "获取场次数据: " + consignConfig);
-			consignConfigService.removeById(consignConfig.getId());
+			//更新当前场次变为停用
+			consignConfig.setIsEnabled(1);
+			consignConfigService.updateById(consignConfig);
+			//新增场次
 			String configNo = CommonUtil.genTimeID();
-			log.info(TASK_NAME + "configNo: " + configNo);
 			config.setConfigNo(configNo);
 			consignConfigService.save(config);
 			//更新进货表数据
@@ -182,10 +178,9 @@ public class ConsignSchedulingTask implements SchedulingConfigurer {
 				.eq(Consign::getConsignState, 1) //寄售中才变动
 				.eq(Consign::getConsignPrice, consign.getConsignPrice()));
 		}
-		List<Long> ids = new ArrayList<>();
 		List<Consign> batchList = new ArrayList<>();
-		//把原数据逻辑删除, 新增数据
-		for (Consign consin: list ) {
+		for (Consign item: list ) {
+			//使用第一条数据更新场次的所有寄售价
 			Consign consign = list.get(0);
 			Consign sign = new Consign();
 			BeanUtil.copyProperties(consign,sign);
@@ -200,12 +195,12 @@ public class ConsignSchedulingTask implements SchedulingConfigurer {
 			sign.setPremiumPrice(consignPrice);
 			sign.setCreateTime(DateUtil.date());
 			sign.setConsignConfigId(configNowId);
-			ids.add(consin.getId());
+			item.setConsignState(3);//把来源为后台的原数据更新为已完成
 			batchList.add(sign);
 		}
-		boolean removeFlg = consignService.removeByIds(ids);
-		if (!removeFlg){
-			log.info("定时任务删除失败: " + LocalDateTime.now());
+		boolean updateFlg = consignService.updateBatchById(list);
+		if (!updateFlg){
+			log.info("定时任务更新失败: " + LocalDateTime.now());
 		}
 		boolean saveBatchFlg = consignService.saveBatch(batchList);
 		if (!saveBatchFlg){