Sfoglia il codice sorgente

fix 记录余额;文章订单记录

zoujiajian 2 anni fa
parent
commit
6765965569

+ 1 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/Information.java

@@ -20,6 +20,7 @@ public class Information extends BaseEntity{
     /**
      * 副标题
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String subTitle;
 
     @TableField(updateStrategy = FieldStrategy.IGNORED)

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/InformationClickUserRecord.java

@@ -15,4 +15,6 @@ public class InformationClickUserRecord extends BaseEntity{
     private Long goodsId;
 
     private Long infoId;
+
+    private Long orderId;
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -61,6 +61,11 @@ public class OrderDon extends BaseEntity implements Serializable {
     /** 金额 */
     private BigDecimal money;
 
+    /**
+     * 押金
+     */
+    private BigDecimal deposit;
+
     /**
      * 加购商品金额
      */

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSkuSpec.java

@@ -41,5 +41,7 @@ public class ReqGoodsSkuSpec {
          * 原价
          */
         private BigDecimal benefitsPrice;
+
+        private BigDecimal deposit;
     }
 }

+ 4 - 16
netflix-dao/src/main/java/com/cyksj/model/views/HomeManagementFrontView.java

@@ -7,7 +7,6 @@ import com.cyksj.model.entity.HomeManagementConfig;
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Getter;
 import lombok.Setter;
@@ -88,19 +87,15 @@ public class HomeManagementFrontView {
 	@DbField("g.img")
 	private String goodsImg;
 
+	@DbField("g.match_img")
+	private String matchImg;
+
 	/**
 	 * 类型
 	 */
 	@DbField("g.type")
 	private Integer goodsType;
 
-	/**
-	 * 分类
-	 * 1、AI  2、流媒体
-	 */
-	@DbField("g.category")
-	private Long category;
-
 	@DbField("g.second_type")
 	private Integer secondType;
 
@@ -128,15 +123,8 @@ public class HomeManagementFrontView {
 	/**
 	 * 已售
 	 */
-	@DbIgnore
-	private Integer sold;
-
-	/**
-	 * 虚拟销量
-	 */
 	@DbField("g.virtual_sold")
-	@JsonIgnore
-	private Integer virtualSold;
+	private Integer sold;
 
 	@DbIgnore
 	private BigDecimal specificPrice;

+ 45 - 2
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -54,6 +54,7 @@ import com.cyksj.model.dto.*;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.dto.ChannelBaiDuDiscountDto;
 import com.cyksj.model.manage.dto.GiftCardDto;
+import com.cyksj.model.manage.request.ReqGoodsSkuSpec;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.manage.views.OrderDonView;
 import com.cyksj.model.request.*;
@@ -131,6 +132,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final GoodsDonMapper goodsDonMapper;
 
+	private final GoodsDonSpecMapper goodsDonSpecMapper;
+
 	private final GroupsRelationMapper groupsRelationMapper;
 
 	private final BeanSearcher beanSearcher;
@@ -263,6 +266,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final InformationClickUserRecordMapper informationClickUserRecordMapper;
 
+	private final UserCertRecordMapper userCertRecordMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -401,6 +406,23 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			payRequest.setDonMoney(sku.getPrice());
 		}
 
+		//租赁商品
+		if (goodsDon.getType() == 4) {
+			//是否已实名认证过
+			List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
+			Integer count = userCertRecordMapper.selectCount(Wrappers.lambdaQuery(UserCertRecord.class).in(UserCertRecord::getUserId, userIdList));
+			if (count == 0) throw BusinessRuntimeException.getInstance("请您先完成实名认证..");
+
+			//租赁商品押金
+			BigDecimal rentGoodsDonDeposit = getRentGoodsDonDeposit(goodsId, sku.getSpecIds());
+			if (rentGoodsDonDeposit == null) throw BusinessRuntimeException.getInstance("应付押金异常..");
+			BigDecimal sPay = rentGoodsDonDeposit.add(sku.getPrice());
+			if (payRequest.getDonMoney().compareTo(sPay) < 0) {
+				payRequest.setDonMoney(sPay);
+			}
+			orderDon.setDeposit(rentGoodsDonDeposit);
+		}
+
 		orderDon.setMoney(payRequest.getDonMoney());
 		orderDon.setRealMoney(payRequest.getDonMoney());
 		orderDon.setOriMoney(sku.getPrice());
@@ -609,7 +631,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		if (payRequest.getInfoId() != null){
 			InformationClickUserRecord informationClickUserRecord = new InformationClickUserRecord();
 			informationClickUserRecord.setInfoId(payRequest.getInfoId());
-			informationClickUserRecord.setInfoId(orderDon.getId());
+			informationClickUserRecord.setOrderId(orderDon.getId());
 			informationClickUserRecordMapper.insert(informationClickUserRecord);
 		}
 		return orderDon;
@@ -2786,7 +2808,28 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			Integer success = userMapper.deductBalance(user.getId(), subBalance, userBalance);
 			if (success != 1) throw BusinessRuntimeException.getInstance("您的余额不足!");
 			orderDon.setBalance(subBalance);
-			userBenefitsService.recordBalanceBySource(user.getId(), BigDecimal.valueOf(-subBalance.longValue()), UserBalanceSourceRecord.Source.payment);
 		}
 	}
