From 799622ea4d37aa6bb9fee457967532aa93d18594 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Sun, 21 Mar 2021 20:17:05 +0800
Subject: [PATCH] 扣除用户积分

---
 zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java                     |   20 +
 zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java                          |   12 +
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java               |    9 +
 zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java                            |  142 +++++++-------
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java                 |    2 
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java |   45 +++-
 zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java                     |   21 ++
 zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java             |   73 +++++++
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java            |   85 ---------
 zq-erp/src/test/java/com/matrix/JyyTests.java                                               |    9 
 zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java                                       |   10 -
 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml                           |   12 +
 zq-erp/src/main/resources/mybatis/mapper/score/ScoreVipDetailDao.xml                        |   54 ++----
 13 files changed, 263 insertions(+), 231 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java b/zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java
index 0fa5868..8107216 100644
--- a/zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java
+++ b/zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java
@@ -172,10 +172,6 @@
     private Integer  userType;
 
 
-    /**
-     * 用户总积分
-     */
-    private Integer totalScore;
 
 
     /**
@@ -475,13 +471,7 @@
         this.endTime = endTime;
     }
 
-    public Integer getTotalScore() {
-        return totalScore;
-    }
 
-    public void setTotalScore(Integer totalScore) {
-        this.totalScore = totalScore;
-    }
 
     public Integer getCurrentScore() {
         return currentScore;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java
index 308720b..63c91e7 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysVipInfo.java
@@ -230,77 +230,6 @@
 
 	private SysOrder sysOrder;
 
-	public String getProvince() {
-		return province;
-	}
-
-	public void setProvince(String province) {
-		this.province = province;
-	}
-
-	public String getCity() {
-		return city;
-	}
-
-	public void setCity(String city) {
-		this.city = city;
-	}
-
-	public String getArea() {
-		return area;
-	}
-
-	public void setArea(String area) {
-		this.area = area;
-	}
-
-	public Long getRecommendId() {
-		return recommendId;
-	}
-
-	public void setRecommendId(Long recommendId) {
-		this.recommendId = recommendId;
-	}
-
-	public SysOrder getSysOrder() {
-		return sysOrder;
-	}
-
-	public void setSysOrder(SysOrder sysOrder) {
-		this.sysOrder = sysOrder;
-	}
-
-	public Integer getIsDeal() {
-		return isDeal;
-	}
-
-	public void setIsDeal(Integer isDeal) {
-		this.isDeal = isDeal;
-	}
-
-	public Long getParentId() {
-		return parentId;
-	}
-
-	public void setParentId(Long parentId) {
-		this.parentId = parentId;
-	}
-
-	public Date getCreateDistributionTime() {
-		return createDistributionTime;
-	}
-
-	public void setCreateDistributionTime(Date createDistributionTime) {
-		this.createDistributionTime = createDistributionTime;
-	}
-
-	public Date getHandleTime() {
-		return handleTime;
-	}
-
-	public void setHandleTime(Date handleTime) { 
-		this.handleTime = handleTime;
-	}
 
 
 	/** 扩展信息 **/
@@ -452,6 +381,77 @@
 		this.openId = openId;
 	}
 
+	public String getProvince() {
+		return province;
+	}
+
+	public void setProvince(String province) {
+		this.province = province;
+	}
+
+	public String getCity() {
+		return city;
+	}
+
+	public void setCity(String city) {
+		this.city = city;
+	}
+
+	public String getArea() {
+		return area;
+	}
+
+	public void setArea(String area) {
+		this.area = area;
+	}
+
+	public Long getRecommendId() {
+		return recommendId;
+	}
+
+	public void setRecommendId(Long recommendId) {
+		this.recommendId = recommendId;
+	}
+
+	public SysOrder getSysOrder() {
+		return sysOrder;
+	}
+
+	public void setSysOrder(SysOrder sysOrder) {
+		this.sysOrder = sysOrder;
+	}
+
+	public Integer getIsDeal() {
+		return isDeal;
+	}
+
+	public void setIsDeal(Integer isDeal) {
+		this.isDeal = isDeal;
+	}
+
+	public Long getParentId() {
+		return parentId;
+	}
+
+	public void setParentId(Long parentId) {
+		this.parentId = parentId;
+	}
+
+	public Date getCreateDistributionTime() {
+		return createDistributionTime;
+	}
+
+	public void setCreateDistributionTime(Date createDistributionTime) {
+		this.createDistributionTime = createDistributionTime;
+	}
+
+	public Date getHandleTime() {
+		return handleTime;
+	}
+
+	public void setHandleTime(Date handleTime) {
+		this.handleTime = handleTime;
+	}
 	public String getPayTotal() {
 		return payTotal;
 	}
