From a1ae9d712f1d18799c3e4e34995fd037f6c5a22a Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 19 Jul 2023 16:56:32 +0800
Subject: [PATCH] 商城商品修改
---
src/main/java/cc/mrbird/febs/mall/controller/ApiApplyController.java | 1
src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java | 5
src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java | 1
src/main/java/cc/mrbird/febs/mall/mapper/MallRollPerkMapper.java | 7 +
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 279 +++++++++++++++++++++------------------
src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java | 1
src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java | 1
src/main/java/cc/mrbird/febs/pay/util/WechatMenuUtil.java | 4
src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java | 1
src/main/java/cc/mrbird/febs/common/configure/CorsConfig.java | 27 +++
src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java | 1
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java | 12 +
src/main/java/cc/mrbird/febs/common/enumerates/GoodsTypeEnum.java | 47 ++++++
src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsCategoryController.java | 6
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 1
src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java | 1
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 2
src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java | 2
src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java | 1
src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java | 20 ++
20 files changed, 281 insertions(+), 139 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/configure/CorsConfig.java b/src/main/java/cc/mrbird/febs/common/configure/CorsConfig.java
new file mode 100644
index 0000000..8932f8e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/configure/CorsConfig.java
@@ -0,0 +1,27 @@
+package cc.mrbird.febs.common.configure;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+@Configuration
+public class CorsConfig {
+
+ private CorsConfiguration buildConfig() {
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ corsConfiguration.addAllowedOrigin("*");
+ corsConfiguration.addAllowedHeader("*");
+ corsConfiguration.addAllowedMethod("*");
+ corsConfiguration.setAllowCredentials(true);
+ return corsConfiguration;
+ }
+
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", buildConfig());
+ return new CorsFilter(source);
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index cbded5e..8005fb8 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -5,6 +5,8 @@
@Getter
public enum DataDictionaryEnum {
+ // 积分兑换比例 1,则1积分等于一元 2则2积分等于一元
+ SCORE_CHANGE("SCORE_CHANGE", "SCORE_CHANGE"),
//微信订阅模板ID,
// 微信订单通知
// WX_TEMPLATE_ID_ONE("WX_TEMPLATE", "WX_TEMPLATE_ID_ONE"),
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
index eccc67e..682e4ca 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
@@ -19,7 +19,7 @@
*/
SCORE(2),
/**
- * 竞猜积分
+ * 兑换卷
*/
PRIZE_SCORE(3),
/**
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/GoodsTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/GoodsTypeEnum.java
new file mode 100644
index 0000000..9d36fd6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/GoodsTypeEnum.java
@@ -0,0 +1,47 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+/**
+ *
+ <option value="1">积分兑换商品</option>
+ <option value="2">购买积分商品</option>
+ <option value="3">普通商品商品</option>
+ <option value="4">课程卷商品</option>
+ <option value="5">民宿卷商品</option>
+ */
+@Getter
+public enum GoodsTypeEnum {
+
+ /**
+ * 积分兑换商品
+ * 使用积分去购买商品,不够则使用余额来折扣剩余积分
+ */
+ SCORE_CHANGE(1),
+ /**
+ * 购买积分商品
+ * 使用余额或者微信支付购买,然后赠送积分
+ */
+ BUY_SCORE(2),
+ /**
+ * 普通商品商品
+ * 使用余额或者微信支付购买
+ */
+ NORMAL_GOODS(3),
+ /**
+ * 课程卷商品
+ * 使用余额或者微信支付购买或者使用折扣卷
+ */
+ CLASS_ROLL(4),
+ /**
+ * 民宿卷商品
+ * 使用余额或者微信支付购买或者使用折扣卷
+ */
+ HOUSE_ROLL(5);
+
+ private final int value;
+
+ GoodsTypeEnum(int value) {
+ this.value = value;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
index eac5287..0b4c7b2 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -113,7 +113,17 @@
/**
* 微信退款
*/
- WECHAT_REFUND(22);
+ WECHAT_REFUND(22),
+
+ /**
+ * 积分支付
+ */
+ SCORE_PAY(23),
+
+ /**
+ * 兑换券支付
+ */
+ ROLL_PAY(24);
private final int value;
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiApplyController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiApplyController.java
index 1b87b5c..2854a3c 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiApplyController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiApplyController.java
@@ -19,6 +19,7 @@
**/
@Slf4j
@RestController
+@CrossOrigin("*")
@RequestMapping(value = "/api/apply")
@RequiredArgsConstructor
@Api(value = "ApiApplyController", tags = "申请通道接口类")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java
index 6c8d0fe..09ac342 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java
@@ -16,6 +16,7 @@
@Slf4j
@RestController
+@CrossOrigin("*")
@RequestMapping(value = "/api/act")
@RequiredArgsConstructor
@Api(value = "ApiApplyController", tags = "活动接口类")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java
index 8305013..3fe8124 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAddressInfoController.java
@@ -26,6 +26,7 @@
@Slf4j
@Validated
@RestController
+@CrossOrigin("*")
@RequiredArgsConstructor
@RequestMapping(value = "/api/address")
@Api(value = "ApiMallAddressInfoController", tags = "用户地址管理接口类")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsCategoryController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsCategoryController.java
index 3a525be..c5c501e 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsCategoryController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsCategoryController.java
@@ -9,10 +9,7 @@
import io.swagger.annotations.ApiResponses;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -22,6 +19,7 @@
**/
@Slf4j
@RestController
+@CrossOrigin("*")
@RequiredArgsConstructor
@RequestMapping(value = "/api/category")
@Api(value = "ApiMallGoodsCategoryController", tags = "商品分类参数接收类")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java
index b8da8bc..099aa13 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallGoodsController.java
@@ -20,6 +20,7 @@
**/
@Slf4j
@Validated
+@CrossOrigin("*")
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/goods")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index b9b7639..7593f5f 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -23,6 +23,7 @@
**/
@Slf4j
@RestController
+@CrossOrigin("*")
@RequestMapping(value = "/api/member")
@RequiredArgsConstructor
@Api(value = "ApiMallMemberController", tags = "商城用户接口类")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java
index cf94025..1fc3677 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java
@@ -21,6 +21,7 @@
**/
@Slf4j
@RestController
+@CrossOrigin("*")
@RequestMapping(value = "/api/news")
@RequiredArgsConstructor
@Api(value = "ApiMallNewsController", tags = "新闻接口类")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
index 5975313..ba17b61 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
@@ -24,6 +24,7 @@
**/
@Slf4j
@Validated
+@CrossOrigin("*")
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/order")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
index dd483e3..67c94b5 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
@@ -25,6 +25,7 @@
**/
@Slf4j
@Validated
+@CrossOrigin("*")
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/cart")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
index fdee968..8039f4f 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
@@ -19,6 +19,7 @@
@Slf4j
@Validated
@RestController
+@CrossOrigin("*")
@RequiredArgsConstructor
@RequestMapping(value = "/api/leader")
@Api(value = "ApiMallTeamLeaderController", tags = "团长接口类")
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java
index 9d2094f..1515809 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/PayOrderDto.java
@@ -20,7 +20,7 @@
private Long id;
@NotBlank(message = "参数不能为空")
- @ApiModelProperty(value = "支付类型", example = "1微信2支付宝3余额4积分")
+ @ApiModelProperty(value = "支付类型", example = "1微信2余额3积分4卷")
private String type;
@ApiModelProperty(value = "支付密码", example = "如果选择余额支付需要输入")
@@ -31,4 +31,7 @@
@ApiModelProperty(value = "支付凭证")
private String payImage;
+
+ @ApiModelProperty(value = "兑换卷ID")
+ private Long rollId;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java b/src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java
new file mode 100644
index 0000000..af48abd
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("mall_roll_perk")
+public class MallRollPerk {
+
+ private static final long serialVersionUID = 1L;
+
+ private Long id;
+
+ private Long memberId;
+
+ private Long rollId;
+
+ private Integer state;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallRollPerkMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallRollPerkMapper.java
new file mode 100644
index 0000000..1c13f07
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallRollPerkMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallRollPerk;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface MallRollPerkMapper extends BaseMapper<MallRollPerk> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index e8e3a32..7656e4d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -82,12 +82,15 @@
private final IApiMallTeamLeaderService iApiMallTeamLeaderService;
private final IMallElectronicFenceService iMallElectronicFenceService;
private final MallElectronicFenceMapper mallElectronicFenceMapper;
+ private final MallMemberWalletMapper mallMemberWalletMapper;
+ private final MallRollPerkMapper mallRollPerkMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createOrder(AddOrderDto addOrderDto) {
Long memberId = LoginUserUtil.getLoginUser().getId();
MallMember member = mallMemberMapper.selectById(memberId);
+ MallMemberWallet memberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
//验证用户的等级
// if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
@@ -116,120 +119,85 @@
BigDecimal total = BigDecimal.ZERO;
for (AddOrderItemDto item : addOrderDto.getItems()) {
- MallOrderItem orderItem = new MallOrderItem();
+ MallOrderItem orderItem = new MallOrderItem();
+ MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
+ if (ObjectUtil.isEmpty(sku)) {
+ throw new FebsException("购买商品或sku不存在");
+ }
- // 积分商品提交订单
- if (addOrderDto.getOrderType() == 2) {
- MallGoods mallGoods = mallGoodsMapper.selectById(item.getSkuId());
- if (mallGoods.getStock() < item.getCnt()) {
- throw new FebsException(mallGoods.getGoodsName() + "库存不足");
- }
-
- if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
- throw new FebsException(mallGoods.getGoodsName() + "已下架");
- }
-
- BigDecimal amount = mallGoods.getScore().multiply(BigDecimal.valueOf(item.getCnt()));
- orderItem.setAmount(amount);
- orderItem.setCnt(item.getCnt());
- orderItem.setOrderId(orderInfo.getId());
- orderItem.setPrice(mallGoods.getScore());
- orderItem.setGoodsId(mallGoods.getId());
- orderItem.setGoodsName(mallGoods.getGoodsName());
- orderItem.setStyleName(mallGoods.getGoodsName());
- orderItem.setSkuName(mallGoods.getGoodsName());
- orderItem.setSkuImage(mallGoods.getThumb());
- orderItem.setState(1);
-
- total = total.add(amount);
- } else {
- MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
- if (sku == null) {
- throw new FebsException("购买商品或sku不存在");
- }
-
-// if("样品".equals(sku.getSample())){
-// List<MallOrderItem> items = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
-// if (CollUtil.isNotEmpty(items)) {
-// throw new FebsException("样品一个用户只能购买一次");
-// }
-// Integer cnt = item.getCnt();
-// if(1 < cnt){
-// throw new FebsException("样品只能购买一件");
-// }
-//
-// }
-
- if (sku.getStock() < item.getCnt()) {
- throw new FebsException(sku.getSkuName() + "库存不足");
- }
-
- MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
- // 零撸专区购买
- if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
- List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
- if (CollUtil.isNotEmpty(items)) {
- throw new FebsException("无法重复领取同一个商品");
- }
- }
-
- if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
- throw new FebsException(mallGoods.getGoodsName() + "已下架");
- }
- //商品库存销量计算
- Integer goodsResult = mallGoodsMapper.upDateStockAndVolumeByGoodsId(mallGoods.getId(), item.getCnt());
- if(1 != goodsResult){
- throw new FebsException(mallGoods.getGoodsName() + "库存不足");
- }
- BigDecimal amount = BigDecimal.ZERO;
- BigDecimal itemPrice = BigDecimal.ZERO;
- if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
- //普通用户使用原价购买
- amount = sku.getOriginalPrice().multiply(BigDecimal.valueOf(item.getCnt()));
- itemPrice = sku.getOriginalPrice();
- }else if(AgentLevelEnum.LEVEL_ONE.name().equals(member.getLevel())){
- //普通用户使用原价购买
- amount = sku.getLevelOnePrice().multiply(BigDecimal.valueOf(item.getCnt()));
- itemPrice = sku.getLevelOnePrice();
- }else if(AgentLevelEnum.LEVEL_TWO.name().equals(member.getLevel())){
- //普通用户使用原价购买
- amount = sku.getLevelTwoPrice().multiply(BigDecimal.valueOf(item.getCnt()));
- itemPrice = sku.getLevelTwoPrice();
- }else if(AgentLevelEnum.LEVEL_THREE.name().equals(member.getLevel())){
- //普通用户使用原价购买
- amount = sku.getLevelThreePrice().multiply(BigDecimal.valueOf(item.getCnt()));
- itemPrice = sku.getLevelThreePrice();
- }else{
- //合伙人使用折扣价
- amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
- itemPrice = sku.getPresentPrice();
- }
-// BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
- orderItem.setAmount(amount);
- orderItem.setCnt(item.getCnt());
- orderItem.setOrderId(orderInfo.getId());
- orderItem.setPrice(itemPrice);
- orderItem.setGoodsId(sku.getGoodsId());
- orderItem.setGoodsName(sku.getGoodsName());
- orderItem.setSkuId(sku.getId());
- orderItem.setState(1);
- orderItem.setStyleName(sku.getStyleName());
- orderItem.setSkuName(sku.getSkuName());
- orderItem.setSkuImage(sku.getSkuImage());
- orderItem.setIsNormal(mallGoods.getIsNormal());
- orderItem.setCostPrice(sku.getCostPrice());
-
- total = total.add(amount);
- //规格的库存销量
- Integer skuResult = mallGoodsSkuMapper.upDateStockAndVolumeBySkuId(sku.getId(),item.getCnt());
- if(1 != skuResult){
- throw new FebsException(sku.getSkuName() + "库存不足");
- }
- if (addOrderDto.getType() == 1) {
- mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
- }
+ if (sku.getStock() < item.getCnt()) {
+ throw new FebsException(sku.getSkuName() + "库存不足");
+ }
+ MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
+ // 零撸专区购买
+ if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
+ List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
+ if (CollUtil.isNotEmpty(items)) {
+ throw new FebsException("无法重复领取同一个商品");
}
- mallOrderItemMapper.insert(orderItem);
+ }
+
+ if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
+ throw new FebsException(mallGoods.getGoodsName() + "已下架");
+ }
+ //商品库存销量计算
+ Integer goodsResult = mallGoodsMapper.upDateStockAndVolumeByGoodsId(mallGoods.getId(), item.getCnt());
+ if(1 != goodsResult){
+ throw new FebsException(mallGoods.getGoodsName() + "库存不足");
+ }
+ BigDecimal amount = BigDecimal.ZERO;
+ BigDecimal itemPrice = BigDecimal.ZERO;
+ /**
+ *
+ */
+ Integer isNormal = mallGoods.getIsNormal();
+ if(GoodsTypeEnum.SCORE_CHANGE.getValue() == isNormal){
+ //普通用户使用原价购买
+ amount = sku.getOriginalPrice().multiply(BigDecimal.valueOf(item.getCnt()));
+ itemPrice = sku.getOriginalPrice();
+ }else if(GoodsTypeEnum.BUY_SCORE.getValue() == isNormal){
+ //普通用户使用原价购买
+ amount = sku.getLevelOnePrice().multiply(BigDecimal.valueOf(item.getCnt()));
+ itemPrice = sku.getLevelOnePrice();
+ }else if(GoodsTypeEnum.NORMAL_GOODS.getValue() == isNormal){
+ //普通用户使用原价购买
+ amount = sku.getLevelTwoPrice().multiply(BigDecimal.valueOf(item.getCnt()));
+ itemPrice = sku.getLevelTwoPrice();
+ }else if(GoodsTypeEnum.CLASS_ROLL.getValue() == isNormal){
+ //普通用户使用原价购买
+ amount = sku.getLevelThreePrice().multiply(BigDecimal.valueOf(item.getCnt()));
+ itemPrice = sku.getLevelThreePrice();
+ }else if(GoodsTypeEnum.HOUSE_ROLL.getValue() == isNormal){
+ //普通用户使用原价购买
+ amount = sku.getLevelThreePrice().multiply(BigDecimal.valueOf(item.getCnt()));
+ itemPrice = sku.getLevelThreePrice();
+ }else{
+ throw new FebsException("当前商品无法购买!");
+ }
+ orderItem.setAmount(amount);
+ orderItem.setCnt(item.getCnt());
+ orderItem.setOrderId(orderInfo.getId());
+ orderItem.setPrice(itemPrice);
+ orderItem.setGoodsId(sku.getGoodsId());
+ orderItem.setGoodsName(sku.getGoodsName());
+ orderItem.setSkuId(sku.getId());
+ orderItem.setState(1);
+ orderItem.setStyleName(sku.getStyleName());
+ orderItem.setSkuName(sku.getSkuName());
+ orderItem.setSkuImage(sku.getSkuImage());
+ orderItem.setIsNormal(mallGoods.getIsNormal());
+ orderItem.setCostPrice(sku.getCostPrice());
+
+ total = total.add(amount);
+ //规格的库存销量
+ Integer skuResult = mallGoodsSkuMapper.upDateStockAndVolumeBySkuId(sku.getId(),item.getCnt());
+ if(1 != skuResult){
+ throw new FebsException(sku.getSkuName() + "库存不足");
+ }
+ if (addOrderDto.getType() == 1) {
+ mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
+ }
+ mallOrderItemMapper.insert(orderItem);
}
//运费
BigDecimal delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
@@ -367,17 +335,6 @@
orderInfo.setPayMethod("微信支付");
break;
case "2":
- if (StrUtil.isNotBlank(orderInfo.getPayOrderNo())) {
- payResultStr = orderInfo.getPayOrderNo();
- } else {
- payResultStr = payService.aliPay(orderInfo);
- }
-
- orderInfo.setPayOrderNo(payResultStr);
- orderInfo.setPayMethod("支付宝支付");
- agentProducer.sendOrderReturn(orderInfo.getId());
- break;
- case "3":
payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance");
orderInfo.setPayOrderNo(orderInfo.getOrderNo());
@@ -387,29 +344,91 @@
orderInfo.setPayResult("1");
orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
- mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
+ mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(),
+ orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
+ break;
+ case "3":
+ /**
+ * 获取用户的当前积分
+ */
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(member.getId());
+ BigDecimal score = mallMemberWallet.getScore();
+ BigDecimal amount = orderInfo.getAmount();
+ //积分兑换比例
+ DataDictionaryCustom scoreChangeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.SCORE_CHANGE.getType(),
+ DataDictionaryEnum.SCORE_CHANGE.getCode()
+ );
+ BigDecimal scoreChange = StrUtil.isEmpty(scoreChangeDic.getValue()) ? new BigDecimal("1") : new BigDecimal(scoreChangeDic.getValue());
+ BigDecimal amountToScore = amount.multiply(scoreChange).setScale(0, BigDecimal.ROUND_DOWN);
+ //实际支付积分
+ BigDecimal scoreActual = BigDecimal.ZERO;
+ if(score.compareTo(amountToScore) >= 0){
+ //拥有的积分大于此次订单的金额,则全额订单折扣
+ int reduce = memberWalletService.reduce(amountToScore, member.getId(), "score");
+ if (reduce == 2) {
+ throw new FebsException("积分余额不足");
+ }
+ orderInfo.setPayMethod("积分支付");
+ scoreActual = amountToScore;
+ }else{
+ //拥有的积分大于此次订单的金额,则全额订单折扣
+ int reduce = memberWalletService.reduce(score, member.getId(), "score");
+ if (reduce == 2) {
+ throw new FebsException("积分余额不足");
+ }
+ scoreActual = score;
+ }
+
+ BigDecimal scoreToAmount = score.divide(scoreChange, 2, BigDecimal.ROUND_DOWN);
+ //实际支付余额
+ BigDecimal amountActual = amount.subtract(scoreToAmount).setScale(2, BigDecimal.ROUND_DOWN);
+ int balance = memberWalletService.reduce(amountActual, member.getId(), "balance");
+ if (balance == 2) {
+ throw new FebsException("余额不足");
+ }
+ orderInfo.setPayOrderNo(orderInfo.getOrderNo());
+ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+ orderInfo.setPayTime(new Date());
+ orderInfo.setPayResult("1");
+ orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
+ if(amountActual.compareTo(BigDecimal.ZERO) > 0){
+ mallMoneyFlowService.addMoneyFlow(member.getId(), amountActual.negate(), MoneyFlowTypeEnum.PAY.getValue(),
+ orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
+ }
+ if(scoreActual.compareTo(BigDecimal.ZERO) > 0){
+ mallMoneyFlowService.addMoneyFlow(member.getId(), scoreActual.negate(),
+ MoneyFlowTypeEnum.SCORE_PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue(),"积分支付",2);
+ }
break;
case "4":
- if (orderInfo.getOrderType() != 2) {
- throw new FebsException("非积分订单,无法使用积分支付");
+ MallRollPerk mallRollPerk = mallRollPerkMapper.selectById(payOrderDto.getRollId());
+ if(ObjectUtil.isEmpty(mallRollPerk)){
+ throw new FebsException("兑换券不存在");
}
- payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore");
+ int stateRoll = ObjectUtil.isEmpty(mallRollPerk.getState()) ? 2 : mallRollPerk.getState();
+ if(stateRoll == 2){
+ throw new FebsException("兑换券已使用");
+ }
+
+ payResultStr = orderInfo.getOrderNo();
orderInfo.setPayOrderNo(orderInfo.getOrderNo());
- orderInfo.setPayMethod("积分支付");
+ orderInfo.setPayMethod("兑换券支付");
orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
orderInfo.setPayTime(new Date());
orderInfo.setPayResult("1");
- mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue());
+ mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.ROLL_PAY.getValue(),
+ orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue());
break;
default:
}
+
//订单支付成功产生一个提货码
String takeCode = ShareCodeUtil.toSerialCode(orderInfo.getId());
orderInfo.setTakeCode(takeCode);
-
this.baseMapper.updateById(orderInfo);
diff --git a/src/main/java/cc/mrbird/febs/pay/util/WechatMenuUtil.java b/src/main/java/cc/mrbird/febs/pay/util/WechatMenuUtil.java
index b44c818..4f49065 100644
--- a/src/main/java/cc/mrbird/febs/pay/util/WechatMenuUtil.java
+++ b/src/main/java/cc/mrbird/febs/pay/util/WechatMenuUtil.java
@@ -23,7 +23,7 @@
String appId = "wx052716b1a388b13c";
// 第三方用户唯一凭证密钥
String appSecret = "e7cf355e7234f035d8fea6a3a19513b9";
- String accessToken = "70_VnGMZaIo0pkY7WJOfGVnRlqUGC8UQPu0eN4L8Hc9PearLQgIAtWOC2UCaErhctjI7ORBk_aeBg3QudsLWi5z5_lIPd_zwMCf7E4g8rHkqvArD-N8jyKOKJfzNGsGWJeAFAKAN";
+ String accessToken = "70_LkVymFk8YsaB6EfPqJARigNJoM4fL5gqHE90HHG8o9zureJ34jFYOcal97lTpCD1sNhxHRbZzIs6CylMHyMou3GWj51HNg37lKUlTzrCkpeEGERAnT2gQCCjyOgTKAfAIAGXN";
// 调用接口创建菜单
String result = createMenu(getMenu(), accessToken);
@@ -82,7 +82,7 @@
btn11.setName("商城");
btn11.setType("view");
btn11.setKey("11");
- btn11.setUrl("https://www.baidu.com/");
+ btn11.setUrl("http://ywgouth.meiao.biz/");
CommonButton btn24 = new CommonButton();
btn24.setName("公司简介");
--
Gitblit v1.9.1