+
+	/**
+	 * 获取租赁商品的应付押金
+	 */
+	private BigDecimal getRentGoodsDonDeposit(Long goodsId, String specIdsStr) throws Exception {
+		GoodsDonSpec rentGoodsDonSpec = goodsDonSpecMapper.selectOne(Wrappers.lambdaQuery(GoodsDonSpec.class)
+				.eq(GoodsDonSpec::getGoodsId, goodsId)
+				.last("limit 1"));
+		List<Integer> specIds = Jsons.parseList(specIdsStr, Integer.class);
+		String specsJson = rentGoodsDonSpec.getSpecsJson();
+		List<ReqGoodsSkuSpec> reqGoodsSkuSpec = Jsons.parseList(specsJson, ReqGoodsSkuSpec.class);
+		for (ReqGoodsSkuSpec spec : reqGoodsSkuSpec) {
+			if (spec.getKey().contains("版本")) {
+				for (ReqGoodsSkuSpec.Node value : spec.getValues()) {
+					if (specIds.contains(value.getId())) {
+						return value.getDeposit();
+					}
+				}
+			}
+		}
+		return null;
+	}
 }

+ 0 - 3
netflix-service/src/main/java/com/cyksj/service/user/impl/UserIdentCertServiceImpl.java

@@ -16,7 +16,6 @@ import com.cyksj.model.entity.UserCertRecord;
 import com.cyksj.model.request.UserIndentCertReq;
 import com.cyksj.model.response.WxCertAuthTokenResp;
 import com.cyksj.redis.RedisService;
-import com.cyksj.service.market.task.BindTaskService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.user.UserIdentCertService;
 import com.tencentcloudapi.common.Credential;
@@ -44,8 +43,6 @@ public class UserIdentCertServiceImpl implements UserIdentCertService {
 
 	private final UserCertRecordMapper userCertRecordMapper;
 
-	private final BindTaskService bindTaskService;
-
 	private final UserMapper userMapper;
 
 	private final RedisService redisService;

+ 24 - 0
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -1050,6 +1050,30 @@ public class GoodsDonController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(equipmentActivityReduce);
 	}
 
+	/**
+	 * 获取租赁商品列表
+	 */
+	@GetMapping("/get/deposit")
+	public Result<? extends Object> getDepositGoods() {
+		String depositGoodsKey = RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "deposit";
+		Object o = redisService.get(depositGoodsKey);
+		if (o == null) {
+			List<GoodsDon> depositList = beanSearcher.searchAll(GoodsDon.class, MapUtils.builder()
+					.field(GoodsDon::getType, 4)
+					.field(GoodsDon::getStatus, true)
+					.field(GoodsDon::getDeleted, true)
+					.onlySelect(GoodsDon::getId, GoodsDon::getTitle, GoodsDon::getLogo)
+					.build());
+			if (CollUtil.isEmpty(depositList)) {
+				return GatewayResponse.SUCCESS.newBuilder().toResult();
+			}
+			redisService.setNx(depositGoodsKey, depositList, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout() + 60 * RandomUtil.randomInt(10));
+			o = redisService.get(depositGoodsKey);
+		}
+		List<GoodsDon> depositList = Jsons.parseList(o, GoodsDon.class);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(depositList);
+	}
+
 	/**
 	 * 获取pc广告配置
 	 */