diff --git a/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java b/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java
index dc820d5..6558a8d 100644
--- a/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java
@@ -1,11 +1,9 @@
 package com.matrix.system.score.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-import java.util.List;
-import java.util.Map;
-import com.matrix.core.pojo.PaginationVO;
 import com.matrix.system.score.entity.ScoreVipDetail;
+
+import java.util.List;
 
 /**
  * @description 客户积分余额
@@ -14,4 +12,18 @@
  */
 public interface ScoreVipDetailDao extends BaseMapper<ScoreVipDetail> {
 
+    /**
+     * 查询用户总积分
+     * @param openId
+     * @param vipId
+     * @return
+     */
+    int selectUserTotalScore(String openId, Long vipId);
+
+    /**
+     * 查询用户有效的积分,按时间顺序排
+     * @param userId
+     * @return
+     */
+    List<ScoreVipDetail> selectEffectiveScore(String openId);
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java b/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java
index 2526ee5..94d522b 100644
--- a/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java
+++ b/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java
@@ -16,10 +16,27 @@
 @TableName("score_vip_detail")
 public class ScoreVipDetail  extends BaseEntity{
 	@Extend
-	private static final long serialVersionUID = 1L; 
+	private static final long serialVersionUID = 1L;
 
-	
+	/**
+	 * 获取类型(1:现金消费)
+	 */
+	public static final int SCORE_VIP_TYPE_CASH=1;
 
+	/**
+	 * 获取类型(2:赠送等)
+	 */
+	public static final int SCORE_VIP_TYPE_CONSUME=2;
+
+	/**
+	 * 用户openId
+	 */
+	private String openId;
+
+	/**
+	 * erp用户Id
+	 */
+	private String vipId;
 
 	
 	/**
diff --git a/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java b/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
index 807819d..1432df4 100644
--- a/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
+++ b/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
@@ -1,20 +1,81 @@
 package com.matrix.system.score.service;
 
-import com.matrix.system.score.dao.ScoreVipDetailDao;
-import com.matrix.system.score.entity.ScoreVipDetail;
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.matrix.biz.bean.BizUser;
+import com.matrix.biz.dao.BizUserDao;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.system.score.dao.ScoreUseRecordDao;
+import com.matrix.system.score.dao.ScoreVipDetailDao;
+import com.matrix.system.score.entity.ScoreUseRecord;
+import com.matrix.system.score.entity.ScoreVipDetail;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
- * @description 客户积分余额
  * @author jyy
+ * @description 客户积分余额
  * @date 2021-02-26 15:26
  */
 @Service
-public class ScoreVipDetailService  extends ServiceImpl<ScoreVipDetailDao, ScoreVipDetail>{
+public class ScoreVipDetailService extends ServiceImpl<ScoreVipDetailDao, ScoreVipDetail> {
+
+    @Autowired
+    ScoreVipDetailDao scoreVipDetailDao;
+
+    @Autowired
+    ScoreUseRecordDao scoreUseRecordDao;
+
+    @Autowired
+    BizUserDao bizUserDao;
+
+    /**
+     * 扣除用户积分
+     *
+     * @param openId
+     * @param score
+     * @param businessId
+     * @param type
+     */
+    public void deductionScore(String openId, Integer score, Long businessId, int type) {
+        BizUser user = bizUserDao.findByOpenId(openId);
+        List<ScoreVipDetail> effectiveScoreList = scoreVipDetailDao.selectEffectiveScore(openId);
+
+        for (ScoreVipDetail scoreVipDetail : effectiveScoreList) {
+
+            ScoreUseRecord scoreUseRecord = new ScoreUseRecord();
+            scoreUseRecord.setPreScore(scoreVipDetail.getRemainScore());
 
 
+            int surplus = scoreVipDetail.getRemainScore() - score;
+            int currentDedution = 0;
+            if (surplus > 0 || surplus == 0) {
+                //余额充足
+                currentDedution = score;
+                scoreVipDetail.setRemainScore(surplus);
+                scoreVipDetailDao.updateById(scoreVipDetail);
+                break;
+            } else {
+                currentDedution = scoreVipDetail.getRemainScore();
+                scoreVipDetail.setRemainScore(0);
+                scoreVipDetailDao.updateById(scoreVipDetail);
+                score=Math.abs(surplus);
+            }
+            //新增扣除记录
+            scoreUseRecord.setCreateBy(MatrixConstance.SYSTEM_USER);
+            scoreUseRecord.setUpdateBy(MatrixConstance.SYSTEM_USER);
+            scoreUseRecord.setCreateTime(DateTime.now());
+            scoreUseRecord.setUpdateTime(DateTime.now());
+            scoreUseRecord.setNowScore(scoreVipDetail.getRemainScore());
+            scoreUseRecord.setCompanyId(user.getCompanyId());
+            scoreUseRecord.setScoreVipDetailId(scoreVipDetail.getId());
+            scoreUseRecord.setBusinessId(businessId);
+            scoreUseRecord.setRecNum(currentDedution);
+            scoreUseRecord.setRecType(type);
+            scoreUseRecordDao.insert(scoreUseRecord);
+        }
 
-
-  
+    }
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
index 508d4e7..c36b7e6 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
@@ -12,6 +12,8 @@
 import com.matrix.system.common.dao.BusParameterSettingsDao;
 import com.matrix.system.hive.bean.SysVipInfo;
 import com.matrix.system.hive.dao.SysVipInfoDao;
+import com.matrix.system.score.entity.ScoreVipDetail;
+import com.matrix.system.score.service.ScoreVipDetailService;
 import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoin;
 import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoinUser;
 import com.matrix.system.shopXcx.bean.ShopOrder;
@@ -78,6 +80,9 @@
 
     @Autowired
     BusParameterSettingsDao busParameterSettingsDao;
+
+    @Autowired
+    ScoreVipDetailService scoreVipDetailService;
 
 
 
@@ -195,6 +200,10 @@
                             // 根据订单类型创建不同的处理任务
                             rabiitMqTemplate.sendTopicMsg(RabbitMqConfig.MQ_EXCHANGE_TOPIC +evn, MQTaskRouting.CREATE_ORDER+evn, orderId);
 
+                            //扣除积分
+                            if(order.getScorePay()!=null){
+                                scoreVipDetailService.deductionScore(order.getUserId(),order.getScorePay(),Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH);
+                            }
 
                             threadResult.putInMap("status", "success");
                             resXml = AppConstance.RESULT_XML_SUCCESS;
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java
index 5fc88e7..a18df97 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java
@@ -1,23 +1,8 @@
 package com.matrix.system.shopXcx.api.action;
 
-import com.matrix.biz.bean.BizUser;
-import com.matrix.biz.service.BizUserService;
-import com.matrix.component.redis.RedisUserLoginUtils;
-import com.matrix.core.pojo.AjaxResult;
-import com.matrix.core.pojo.PaginationVO;
-import com.matrix.component.redis.RedisUserLoginUtils;
-import com.matrix.system.shopXcx.bean.ShopScoreExchange;
-import com.matrix.system.shopXcx.bean.ShopScoreRecord;
-import com.matrix.system.shopXcx.dao.ShopScoreExchangeDao;
-import com.matrix.system.shopXcx.dao.ShopScoreRecordDao;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.util.List;
 
 /**
  * @description 用户积分控制器
@@ -29,76 +14,6 @@
 @CrossOrigin(origins = "*", maxAge = 3600)
 public class WxShopScoreAction {
 
-	@Autowired
-	private ShopScoreRecordDao shopScoreRecordDao;
-	@Autowired
-	private ShopScoreExchangeDao shopScoreExchangeDao;
-	@Autowired
-	private RedisUserLoginUtils redisUserLoginUtils;
-	@Autowired
-	private BizUserService bizUserService;
 
-
-	/**
-	 * 查询我的获得积分列表
-	 * @return
-	 */
-	@RequestMapping(value = "/getRecordList")
-	@ResponseBody
-	public AjaxResult getRecordList(@RequestBody PaginationVO pageVo) {
-
-		pageVo.setSort("create_time");
-		pageVo.setOrder("desc");
-		BizUser loginBizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
-		ShopScoreRecord params = new ShopScoreRecord();
-		params.setBeneficiaryId(loginBizUser.getOpenId());
-		List<ShopScoreRecord> dataList = shopScoreRecordDao.selectInPage(params, pageVo);
-		int total = shopScoreRecordDao.selectTotalRecord(params);
-		AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, total);
-		//查询用户总积分
-		BizUser user = bizUserService.findById(loginBizUser.getUserId());
-		Integer totalScore = 0;
-		if (user != null && user.getTotalScore() != null) {
-			totalScore = user.getTotalScore();
-		}
-		result.putInMap("totalScore", totalScore);
-		//查询下级总人数
-		BizUser peopleSumParams = new BizUser();
-		peopleSumParams.setParentOpenId(loginBizUser.getOpenId());
-		int peopleSum = bizUserService.findTotal(peopleSumParams);
-		result.putInMap("peopleSum", peopleSum);
-		return result;
-	}
-
-
-	/**
-	 * 查询我的积分兑换列表
-	 * @return
-	 */
-	@RequestMapping(value = "/getChangeRecordList")
-	@ResponseBody
-	public AjaxResult getChangeRecordList(@RequestBody PaginationVO pageVo) {
-
-		//不分页
-		pageVo.setOffset(null);
-		pageVo.setLimit(null);
-		//按生成时间倒序排列
-		pageVo.setSort("create_time");
-		pageVo.setOrder("desc");
-		BizUser loginBizUser = redisUserLoginUtils.getLoginUser(BizUser.class);
-		ShopScoreExchange params = new ShopScoreExchange();
-		params.setUserId(loginBizUser.getOpenId());
-		List<ShopScoreExchange> dataList = shopScoreExchangeDao.selectInPage(params, pageVo);
-		int total = shopScoreExchangeDao.selectTotalRecord(params);
-		AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, total);
-		//查询用户当前积分
-		BizUser user = bizUserService.findById(loginBizUser.getUserId());
-		Integer currentScore = 0;
-		if (user != null && user.getCurrentScore() != null) {
-			currentScore = user.getCurrentScore();
-		}
-		result.putInMap("currentScore", currentScore);
-		return result;
-	}
   
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
index 3125fe1..e34da97 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
@@ -175,6 +175,8 @@
         return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(bizUser));
     }
 
+
+
     void checkNeedToBeSalesman(BizUser bizUser, BizUser loginUser) {
         //查询是否需要自动成为分销员
         if ((loginUser.getIsSales() == null || loginUser.getIsSales() == 2)
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
index d4a5664..70bb8d6 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java
@@ -18,6 +18,7 @@
 import com.matrix.system.common.dao.CustomerDataDictionaryDao;
 import com.matrix.system.common.interceptor.HostInterceptor;
 import com.matrix.system.hive.dao.ShoppingGoodsDao;
+import com.matrix.system.score.dao.ScoreVipDetailDao;
 import com.matrix.system.shopXcx.api.action.PayThreadPool;
 import com.matrix.system.shopXcx.api.pojo.OrderCouponGroup;
 import com.matrix.system.shopXcx.api.pojo.OrderInfoQueryPOJO;
@@ -100,6 +101,9 @@
     @Autowired
     private BusParameterSettingsDao busParameterSettingsDao;
 
+    @Autowired
+    private ScoreVipDetailDao scoreVipDetailDao;
+
     @Override
     public BigDecimal calculationPostage(BigDecimal payPrice, Long companyId) {
         BigDecimal postage = BigDecimal.ZERO;
@@ -133,19 +137,17 @@
             return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择正确的收获地址");
         }
 
-        AjaxResult caculateResult= buildDiscountExplain(shopOrderDto);
-
-
         //计算订单优惠信息
+        AjaxResult caculateResult= buildDiscountExplain(shopOrderDto);
         DiscountExplain discountExplain= (DiscountExplain) caculateResult.getMapInfo().get("discountExplain");
 
-
-
-        //取出购物车中选中的产品
-        List<ShopShoppingCart> buyCart = new ArrayList<>();
-        //取出购物车中没有参加店铺活动的产品,和参加了店铺活动但是活动没有达到标准的产品,用来计算是否可以使用优惠券
-        List<ShopShoppingCart> notCouponuyCart = new ArrayList<>();
-
+        if(discountExplain.getScorePay()!=null){
+            //校验用户积分是否够用
+            int score=scoreVipDetailDao.selectUserTotalScore(bizUser.getOpenId(),null);
+            if(score<discountExplain.getScorePay()){
+                return  AjaxResult.buildFailInstance("积分不足");
+            }
+        }
 
         ShopOrder shopOrder = new ShopOrder();
         shopOrder.setCompanyId(bizUser.getCompanyId());
@@ -154,7 +156,7 @@
         shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS);
 
         List<ShopOrderDetails> details = new ArrayList<>();
-        Integer cartCount = 0;
+        Integer orderCount = 0;
         for (OrderItemDto orderItemDto : shopOrderDto.getOrderItemList()) {
             ShopOrderDetails shopOrderDetails = new ShopOrderDetails();
             shopOrderDetails.setCreateBy(AppConstance.SYSTEM_USER);
@@ -178,7 +180,12 @@
             shopOrderDetails.setDiscountAmount(BigDecimal.ZERO);
 
             details.add(shopOrderDetails);
-            cartCount += shopOrderDetails.getCount();
+            orderCount += shopOrderDetails.getCount();
+            if(orderItemDto.getCartId()!=null){
+                //删除用户购物车选中的产品
+                shoppingCartDao.deleteById(orderItemDto.getCartId());
+            }
+
         }
 
         //校验商品是否限购
@@ -190,7 +197,7 @@
         shopOrder.setCreateBy("微信小程序生成");
         shopOrder.setUpdateBy("微信小程序生成");
         shopOrder.setCommodityPrice(discountExplain.getBillPrice());
-        shopOrder.setPurchaseQuantity(cartCount);
+        shopOrder.setPurchaseQuantity(orderCount);
         shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS);
         //购买方式
         shopOrder.setShippingMethod(shopOrderDto.getDeliverySelect());
@@ -219,6 +226,7 @@
         //获取邮费
         shopOrder.setPostage(discountExplain.getPostage());
         shopOrder.setOrderMoney(discountExplain.getPayPrice());
+        shopOrder.setScorePay(discountExplain.getScorePay());
         Gson g = new GsonBuilder().create();
         shopOrder.setDiscountExplain(g.toJson(discountExplain));
         shopOrder.setDiscountAmount(discountExplain.getActivityPrice().add(discountExplain.getCouponPrice()));
@@ -242,8 +250,6 @@
             shopCouponRecordDao.updateByModel(record);
         }
 
-        //删除用户购物车选中的产品
-        shoppingCartDao.deleteUserSelectCart(bizUser.getOpenId());
 
 
         BrandWCPayRequestData payData = startPayment(shopOrder);
@@ -388,6 +394,15 @@
         if (!shopOrder.getPayResult().equals(ShopOrder.ORDER_PAY_STATUS_WAIT)) {
             throw new GlobleException("该订单不是待支付状态!");
         }
+
+        if(shopOrder.getScorePay()!=null){
+            //校验用户积分是否够用
+            int score=scoreVipDetailDao.selectUserTotalScore(shopOrder.getUserId(),null);
+            if(score<shopOrder.getScorePay()){
+                return  AjaxResult.buildFailInstance("积分不足");
+            }
+        }
+
         BrandWCPayRequestData payData = startPayment(shopOrder);
         AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(payData));
         result.putInMap("orderId", shopOrder.getId());
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java
index 46da7f2..4ae3a9a 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java
@@ -141,7 +141,10 @@
      * 用户ID
      */
     private String userId;
-
+    /**
+     * 支付积分
+     */
+    private Integer scorePay;
 
     /**
      * 下单时间
@@ -336,6 +339,13 @@
         return orderNo;
     }
 
+    public Integer getScorePay() {
+        return scorePay;
+    }
+
+    public void setScorePay(Integer scorePay) {
+        this.scorePay = scorePay;
+    }
 
     public void setOrderNo(String orderNo) {
         this.orderNo = orderNo;
diff --git a/zq-erp/src/main/resources/mybatis/mapper/score/ScoreVipDetailDao.xml b/zq-erp/src/main/resources/mybatis/mapper/score/ScoreVipDetailDao.xml
index f7fe0c0..df8f53f 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/score/ScoreVipDetailDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/score/ScoreVipDetailDao.xml
@@ -3,41 +3,23 @@
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <mapper namespace="com.matrix.system.score.dao.ScoreVipDetailDao">
-	<!-- 定义ScoreVipDetail 的复杂关联map -->
-	<resultMap type="com.matrix.system.score.entity.ScoreVipDetail" id="ScoreVipDetailMap">
-		<id property="id" column="id" />
-		<result property="createBy" column="create_by" />
-		<result property="createTime" column="create_time" />
-		<result property="updateBy" column="update_by" />
-		<result property="updateTime" column="update_time" />
-			<result property="type" column="type" />
-			<result property="allScore" column="all_score" />
-			<result property="usedScore" column="used_score" />
-			<result property="remainScore" column="remain_score" />
-			<result property="gainTime" column="gain_time" />
-			<result property="validiteTime" column="validite_time" />
-			<result property="state" column="state" />
-			<result property="businessId" column="business_id" />
-			<result property="companyId" column="company_id" />
-	</resultMap>
-	
-	
-	<!-- 定义ScoreVipDetail 的简单map  ,本map不添加其他的关联属性 -->
-	<resultMap type="com.matrix.system.score.entity.ScoreVipDetail" id="ScoreVipDetailSimpleMap">
-		<id property="id" column="id" />
-		<result property="createBy" column="create_by" />
-		<result property="createTime" column="create_time" />
-		<result property="updateBy" column="update_by" />
-		<result property="updateTime" column="update_time" />
-			<result property="type" column="type" />
-			<result property="allScore" column="all_score" />
-			<result property="usedScore" column="used_score" />
-			<result property="remainScore" column="remain_score" />
-			<result property="gainTime" column="gain_time" />
-			<result property="validiteTime" column="validite_time" />
-			<result property="state" column="state" />
-			<result property="businessId" column="business_id" />
-			<result property="companyId" column="company_id" />
-	</resultMap>
+
+    <select id="selectUserTotalScore" resultType="java.lang.Integer">
+		select IFNULL(sum(IFNULL( remain_score, 0 )),0) from score_vip_detail
+		<where>
+		and state=1
+			<if test="openId !=null">
+				and open_id=#{openId}
+			</if>
+			<if test="vipId !=null">
+				and vip_id=#{vipId}
+			</if>
+		</where>
+	</select>
+
+	<select id="selectEffectiveScore" resultType="com.matrix.system.score.entity.ScoreVipDetail">
+		select  *  from score_vip_detail where open_id=#{openId} and  state=1 order by create_time
+
+	</select>
 
 </mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
index 8ec31fb..c699faf 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml
@@ -33,6 +33,7 @@
 			<result property="storeName" column="shop_name" />
 			<result property="orderType" column="order_type" />
 			<result property="applyStatus" column="apply_status" />
+			<result property="scorePay" column="score_pay" />
 			<result property="companyId" column="company_id" />
 	</resultMap>
 
@@ -66,6 +67,7 @@
 			<result property="postage" column="postage" />
 			<result property="orderType" column="order_type" />
 			<result property="storeName" column="shop_name" />
+		<result property="scorePay" column="score_pay" />
 			<result property="companyId" column="company_id" />
 		<result property="activityType" column="activity_type" />
 		<!--支付时间-->
@@ -127,6 +129,7 @@
 			postage,
 			order_type,
 			activity_type,
+score_pay,
 			company_id
 	</sql>
 	
@@ -159,6 +162,7 @@
 			#{item.postage},
 			#{item.orderType},
 			#{item.activityType},
+			#{item.scorePay},
 			#{item.companyId}
 	</sql>
 	
@@ -337,6 +341,9 @@
 			<if test="_parameter.containsKey('orderType')">
 				order_type  = #{orderType},
 			</if>
+			<if test="_parameter.containsKey('scorePay')">
+				score_pay  = #{scorePay},
+			</if>
 		</set>
 		WHERE id=#{id} 
 	</update> 
@@ -405,6 +412,9 @@
 			</if>
 			<if test="record.postage != null and record.postage != '' ">
 				postage  = #{record.postage},
+			</if>
+			<if test="record.scorePay != null and record.scorePay != '' ">
+				score_pay  = #{record.scorePay},
 			</if>
 			<if test="true">
 				update_time  = now(),
@@ -558,6 +568,7 @@
 		o.postage,
 		s.shop_name,
 		o.order_type,
+		o.score_pay,
 		o.apply_status
 		from shop_order o
 		INNER JOIN sys_shop_info s on o.store_id = s.ID
@@ -629,6 +640,7 @@
 		o.pay_result,
 		o.postage,
 		s.store_name,
+		s.score_pay,
 		o.order_type
 		from shop_order o
 		LEFT JOIN shop_store s on o.store_id = s.store_id
diff --git a/zq-erp/src/test/java/com/matrix/JyyTests.java b/zq-erp/src/test/java/com/matrix/JyyTests.java
index b2b3243..3d26abb 100644
--- a/zq-erp/src/test/java/com/matrix/JyyTests.java
+++ b/zq-erp/src/test/java/com/matrix/JyyTests.java
@@ -1,5 +1,6 @@
 package com.matrix;
 
+import com.matrix.system.score.dao.ScoreVipDetailDao;
 import com.matrix.system.shopXcx.dao.ShopOrderV2Dao;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -22,12 +23,18 @@
 	@Autowired
 	private ShopOrderV2Dao shopOrderV2Dao;
 
-
+	@Autowired
+	ScoreVipDetailDao scoreVipDetailDao;
 
 	/**
 	 *
 	 */
 	@Test
+	public void scoreVipDetailDao() throws InterruptedException {
+		System.out.println( scoreVipDetailDao.selectUserTotalScore("oJkRK4yelehsY4S7I6Ee1ydWtQMI",null));
+	}
+
+	@Test
 	public void testSelectReceivedOrderCount() throws InterruptedException {
 		System.out.println( shopOrderV2Dao.selectReceivedOrderCount("oJkRK4yelehsY4S7I6Ee1ydWtQMI"));
 	}

--
Gitblit v1.9.1