From b0c5d432ec041221dcbe81ca5ae3aa20fe3bddc6 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Mon, 22 Mar 2021 20:17:58 +0800 Subject: [PATCH] Merge branch 'score_shop' of http://120.27.238.55:7000/r/beauty-erp into score_shop --- zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java | 4 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java | 52 zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrder.java | 12 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml | 45 zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartVo.java | 94 - zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProductComment.java | 17 zq-erp/src/main/resources/config/db/increment/推广员.sql | 29 zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java | 2 zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml | 59 zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java | 31 zq-erp/src/main/java/com/matrix/system/shopXcx/dto/DiscountExplain.java | 50 zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java | 10 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml | 3 zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartBillVo.java | 12 zq-erp/src/main/resources/templates/views/admin/shop/shopProductComment-list.html | 81 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesGroupServiceImpl.java | 4 zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-list.html | 37 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopShoppingCartDao.xml | 22 zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html | 3 zq-erp/src/main/java/com/matrix/system/score/entity/ScoreUseRecord.java | 17 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java | 228 --- zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrderDetails.java | 71 zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java | 29 zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderCouponGroup.java | 43 zq-erp/src/main/java/com/matrix/ZqErpApplication.java | 3 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java | 137 - zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ScoreUseRecordVo.java | 56 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShoppingCartAction.java | 67 zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartGroupVo.java | 46 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java | 6 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WxShopCouponService.java | 6 zq-erp/src/main/resources/config/config.json | 8 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDao.xml | 12 zq-erp/src/main/resources/mybatis/mapper/score/ScoreVipDetailDao.xml | 60 zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html | 189 ++ zq-erp/src/main/java/com/matrix/system/score/dao/ScoreVipDetailDao.java | 21 zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderItemDto.java | 47 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java | 6 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductDao.xml | 85 + zq-erp/src/main/resources/config/test/config.json | 8 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 | 20 zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java | 236 +++ zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreProductDto.java | 20 zq-erp/src/main/resources/config/db/increment/美度业绩升级.sql | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/ShoppingCartService.java | 43 zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java | 52 zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProduct.java | 404 ----- zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java | 1 zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/CalculatePostagePOJO.java | 6 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/ScoreOrderTask.java | 80 + zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/OrderCouponGroupService.java | 282 ++++ zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java | 4 zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopShoppingCartDao.java | 2 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxProductAttributeAction.java | 4 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxScoreProductAction.java | 72 + zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreFlowDto.java | 26 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java | 11 zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopBizUserScoreAction.java | 20 zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java | 27 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WXShopOrderServiceImpl.java | 276 ++- zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java | 6 /dev/null | 40 zq-erp/src/test/java/com/matrix/JyyTests.java | 16 zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java | 25 zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopShoppingCart.java | 101 + zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java | 1 zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java | 15 zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java | 16 zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDetailsDao.xml | 62 71 files changed, 2,258 insertions(+), 1,468 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/ZqErpApplication.java b/zq-erp/src/main/java/com/matrix/ZqErpApplication.java index 2941bcc..ff662ff 100644 --- a/zq-erp/src/main/java/com/matrix/ZqErpApplication.java +++ b/zq-erp/src/main/java/com/matrix/ZqErpApplication.java @@ -3,6 +3,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableAsync; /** * spring boot入口 @@ -10,9 +11,7 @@ * @author jiangyouyao */ @SpringBootApplication - @ComponentScan(basePackages = {"com.matrix.**"}) - public class ZqErpApplication { public static void main(String[] args) { 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/config/RabbitMqConfig.java b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java index 11f480b..0993a3f 100644 --- a/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java +++ b/zq-erp/src/main/java/com/matrix/config/RabbitMqConfig.java @@ -39,6 +39,11 @@ public static final String MQ_EXCHANGE_TOPIC = "hive_exchange_fanout"; @Bean + ScoreOrderTask ScoreOrderTask() { + return new ScoreOrderTask(); + } + + @Bean VipCreateTask VipCreateTask() { return new VipCreateTask(); } @@ -96,6 +101,7 @@ //不同任务在不同的队列,但是routingKey一样则可以收到生产者消息 taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.CREATE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,SalesOrderTask())); taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SALES_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,OrderrCreateTask())); + taskList.add(new MqTask(MQ_EXCHANGE_TOPIC + evn, MQTaskRouting.SCORE_ORDER + evn,MQTaskRouting.CREATE_ORDER + evn,ScoreOrderTask())); rabiitMqTemplate.binding(taskList); diff --git a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java b/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java index 9d64d7a..c5b69cb 100644 --- a/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java +++ b/zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderDao.java @@ -26,7 +26,7 @@ * @param saleOrderDto * @return */ - IPage<SalesOrderVo> selectSalesManOrder(Page<SalesOrderVo> page, @Param("record")SaleOrderDto saleOrderDto); + IPage<SalesOrderVo> selectSalesManOrder(Page<SalesOrderVo> page, @Param("record") SaleOrderDto saleOrderDto); LoadFenxiaoOrderBasicVo selectFenxiaoOrderBasicByCompanyId(@Param("companyId")Long companyId); 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/ScoreUseRecordDao.java b/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java index 2162dc5..dae783a 100644 --- a/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java +++ b/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java @@ -1,11 +1,12 @@ 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.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.matrix.system.score.entity.ScoreUseRecord; +import com.matrix.system.shopXcx.api.dto.ScoreFlowDto; +import com.matrix.system.shopXcx.api.vo.ScoreUseRecordVo; +import org.apache.ibatis.annotations.Param; /** * @description 积分记录表 @@ -14,4 +15,11 @@ */ public interface ScoreUseRecordDao extends BaseMapper<ScoreUseRecord> { + /** + * 查询收支记录 + * @param page + * @param scoreFlowDto + * @return + */ + IPage<ScoreUseRecordVo> selectFlowList(Page<ScoreUseRecordVo> page, @Param("record")ScoreFlowDto scoreFlowDto); } \ No newline at end of file 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..de52cc4 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,10 @@ 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 org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @description 客户积分余额 @@ -14,4 +13,18 @@ */ public interface ScoreVipDetailDao extends BaseMapper<ScoreVipDetail> { + /** + * 查询用户总积分 + * @param openId + * @param vipId + * @return + */ + int selectUserTotalScore(@Param("openId") String openId, @Param("vipId")Long vipId); + + /** + * 查询用户有效的积分,按时间顺序排 + * @param + * @return + */ + List<ScoreVipDetail> selectEffectiveScore(@Param("openId") String openId, @Param("vipId")Long vipId); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreUseRecord.java b/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreUseRecord.java index a95ffec..41cc47b 100644 --- a/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreUseRecord.java +++ b/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreUseRecord.java @@ -14,9 +14,9 @@ @TableName("score_use_record") public class ScoreUseRecord extends BaseEntity{ @Extend - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - + @@ -25,7 +25,7 @@ */ - private Integer recType; + private Integer type; /** * 数量 @@ -40,7 +40,10 @@ private Long businessId; - + /** + * 操作人id + */ + Long oprationUserId; /** * 积分卡ID */ @@ -65,10 +68,12 @@ /** * 操作人ID */ + private String openId; + private Long vipId; - private Long userId; - + private Long shopId; + /** * 备注 */ 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..8c6b859 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,33 @@ @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; + /** 有效*/ + public static final int SCORE_STATUS_YX=1; + /** 无效*/ + public static final int SCORE_STATUS_WX=2; + + + + /** + * 用户openId + */ + private String openId; + + /** + * erp用户Id + */ + private Long vipId; /** @@ -76,7 +99,7 @@ */ - private String businessId; + private Long businessId; /** * 所属公司_id 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..9002b42 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,246 @@ 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.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.matrix.biz.dao.BizUserDao; +import com.matrix.core.constance.MatrixConstance; +import com.matrix.core.exception.GlobleException; +import com.matrix.core.tools.DateUtil; +import com.matrix.system.common.bean.BusParameterSettings; +import com.matrix.system.common.dao.BusParameterSettingsDao; +import com.matrix.system.common.dao.SysUsersDao; +import com.matrix.system.hive.dao.SysVipInfoDao; +import com.matrix.system.score.constant.ScoreSettingConstant; +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 org.springframework.transaction.annotation.Transactional; + +import java.util.Calendar; +import java.util.Date; +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; + + @Autowired + SysVipInfoDao vipInfoDao; + + @Autowired + SysUsersDao sysUsersDao; + + @Autowired + BusParameterSettingsDao busParameterSettingsDao; + + /** + * 扣除用户积分 + */ + @Transactional(rollbackFor = Exception.class) + public void deductionScore(String openId, Long vipId,Long shopId, Integer score, Long businessId, int type,String remark) { + Long companyId=null; + if(openId!=null){ + companyId= bizUserDao.findByOpenId(openId).getCompanyId(); + }else if(vipId!=null){ + companyId= vipInfoDao.selectById(vipId).getCompanyId(); + }else{ + throw new IllegalArgumentException("vipId,openId必须有一个"); + } + + List<ScoreVipDetail> effectiveScoreList = scoreVipDetailDao.selectEffectiveScore(openId,null); + + 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); + if(surplus==0){ + scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_WX); + } + scoreVipDetailDao.updateById(scoreVipDetail); + score=0; + } else { + currentDedution = scoreVipDetail.getRemainScore(); + scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_WX); + 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(companyId); + scoreUseRecord.setScoreVipDetailId(scoreVipDetail.getId()); + scoreUseRecord.setBusinessId(businessId); + scoreUseRecord.setRecNum(-currentDedution); + scoreUseRecord.setType(type); + scoreUseRecord.setShopId(shopId); + scoreUseRecord.setOpenId(openId); + scoreUseRecord.setVipId(vipId); + scoreUseRecord.setRemarks(remark); + scoreUseRecordDao.insert(scoreUseRecord); + + if(surplus > 0 || surplus == 0){ + break; + } + } + if(score>0){ + throw new GlobleException("积分不足"); + } + } + + /** + * 新增用户积分 + */ + @Transactional(rollbackFor = Exception.class) + public void addScore(String openId, Long vipId, Long oprationUserId,Long shopId, Integer score, Long businessId, int type,String remark) { + Long companyId=null; + if(openId!=null){ + companyId= bizUserDao.findByOpenId(openId).getCompanyId(); + }else if(vipId!=null){ + companyId= vipInfoDao.selectById(vipId).getCompanyId(); + }else{ + throw new IllegalArgumentException("vipId,openId必须有一个"); + } + if(score<0){ + throw new IllegalArgumentException("score必须有为大于零的数"); + } + + String createBy=MatrixConstance.SYSTEM_USER; + if(oprationUserId!=null){ + createBy=sysUsersDao.selectById(oprationUserId).getSuName(); + } + + //计算过期时间 + BusParameterSettings yxqSetting = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.VALID_PERIOD_POINTS, companyId); + Calendar cal=Calendar.getInstance(); + int year = cal.get(Calendar.YEAR); + int sxYear=year+(Integer.parseInt(yxqSetting.getParamValue())-1); + Date sxys=DateUtil.stringToDate(year+"-12-31 23:59",DateUtil.DATE_FORMAT_MM ); + + ScoreVipDetail scoreVipDetail=new ScoreVipDetail(); + + scoreVipDetail.setCreateBy(createBy); + scoreVipDetail.setUpdateBy(createBy); + scoreVipDetail.setCreateTime(DateTime.now()); + scoreVipDetail.setUpdateTime(DateTime.now()); + scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_YX); + scoreVipDetail.setRemainScore(score); + scoreVipDetail.setUsedScore(0); + scoreVipDetail.setBusinessId(businessId); + scoreVipDetail.setValiditeTime(sxys); + scoreVipDetail.setOpenId(openId); + scoreVipDetail.setVipId(vipId); + scoreVipDetail.setGainTime(DateTime.now()); + scoreVipDetail.setAllScore(score); + scoreVipDetail.setType(type); + scoreVipDetail.setCompanyId(companyId); + scoreVipDetailDao.insert(scoreVipDetail); + + //新增添加记录 + ScoreUseRecord scoreUseRecord = new ScoreUseRecord(); + scoreUseRecord.setPreScore(score); + scoreUseRecord.setCreateBy(createBy); + scoreUseRecord.setUpdateBy(createBy); + scoreUseRecord.setCreateTime(DateTime.now()); + scoreUseRecord.setUpdateTime(DateTime.now()); + scoreUseRecord.setNowScore(score); + scoreUseRecord.setCompanyId(companyId); + scoreUseRecord.setScoreVipDetailId(scoreVipDetail.getId()); + scoreUseRecord.setBusinessId(businessId); + scoreUseRecord.setRecNum(score); + scoreUseRecord.setType(type); + scoreUseRecord.setOpenId(openId); + scoreUseRecord.setVipId(vipId); + scoreUseRecord.setShopId(shopId); + scoreUseRecord.setOprationUserId(oprationUserId); + scoreUseRecord.setRemarks(remark); + scoreUseRecordDao.insert(scoreUseRecord); + } + /** + * 退积分 + */ + public void refundScore(String openId, Long vipId, Integer score, Long oldBusinessId, int type){ + Long companyId=null; + if(openId!=null){ + companyId= bizUserDao.findByOpenId(openId).getCompanyId(); + }else if(vipId!=null){ + companyId= vipInfoDao.selectById(vipId).getCompanyId(); + }else{ + throw new IllegalArgumentException("vipId,openId必须有一个"); + } + if(score<0){ + throw new IllegalArgumentException("score必须有为大于零的数"); + } - + //查询原始使用记录 + QueryWrapper queryWrapper=new QueryWrapper(); + queryWrapper.eq("business_id",oldBusinessId); + queryWrapper.eq("company_id",companyId); + queryWrapper.eq("type",type); + List<ScoreUseRecord> scoreUseRecordList = scoreUseRecordDao.selectList(queryWrapper); + scoreUseRecordList.forEach(scoreUseRecord -> { + ScoreVipDetail scoreVipDetail = scoreVipDetailDao.selectById(scoreUseRecord.getScoreVipDetailId()); + if(scoreVipDetail!=null){ + if(DateTime.now().isAfter(scoreVipDetail.getValiditeTime())){ + //积分还有效 + scoreVipDetail.setRemainScore( scoreVipDetail.getRemainScore()+score); + scoreVipDetail.setUsedScore(scoreVipDetail.getUsedScore()-score); + scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_YX); + scoreVipDetailDao.updateById(scoreVipDetail); + scoreUseRecordDao.deleteById(scoreUseRecord.getId()); + } + } + + }); + } + + public void removeByBusinessId(String openId, Long vipId, Long oldBusinessId, int type){ + Long companyId=null; + if(openId!=null){ + companyId= bizUserDao.findByOpenId(openId).getCompanyId(); + }else if(vipId!=null){ + companyId= vipInfoDao.selectById(vipId).getCompanyId(); + }else{ + throw new IllegalArgumentException("vipId,openId必须有一个"); + } + if(oldBusinessId==null){ + throw new IllegalArgumentException("oldBusinessId必须有"); + } + QueryWrapper queryWrapper=new QueryWrapper(); + queryWrapper.eq("business_id",oldBusinessId); + queryWrapper.eq("company_id",companyId); + queryWrapper.eq("type",type); + scoreVipDetailDao.delete(queryWrapper); + scoreUseRecordDao.delete(queryWrapper); + } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopBizUserScoreAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopBizUserScoreAction.java index 2097b6c..3480da7 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopBizUserScoreAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopBizUserScoreAction.java @@ -1,25 +1,10 @@ package com.matrix.system.shopXcx.action; -import com.matrix.biz.bean.BizUser; import com.matrix.biz.service.BizUserService; -import com.matrix.core.anotations.RemoveRequestToken; -import com.matrix.core.anotations.SaveRequestToken; -import com.matrix.core.constance.MatrixConstance; -import com.matrix.core.pojo.AjaxResult; -import com.matrix.core.tools.StringUtils; -import com.matrix.core.tools.WebUtil; -import com.matrix.system.common.bean.SysUsers; -import com.matrix.system.shopXcx.bean.ShopScoreExchange; import com.matrix.system.shopXcx.dao.ShopScoreExchangeDao; -import com.matrix.system.shopXcx.pojo.ExchangeScorePOJO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.servlet.ModelAndView; - -import java.util.Date; /** @@ -40,11 +25,6 @@ * 记录编辑前的值Before_Edit_Value */ public static final String BEV = "ShopBizUserScore_BEV"; - - - - -\ } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java index dd0c18a..69fbbab 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopRefundRecordAction.java @@ -529,7 +529,7 @@ modifyMap.put("refundCharge", shopRefundRecord.getRefundMoney()); shopOrderDao.updateByMap(modifyMap); - rabiitMqTemplate.sendMsg(MQTaskRouting.SHOP_ORDER_REFUND+evn,shopOrder.getId()+""); + rabiitMqTemplate.sendMsg(MQTaskRouting.SHOP_ORDER_REFUND+evn,shopRefundRecord.getOrderId()+""); }catch (Exception e){ LogUtil.debug("退款成功,修改退款表和订单表状态出错。。。", id); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopShoppingCartAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopShoppingCartAction.java deleted file mode 100644 index c7e50a8..0000000 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/action/ShopShoppingCartAction.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.matrix.system.shopXcx.action; - -import com.matrix.core.constance.MatrixConstance; -import com.matrix.core.constance.SystemMessageCode; -import com.matrix.core.pojo.PaginationVO; -import com.matrix.core.tools.ModelUtils; -import com.matrix.core.tools.StringUtils; -import com.matrix.core.constance.SystemErrorCode; -import com.matrix.core.anotations.RemoveRequestToken; -import com.matrix.system.common.bean.SysUsers; -import com.matrix.system.hive.action.util.QueryUtil; -import com.matrix.system.shopXcx.dao.ShopShoppingCartDao; -import org.springframework.stereotype.Controller; -import com.matrix.core.exception.GlobleException; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import com.matrix.core.anotations.SaveRequestToken; -import com.matrix.core.pojo.AjaxResult; -import com.matrix.core.tools.WebUtil; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.List; -import java.util.Map; -import com.matrix.system.shopXcx.bean.ShopShoppingCart; -import org.springframework.web.servlet.ModelAndView; - -/** - * @description 购物车 - * @author jiangyouyao - * @date 2019-06-12 19:09 - */ -@Controller -@RequestMapping(value = "admin/shopShoppingCart") -public class ShopShoppingCartAction { - - @Autowired - private ShopShoppingCartDao shopShoppingCartDao; - - //记录编辑前的值Before_Edit_Value - public static final String BEV="ShopShoppingCart_BEV"; - - - /** - * 列表显示 - */ - @RequestMapping(value = "/showList") - public @ResponseBody AjaxResult showList(ShopShoppingCart shopShoppingCart, PaginationVO pageVo) { - QueryUtil.setQueryLimitCom(shopShoppingCart); - List<ShopShoppingCart> dataList = shopShoppingCartDao.selectInPage(shopShoppingCart, pageVo); - AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, - shopShoppingCartDao.selectTotalRecord(shopShoppingCart)); - return result; - } - - /** - * 新增 - */ - @RemoveRequestToken - @RequestMapping(value = "/addShopShoppingCart") - public @ResponseBody AjaxResult addShopShoppingCart(ShopShoppingCart shopShoppingCart) { - SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); - shopShoppingCart.setCreateBy(user.getSuName()); - shopShoppingCart.setUpdateBy(user.getSuName()); - shopShoppingCart.setCompanyId(user.getCompanyId()); - int i=shopShoppingCartDao.insert(shopShoppingCart); - if(i > 0){ - return new AjaxResult(AjaxResult.STATUS_SUCCESS, SystemMessageCode.ADD_SUCCES, "购物车"); - }else { - throw new GlobleException(SystemErrorCode.DATA_ADD_FAIL); - } - } - - - - - - /** - * 修改 - */ - @RemoveRequestToken - @RequestMapping(value = "/modifyShopShoppingCart") - public @ResponseBody AjaxResult modifyShopShoppingCart(ShopShoppingCart newShopShoppingCart) { - ShopShoppingCart oldShopShoppingCart = WebUtil.getSessionAttribute(BEV); - int i = 0; - Map<String, Object> modifyMap = null; - try { - if (!ModelUtils.isModified(oldShopShoppingCart, newShopShoppingCart)) { - i = MatrixConstance.DML_SUCCESSS; - } - modifyMap = ModelUtils.comparePojo2Map(oldShopShoppingCart, newShopShoppingCart); - } catch (Exception e) { - throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL, e, newShopShoppingCart); - } - if (modifyMap.size() > 0) { - modifyMap.put("cartId", oldShopShoppingCart.getCartId()); - shopShoppingCartDao.updateByMap(modifyMap); - } - i = MatrixConstance.DML_SUCCESSS; - WebUtil.removeSessionAttribute(BEV); - if (i > 0) { - return new AjaxResult(AjaxResult.STATUS_SUCCESS, SystemMessageCode.UPDATE_SUCCES, "购物车"); - } else { - throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL); - } - } - - - - - /** - * 进入修改界面 - */ - @SaveRequestToken - @RequestMapping(value = "/editForm") - public ModelAndView editForm(Integer id) { - ShopShoppingCart shopShoppingCart = new ShopShoppingCart(); - ModelAndView modelAndView = new ModelAndView("admin/shopShoppingCart-form"); - if (id != null) { - shopShoppingCart = shopShoppingCartDao.selectById(id); - WebUtil.setSessionAttribute(BEV, shopShoppingCart); - } - modelAndView.addObject("obj",shopShoppingCart); - return modelAndView; - } - - - /** - * 删除 - */ - @RequestMapping(value = "/del") - public @ResponseBody AjaxResult del(String keys) { - List<String> ids = StringUtils.strToCollToString(keys, ","); - int i = shopShoppingCartDao.deleteByIds(ids); - if (i > 0) { - return new AjaxResult(AjaxResult.STATUS_SUCCESS, SystemMessageCode.DELETE_SUCCES, i); - } else { - throw new GlobleException(SystemErrorCode.DATA_DELETE_FAIL); - } - } - -} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java index 7c7577a..f1e3fe5 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WXShopOrderAction.java @@ -2,40 +2,28 @@ import com.matrix.biz.bean.BizUser; import com.matrix.component.redis.RedisUserLoginUtils; -import com.matrix.component.tools.WxUtils; import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData; import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil; import com.matrix.core.constance.SystemErrorCode; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; -import com.matrix.core.tools.StringUtils; -import com.matrix.system.common.constance.AppConstance; -import com.matrix.system.constance.Dictionary; -import com.matrix.system.hive.bean.ShoppingGoods; import com.matrix.system.hive.dao.ShoppingGoodsDao; -import com.matrix.system.shopXcx.api.pojo.AddShopOrderPOJO; -import com.matrix.system.shopXcx.api.pojo.CreateOrderDto; import com.matrix.system.shopXcx.api.pojo.OrderInfoQueryPOJO; +import com.matrix.system.shopXcx.api.pojo.ShopOrderDto; +import com.matrix.system.shopXcx.api.service.OrderCouponGroupService; import com.matrix.system.shopXcx.api.service.ShoppingCartService; import com.matrix.system.shopXcx.api.service.WXShopOrderService; import com.matrix.system.shopXcx.api.service.WxShopCouponService; import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil; -import com.matrix.system.shopXcx.api.vo.CouponReceiveInfoVO; -import com.matrix.system.shopXcx.api.vo.ShopCartVo; -import com.matrix.system.shopXcx.bean.*; +import com.matrix.system.shopXcx.bean.ShopOrder; import com.matrix.system.shopXcx.dao.*; -import com.matrix.system.shopXcx.dto.DiscountExplain; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; /** @@ -82,105 +70,25 @@ private ShopOrderDetailsDao shopOrderDetailsDao; @Autowired + OrderCouponGroupService orderCouponGroupService; + + @Autowired ShopOrderDao shopOrderDao; /** * 计算购物车订单价格 * - * @param addShopOrderPOJO + * @param shopOrderDto * @return * @throws Exception */ @PostMapping(value = "/calculationCartOrder") public @ResponseBody - AjaxResult calculationCartOrder(@RequestBody AddShopOrderPOJO addShopOrderPOJO) throws Exception { - BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); //计算购物车中物品的优惠信息 - - List<ShopCartVo> cartList = shoppingCartService.findUserCartList(addShopOrderPOJO.getShopId()); + AjaxResult calculationCartOrder(@RequestBody ShopOrderDto shopOrderDto) throws Exception { - //取出购物车中选中的产品 - List<ShopShoppingCart> buyCart = new ArrayList<>(); - - //取出购物车中没有参加店铺活动的产品,和参加了店铺活动但是活动没有达到标准的产品,用来计算是否可以使用优惠券 - List<ShopShoppingCart> notCouponuyCart = new ArrayList<>(); - for (ShopCartVo shopCartVo : cartList) { - for (ShopShoppingCart shopShoppingCart : shopCartVo.getCartList()) { - if (shopShoppingCart.getIsSelected() == 1) { - buyCart.add(shopShoppingCart); - if (shopCartVo.getCoupon() == null || !shopCartVo.isSatisfactionCoupon()) { - notCouponuyCart.add(shopShoppingCart); - } - } - } - } - //获取当前购物车产品可用的优惠券 - List<CouponReceiveInfoVO> usefulCoupon = wxShopCouponService.getCartVoCouponList(bizUser.getCompanyId(),notCouponuyCart); - - //获取用户使用的优惠券 - CouponReceiveInfoVO shopCoupon = new CouponReceiveInfoVO(); - if (addShopOrderPOJO.getCouponReceiveId() == null) { - //如果用户没有选择优惠券则默认选优惠金额最高的 - //计算使用优惠券后的价格 - if (CollectionUtils.isNotEmpty(usefulCoupon)) { - //根据优惠券ID用户ID查询优惠券信息 - shopCoupon = usefulCoupon.get(0); - } - } else if (addShopOrderPOJO.getCouponReceiveId() != 1) { - //用户选择了优惠券 - shopCoupon = shopCouponRecordDao.selectMyCouponByReceiveId(addShopOrderPOJO.getCouponReceiveId()); - } else { - //用户不使用优惠券 - } - - - //计算收货地址: - - ShopReceiveAddress shopReceiveAddress = null; - if (addShopOrderPOJO.getReceiveAddrId() == null) { - //如果没有传收货地址则默认收货地址 - shopReceiveAddress = shopReceiveAddressDao.selectDefaultAddress(bizUser.getOpenId()); - if (shopReceiveAddress != null) { - addShopOrderPOJO.setReceiveAddrId(shopReceiveAddress.getAddrId()); - } - } else { - shopReceiveAddress = shopReceiveAddressDao.selectById(addShopOrderPOJO.getReceiveAddrId()); - addShopOrderPOJO.setReceiveAddrId(shopReceiveAddress.getAddrId()); - - } - - - //得到订单计价说明 - DiscountExplain discountExplain = shopOrderService.buildDiscountExplain(cartList, shopCoupon.getReceiveId(), bizUser.getCompanyId()); - - AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, buyCart, buyCart.size()); - //结算金额信息 - result.putInMap("discountExplain", discountExplain); - - - //用户优惠券 - result.putInMap("usefulCoupon", usefulCoupon); - //用户选中的优惠券 - result.putInMap("shopCoupon", shopCoupon); - - - //默认地址 - String deliverySelect = "立即配送"; - if (shopReceiveAddress != null) { - if (StringUtils.isNotBlank(shopReceiveAddress.getSchool())) { - deliverySelect = "立即配送"; - } else { - deliverySelect = "物流配送"; - } - } - result.putInMap("defaultAddress", shopReceiveAddress); - //配送方式 - result.putInMap("deliverySelect", deliverySelect); - - - result.setRows(buyCart); - return result; + return shopOrderService.buildDiscountExplain(shopOrderDto); } @@ -190,129 +98,17 @@ /** * 新增订单 * - * @param addShopOrderPOJO + * @param shopOrderDto * @return */ @PostMapping(value = "/addShopOrder") public @ResponseBody - AjaxResult addShopOrder(@RequestBody AddShopOrderPOJO addShopOrderPOJO) throws Exception { - return shopOrderService.createShopOrder(addShopOrderPOJO); + AjaxResult addShopOrder(@RequestBody ShopOrderDto shopOrderDto) throws Exception { + return shopOrderService.createShopOrder(shopOrderDto); } - /** - * 新增订单 - * 本方法抛弃,不再使用,本方法是单单个产品购买 - * 在多产品的时候不适合 - * @return - */ - @Deprecated - @PostMapping(value = "/addShopOrder2") - public - @ResponseBody - AjaxResult addShopOrder2(@RequestBody CreateOrderDto createOrderDto) throws Exception { - - - //校验收货地址 - ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(createOrderDto.getReceiveAddrId()); - if (shopReceiveAddress == null) { - return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择正确的收获地址"); - } - - - BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); - ShopSku shopSku = shopSkuDao.selectById(createOrderDto.getSkuId()); - ShopProduct shopProduct = shopProductDao.selectById(createOrderDto.getProductId()); - String stokCode = shopSku.getStockCode(); - - ShopOrder shopOrder = new ShopOrder(); - //查询绑定的产品是否为家居产品 - if (StringUtils.isNotBlank(stokCode)) { - ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(Long.parseLong(stokCode)); - if (shoppingGoods != null) { - //根据购买的产品设置订单类型 - if (Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(shoppingGoods.getGoodType())) { - shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); - } else { - shopOrder.setOrderType(ShopOrder.ORDER_TYPE_SERVICE); - } - } else { - shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); - } - } - - List<ShopOrderDetails> details = new ArrayList<>(); - Integer cartCount = 0; - ShopOrderDetails shopOrderDetails = new ShopOrderDetails(); - shopOrderDetails.setCreateBy(AppConstance.SYSTEM_USER); - shopOrderDetails.setUpdateBy(AppConstance.SYSTEM_USER); - shopOrderDetails.setpId(createOrderDto.getProductId()); - shopOrderDetails.setsId(createOrderDto.getSkuId()); - shopOrderDetails.setPrice(shopSku.getPrice()); - shopOrderDetails.setCount(createOrderDto.getNumber()); - shopOrderDetails.setsTitle(shopProduct.getTitle() + shopSku.getName()); - shopOrderDetails.setDiscountAmount(BigDecimal.ZERO); - shopOrderDetails.setTotalPrice(shopOrderDetails.getPrice().multiply(BigDecimal.valueOf(shopOrderDetails.getCount()))); - details.add(shopOrderDetails); - cartCount += shopOrderDetails.getCount(); - - - //TODO 更新库存和销量[考虑和erp库存联动] - wxShopOrderUtil.updateProductAndSkuInfo(details); - - //用户openId - shopOrder.setUserId(bizUser.getOpenId()); - shopOrder.setCreateBy("微信小程序生成"); - shopOrder.setUpdateBy("微信小程序生成"); - shopOrder.setCommodityPrice(shopOrderDetails.getTotalPrice()); - shopOrder.setPurchaseQuantity(cartCount); - //购买方式 - shopOrder.setShippingMethod("物流配送"); - //生成订单号 - shopOrder.setOrderNo(WxUtils.getOrderNum()); - //设置支付状态 - shopOrder.setPayStatus(ShopOrder.ORDER_STATUS_WAIT_PAY); - //设置订单状态 - shopOrder.setOrderStatus(ShopOrder.ORDER_STATUS_WAIT_SEND); - - //设置退款费用(注:下次优化从数据字典表获取) - shopOrder.setRefundCharge(BigDecimal.ZERO); - //客户电话 - shopOrder.setUserTel(shopReceiveAddress.getAddrTelephone()); - //客户姓名 - shopOrder.setUserName(shopReceiveAddress.getAddrLiaisonman()); - //备注 - shopOrder.setRemarks(createOrderDto.getRemarks()); - //删除标识 - shopOrder.setDelFlag(AppConstance.DATA_USEABLE); - //微信订单号 - shopOrder.setWxOrderNo(""); - //微信支付结果 - shopOrder.setPayResult(ShopOrder.ORDER_WX_STATUS_WAIT_PAY); - //如果没有提交购买方式或配送方式不是物流 - //获取邮费 - shopOrder.setOrderMoney(shopOrderDetails.getTotalPrice()); - shopOrder.setStoreId(createOrderDto.getShopId()); - - shopOrderDao.insert(shopOrder); - - wxShopOrderUtil.insertSendPackageInfo(shopOrder, "物流配送", shopReceiveAddress); - - //给订单详情表添加订单ID - shopOrderDetails.setOrderId(shopOrder.getId()); - - shopOrderDetailsDao.insert(shopOrderDetails); - - - BrandWCPayRequestData payData = startPayment(shopOrder); - AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(payData)); - result.putInMap("orderId", shopOrder.getId()); - - return result; - - - } @Value("${wx_pay_debug_onoff}") private boolean isDebug; 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..d5423a3 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; @@ -196,6 +201,7 @@ rabiitMqTemplate.sendTopicMsg(RabbitMqConfig.MQ_EXCHANGE_TOPIC +evn, MQTaskRouting.CREATE_ORDER+evn, orderId); + threadResult.putInMap("status", "success"); resXml = AppConstance.RESULT_XML_SUCCESS; diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxProductAttributeAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxProductAttributeAction.java index 2adf5f8..07dbded 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxProductAttributeAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxProductAttributeAction.java @@ -28,9 +28,9 @@ @Autowired private ShopProductAttributeDao shopProductAttributeDao; - @RequestMapping("/getByCode/{shopId}/{attrCode}") + @RequestMapping("/getByCode/{attrCode}") @ResponseBody - public AjaxResult getProductAttributeByCode(@PathVariable("shopId") Long shopId, @PathVariable("attrCode") String attrCode){ + public AjaxResult getProductAttributeByCode(@PathVariable("attrCode") String attrCode){ if(!StringUtils.isNotBlank(attrCode)){ return new AjaxResult(AjaxResult.STATUS_FAIL,"属性编码不能为空"); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java index b89cac9..611820b 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesProductAction.java @@ -5,7 +5,6 @@ import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.shopXcx.api.dto.SaleProductDto; import com.matrix.system.shopXcx.bean.ShopProduct; -import com.matrix.system.shopXcx.bean.ShopProductAttribute; import com.matrix.system.shopXcx.dao.ShopProductAttributeDao; import com.matrix.system.shopXcx.dao.ShopProductDao; import com.matrix.system.shopXcx.dao.ShopSkuDao; @@ -47,14 +46,13 @@ }) public AjaxResult getShopProductShowList(@RequestBody @Validated SaleProductDto saleProductDto) { ShopProduct shopProduct=new ShopProduct(); - - ShopProductAttribute fxsc = shopProductAttributeDao.selectByCode("fxsc", HostInterceptor.getCompanyId()); shopProduct.setLimit(saleProductDto.getPageSize()); shopProduct.setOffset((saleProductDto.getPageNum()-1)* saleProductDto.getPageSize()); + shopProduct.setCategoryId(saleProductDto.getCategoryId()); shopProduct.setDelFlag(AppConstance.DATA_USEABLE); shopProduct.setStatus(AppConstance.IS_PUTAWAY); + shopProduct.setAbleSales(ShopProduct.ABLE_SALES); shopProduct.setCompanyId(HostInterceptor.getCompanyId()); - shopProduct.setAttrs(fxsc.getAttrId()+""); List<ShopProduct> shopProducts = shopProductDao.selectByModelWx(shopProduct); shopProducts.forEach(item->item.setSkus(shopSkuDao.selectByPid(item.getId()))); AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, shopProducts); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java index d2d94e3..7e81a21 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java @@ -23,6 +23,7 @@ import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao; import com.matrix.system.fenxiao.entity.ShopSalesmanApply; import com.matrix.system.fenxiao.service.ShopSalesmanApplyService; +import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.shopXcx.api.WeChatApiTools; import com.matrix.system.shopXcx.dao.ShopProductDao; import com.matrix.system.shopXcx.vo.SalesmanApplyCondition; @@ -294,9 +295,13 @@ case FenxiaoSettingConstant.FX_APPLY_CONDITION_XFZDCP: applyConditionInfo.setCondition("消费指定产品并确认收货"); List<String> strings = StringUtils.strToColl(applyCondition.getParamValue1(), ","); - applyConditionInfo.setProductList( - shopProductDao.selectByIds( - strings.stream().filter(i->StringUtils.isNotBlank(i)).map(i -> Integer.parseInt(i + "")).distinct().collect(Collectors.toList()))); + List<Integer> ids = strings.stream().filter(i -> StringUtils.isNotBlank(i)).map(i -> Integer.parseInt(i + "")).distinct().collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(ids)){ + applyConditionInfo.setProductList(shopProductDao.selectByIds(ids)); + }else{ + return AjaxResult.buildFailInstance("未配置消费产品,请联系管理员"); + } + break; case FenxiaoSettingConstant.FX_APPLY_CONDITION_XFRYCP: //判断用户是否有确认收货的产品 diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxScoreProductAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxScoreProductAction.java new file mode 100644 index 0000000..ebdc64d --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxScoreProductAction.java @@ -0,0 +1,72 @@ +package com.matrix.system.shopXcx.api.action; + +import com.matrix.core.pojo.AjaxResult; +import com.matrix.core.tools.StringUtils; +import com.matrix.system.common.constance.AppConstance; +import com.matrix.system.common.interceptor.HostInterceptor; +import com.matrix.system.shopXcx.api.dto.SaleProductDto; +import com.matrix.system.shopXcx.api.dto.ScoreProductDto; +import com.matrix.system.shopXcx.bean.ShopProduct; +import com.matrix.system.shopXcx.bean.ShopProductAttribute; +import com.matrix.system.shopXcx.dao.ShopProductAttributeDao; +import com.matrix.system.shopXcx.dao.ShopProductDao; +import com.matrix.system.shopXcx.dao.ShopSkuDao; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author jyy + * @date 2021-03-10 + **/ +@Api(tags = "积分商品类") +@RestController +@RequestMapping(value = "/wxapi/scoreProduct") +public class WxScoreProductAction { + + @Autowired + private ShopProductDao shopProductDao; + + @Autowired + private ShopSkuDao shopSkuDao; + + @Autowired + ShopProductAttributeDao shopProductAttributeDao; + + @ApiOperation(value = "查询积分商品", notes = "") + @PostMapping(value = "/getScoreProductList") + @ApiResponses({ + @ApiResponse(code = 200, message = "ok", response=SaleProductDto.class) + }) + public AjaxResult getShopProductShowList(@RequestBody @Validated ScoreProductDto scoreProductDto) { + ShopProduct shopProduct=new ShopProduct(); + shopProduct.setLimit(scoreProductDto.getPageSize()); + shopProduct.setOffset((scoreProductDto.getPageNum()-1)* scoreProductDto.getPageSize()); + shopProduct.setScoreCategoryId(scoreProductDto.getScoreCategoryId()); + shopProduct.setDelFlag(AppConstance.DATA_USEABLE); + shopProduct.setStatus(AppConstance.IS_PUTAWAY); + shopProduct.setAbleScorePay(ShopProduct.PAYFOR_SCORE); + shopProduct.setCompanyId(HostInterceptor.getCompanyId()); + //根据属性查询 + if(StringUtils.isNotBlank(scoreProductDto.getAttrCode())){ + ShopProductAttribute jfscrmtj = shopProductAttributeDao.selectByCode("jfscrmtj", HostInterceptor.getCompanyId()); + if(jfscrmtj!=null){ + shopProduct.setAttrs(jfscrmtj.getAttrId()+""); + } + } + List<ShopProduct> shopProducts = shopProductDao.selectByModelWx(shopProduct); + shopProducts.forEach(item->item.setSkus(shopSkuDao.selectByPid(item.getId()))); + return AjaxResult.buildSuccessInstance(shopProducts); + } + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java index 3e3e4d5..8b408f8 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopProduct.java @@ -146,7 +146,6 @@ @ResponseBody public AjaxResult getShopProductShowList(@RequestBody ShopProduct shopProduct) { List<ShopProduct> shopProducts = null; - //查询是否匹配优惠条件 ShopCoupon shopCoupon = shopCouponDao.getCouponByTitle(shopProduct.getTitle(),HostInterceptor.getCompanyId()); if (shopCoupon != null && shopProduct.getOffset() < 1) { 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..9dc6cea 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,104 +1,67 @@ package com.matrix.system.shopXcx.api.action; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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 com.matrix.system.score.dao.ScoreUseRecordDao; +import com.matrix.system.score.dao.ScoreVipDetailDao; +import com.matrix.system.shopXcx.api.dto.ScoreFlowDto; +import com.matrix.system.shopXcx.api.vo.ScoreUseRecordVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; 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; +import org.springframework.web.bind.annotation.RestController; /** - * @description 用户积分控制器 * @author jyy - * @date 2019-08-09 15:10 + * @date 2021-03-22 15:10 */ -@Controller -@RequestMapping(value="/wxapi/shopScoreRecord") -@CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags = "用户积分接口类") +@RestController +@RequestMapping(value = "/wxapi/score") public class WxShopScoreAction { - @Autowired - private ShopScoreRecordDao shopScoreRecordDao; - @Autowired - private ShopScoreExchangeDao shopScoreExchangeDao; - @Autowired - private RedisUserLoginUtils redisUserLoginUtils; - @Autowired - private BizUserService bizUserService; + @Autowired + RedisUserLoginUtils redisUserLoginUtils; + + @Autowired + ScoreUseRecordDao scoreUseRecordDao; + + @Autowired + ScoreVipDetailDao scoreVipDetailDao; + + @ApiOperation(value = "获取积分流水", notes = "") + @PostMapping(value = "/getFlowList") + @ApiResponses({ + @ApiResponse(code = 200, message = "ok", response = ScoreUseRecordVo.class) + }) + AjaxResult getFlowList(@RequestBody @Validated ScoreFlowDto scoreFlowDto) { + BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); + Page<ScoreUseRecordVo> page=new Page<>(scoreFlowDto.getPageNum(),scoreFlowDto.getPageSize()); + scoreFlowDto.setUserId(loginUser.getOpenId()); + IPage<ScoreUseRecordVo> shopScoreRecord = scoreUseRecordDao.selectFlowList(page, scoreFlowDto); + AjaxResult result=AjaxResult.buildSuccessInstance(shopScoreRecord.getRecords()); + return result; + } + + @ApiOperation(value = "获取用户积分", notes = "") + @PostMapping(value = "/getUserScore") + @ApiResponses({ + @ApiResponse(code = 200, message = "ok", response = AjaxResult.class) + }) + AjaxResult getUserScore() { + BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); + AjaxResult result=AjaxResult.buildSuccessInstance(scoreVipDetailDao.selectUserTotalScore(loginUser.getOpenId(),null)); + return result; + } - /** - * 查询我的获得积分列表 - * @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/WxShoppingCartAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShoppingCartAction.java index 1afabd6..4508e1c 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShoppingCartAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShoppingCartAction.java @@ -1,25 +1,27 @@ package com.matrix.system.shopXcx.api.action; +import com.matrix.biz.bean.BizUser; +import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.constance.SystemErrorCode; import com.matrix.core.constance.SystemMessageCode; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.StringUtils; -import com.matrix.biz.bean.BizUser; -import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.system.common.constance.AppConstance; - -import com.matrix.system.shopXcx.bean.ShopShoppingCart; -import com.matrix.system.shopXcx.bean.ShopSku; -import com.matrix.system.shopXcx.dao.ShopShoppingCartDao; -import com.matrix.system.shopXcx.dao.ShopSkuDao; +import com.matrix.system.common.interceptor.HostInterceptor; +import com.matrix.system.shopXcx.api.service.OrderCouponGroupService; import com.matrix.system.shopXcx.api.service.ShoppingCartService; import com.matrix.system.shopXcx.api.service.WxShopCouponService; import com.matrix.system.shopXcx.api.vo.ShopCartBillVo; import com.matrix.system.shopXcx.api.vo.ShopCartVo; +import com.matrix.system.shopXcx.bean.ShopShoppingCart; +import com.matrix.system.shopXcx.bean.ShopSku; +import com.matrix.system.shopXcx.dao.ShopShoppingCartDao; +import com.matrix.system.shopXcx.dao.ShopSkuDao; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.HashMap; @@ -32,7 +34,8 @@ * @date 2019-06-12 19:15 */ @CrossOrigin(origins = "*", maxAge = 3600) -@Controller +@Api(tags = "购物车类") +@RestController @RequestMapping(value = "wxapi/ShoppingCart") public class WxShoppingCartAction { @Autowired @@ -49,13 +52,10 @@ @Autowired ShopSkuDao skuDao; + @Autowired + OrderCouponGroupService orderCouponGroupService; - /** - * 根据ID删除购物车 - * - * @param - * @return - */ + @ApiOperation(value = "根据ID删除购物车", notes = "") @PostMapping("/deleteByCartId/{cartId}") @ResponseBody public AjaxResult deleteByCartId(@PathVariable("cartId") Integer cartId) { @@ -66,18 +66,17 @@ return new AjaxResult(AjaxResult.STATUS_SUCCESS, "删除成功"); } - /** - * 根据用户ID查询购物车 没有分页 - * - * @param - * @return - */ + + @ApiOperation(value = "根据用户ID查询购物车 没有分页", notes = "") @PostMapping("/findShoppingCart") @ResponseBody public AjaxResult getShoppingCartByUserId(@RequestBody ShopShoppingCart shoppingCart) { - List<ShopCartVo> cartList = shoppingCartService.findUserCartList(shoppingCart.getShopId()); - AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, cartList, cartList.size()); - ShopCartBillVo shopCartBill = shoppingCartService.buildShopCartBillVo(cartList); + BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); + String userId = loginUser.getOpenId(); + List<ShopShoppingCart> list = shoppingCartDao.selectByCartUserId(shoppingCart.getShopId(),userId); + List<ShopCartVo> shopCartVoList = shoppingCartService.buildShopCart(list); + AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, shopCartVoList, shopCartVoList.size()); + ShopCartBillVo shopCartBill = shoppingCartService.buildShopCartBillVo(shopCartVoList); result.putInMap("billTotal", shopCartBill.getBillTotal().stripTrailingZeros().toPlainString()); result.putInMap("selectCount", shopCartBill.getSelectCount()); result.putInMap("cartCount", shopCartBill.getCartCount()); @@ -86,9 +85,8 @@ return result; } - /** - * 批量删除 - */ + + @ApiOperation(value = "批量删除", notes = "") @PostMapping(value = "/delShoppingCart/{keys}") public @ResponseBody @@ -102,6 +100,7 @@ } } + @ApiOperation(value = "查询微商城购物车数量", notes = "") @PostMapping(value = "/getUserCartCount/{shopId}") public @ResponseBody @@ -125,9 +124,9 @@ AjaxResult saveShoppingCart(@RequestBody ShopShoppingCart shoppingCart) { //查询到sku设置对应的产品id - ShopSku sku= skuDao.selectById(shoppingCart.getCartSkuId()); - if(sku==null){ - return new AjaxResult(AjaxResult.STATUS_FAIL,"无效的产品id"); + ShopSku sku = skuDao.selectById(shoppingCart.getCartSkuId()); + if (sku == null) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "无效的产品id"); } shoppingCart.setCartProductId(sku.getpId()); @@ -136,6 +135,7 @@ shoppingCart.setCreateBy(loginUser.getOpenId()); shoppingCart.setUpdateBy(loginUser.getOpenId()); shoppingCart.setCartUserId(loginUser.getOpenId()); + shoppingCart.setCompanyId(HostInterceptor.getCompanyId()); ShopShoppingCart shoppCartLimt = shoppingCartDao.selectBuyLimit(shoppingCart.getCartProductId(), shoppingCart.getCartSkuId()); // Integer buyLimitNum = 0; @@ -258,7 +258,7 @@ * @param * @return */ - @RequestMapping("/updateCartSelected") + @PostMapping("/updateCartSelected") @ResponseBody public AjaxResult updateCartSelected(@RequestBody ShopShoppingCart shoppingCart) { Map<String, Object> modifyMap = new HashMap<>(); @@ -274,13 +274,12 @@ * @param * @return */ - @RequestMapping("/updateCartAllSelected/{shopId}/{isSelected}") + @PostMapping("/updateCartAllSelected/{shopId}/{isSelected}") @ResponseBody public AjaxResult updateCartAllSelected(@PathVariable("isSelected") Integer isSelected, @PathVariable("shopId") Long shopId) { - Map<String, Object> modifyMap = new HashMap<>(); BizUser user = redisUserLoginUtils.getLoginUser(BizUser.class); - shoppingCartDao.updateAllSelected(user.getOpenId(),shopId, isSelected); + shoppingCartDao.updateAllSelected(user.getOpenId(), shopId, isSelected); return new AjaxResult(AjaxResult.STATUS_SUCCESS, "修改成功"); } } 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 a428860..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 @@ -168,7 +168,16 @@ // TODO 赋值操作 int i = bizUserService.saveUserInfo(bizUser); + checkNeedToBeSalesman(bizUser, loginUser); + if (i == 0) { + return new AjaxResult(AjaxResult.STATUS_FAIL, "更新失败"); + } + return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(bizUser)); + } + + + void checkNeedToBeSalesman(BizUser bizUser, BizUser loginUser) { //查询是否需要自动成为分销员 if ((loginUser.getIsSales() == null || loginUser.getIsSales() == 2) && StringUtils.isNotBlank(bizUser.getNickName())) {//目前还不是分销员 @@ -181,15 +190,16 @@ queryWrapper.eq("apply_status", ShopSalesmanApply.APPLY_STATUS_DSH); ShopSalesmanApply shopSalesmanApply = salesmanApplyDao.selectOne(queryWrapper); if (shopSalesmanApply == null) {//没有待审核记录 - shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getOpenId(), null, null, 2); + try { + shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getOpenId(), null, null, 2); + }catch (Exception e){ + LogUtil.debug(e.getMessage()); + } + } } } } - if (i == 0) { - return new AjaxResult(AjaxResult.STATUS_FAIL, "更新失败"); - } - return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(bizUser)); } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreFlowDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreFlowDto.java new file mode 100644 index 0000000..b1a94b3 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreFlowDto.java @@ -0,0 +1,26 @@ +package com.matrix.system.shopXcx.api.dto; + +import com.matrix.core.pojo.BasePageQueryDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ScoreFlowDto", description = "积分流水查询参数接收类") +public class ScoreFlowDto extends BasePageQueryDto { + + @NotNull(message = "查询月份不能为空") + @ApiModelProperty(value = "查询月份",example = "2021-03") + private String queryTime; + + + @ApiModelProperty(value = "收支类型 不传全部,1,收入,2支出", example = "1") + private Integer revenueType; + + @ApiModelProperty(hidden = true) + private String userId; + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreProductDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreProductDto.java new file mode 100644 index 0000000..cbb8a51 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreProductDto.java @@ -0,0 +1,20 @@ +package com.matrix.system.shopXcx.api.dto; + +import com.matrix.core.pojo.BasePageQueryDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ScoreProductDto", description = "积分产品查询参数接收类") +public class ScoreProductDto extends BasePageQueryDto { + + @ApiModelProperty(value = "产品分类", example = "1") + private Integer scoreCategoryId; + + + @ApiModelProperty(value = "属性编码", example = "jfscrmtj") + private String attrCode; + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/AddShopOrderPOJO.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/AddShopOrderPOJO.java deleted file mode 100644 index 3398072..0000000 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/AddShopOrderPOJO.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.matrix.system.shopXcx.api.pojo; - -import java.util.List; - -/** - * @author jyy - */ -public class AddShopOrderPOJO { - - - /** - * 收货地址ID - */ - private Integer receiveAddrId; - - /** - * 配送方式(1=物流,2=门店自取) - */ - private String deliverySelect; - - /** - * 配送门店ID - */ - private Long shopId; - - /** - * 优惠券记录id - */ - private Integer couponReceiveId; - - - - /** - * 订单备注 - */ - private String remarks; - - /** - * 购买商品规格列表详情 - */ - private List<OrderProductSkuPOJO> skuList; - - - public Integer getReceiveAddrId() { - return receiveAddrId; - } - - public void setReceiveAddrId(Integer receiveAddrId) { - this.receiveAddrId = receiveAddrId; - } - - public String getDeliverySelect() { - return deliverySelect; - } - - public void setDeliverySelect(String deliverySelect) { - this.deliverySelect = deliverySelect; - } - - public Long getShopId() { - return shopId; - } - - public void setShopId(Long shopId) { - this.shopId = shopId; - } - - public Integer getCouponReceiveId() { - return couponReceiveId; - } - - public void setCouponReceiveId(Integer couponReceiveId) { - this.couponReceiveId = couponReceiveId; - } - - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - - public List<OrderProductSkuPOJO> getSkuList() { - return skuList; - } - - public void setSkuList(List<OrderProductSkuPOJO> skuList) { - this.skuList = skuList; - } -} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/CalculatePostagePOJO.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/CalculatePostagePOJO.java index ca95377..ccf8fef 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/CalculatePostagePOJO.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/CalculatePostagePOJO.java @@ -19,7 +19,7 @@ /** * 购买规格信息列表 */ - private List<OrderProductSkuPOJO> skuList; + private List<OrderItemDto> skuList; public Integer getAddrId() { @@ -38,11 +38,11 @@ this.couponId = couponId; } - public List<OrderProductSkuPOJO> getSkuList() { + public List<OrderItemDto> getSkuList() { return skuList; } - public void setSkuList(List<OrderProductSkuPOJO> skuList) { + public void setSkuList(List<OrderItemDto> skuList) { this.skuList = skuList; } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderCouponGroup.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderCouponGroup.java new file mode 100644 index 0000000..7de34e4 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderCouponGroup.java @@ -0,0 +1,43 @@ +package com.matrix.system.shopXcx.api.pojo; + +import com.matrix.system.shopXcx.api.vo.CouponReceiveInfoVO; +import com.matrix.system.shopXcx.bean.ShopCoupon; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 购物车前台展示对象 + */ +@Data +public class OrderCouponGroup { + + private ShopCoupon coupon; + + //是否满足优惠 + private boolean satisfactionCoupon; + + private List<OrderItemDto> orderItemDtos; + + //提示语 + private String msg=""; + + //优惠小计金额 + private BigDecimal subtotal=BigDecimal.ZERO; + + //原价 + private BigDecimal srcPrice=BigDecimal.ZERO; + + //优惠金额 + private BigDecimal couponPrice=BigDecimal.ZERO; + /** + * 抵用积分 + */ + private BigDecimal scorePay = BigDecimal.ZERO; + + private CouponReceiveInfoVO couponReceiveInfoVO; + + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderItemDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderItemDto.java new file mode 100644 index 0000000..de86b06 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderItemDto.java @@ -0,0 +1,47 @@ +package com.matrix.system.shopXcx.api.pojo; + +import com.matrix.system.shopXcx.bean.ShopCoupon; +import com.matrix.system.shopXcx.bean.ShopProduct; +import com.matrix.system.shopXcx.bean.ShopSku; +import lombok.Data; + +import java.util.List; + +/** + * @author jyy + */ +@Data +public class OrderItemDto { + /** + * 产品ID + */ + private Integer productId; + /** + * 产品规格ID + */ + private Integer skuId; + + private ShopProduct shopProduct; + + private ShopSku shopSku; + + /** + * 购买数量 + */ + private Integer count; + + /** + * 支付方式1 直接购买 2,积分兑换 + */ + private Integer payType; + + /** + * 购物车id + */ + private Integer cartId; + + + private List<ShopCoupon> shopCoupons; + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderProductSkuPOJO.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderProductSkuPOJO.java deleted file mode 100644 index 3e0b92b..0000000 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/OrderProductSkuPOJO.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.matrix.system.shopXcx.api.pojo; - -/** - * @author jyy - */ -public class OrderProductSkuPOJO { - - /** - * 产品规格ID - */ - private Integer skuId; - - /** - * 购买数量 - */ - private Integer count; - - - public Integer getSkuId() { - return skuId; - } - - public void setSkuId(Integer skuId) { - this.skuId = skuId; - } - - public Integer getCount() { - return count; - } - - public void setCount(Integer count) { - this.count = count; - } -} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java new file mode 100644 index 0000000..ad131b4 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/pojo/ShopOrderDto.java @@ -0,0 +1,52 @@ +package com.matrix.system.shopXcx.api.pojo; + +import lombok.Data; + +import java.util.List; + +/** + * @author jyy + */ +@Data +public class ShopOrderDto { + + + public static final Integer JOIN_ACTIVE = 1; + /** + * 收货地址ID + */ + private Integer receiveAddrId; + + /** + * 配送方式(1=物流,2=门店自取) + */ + private String deliverySelect; + + /** + * 配送门店ID + */ + private Long shopId; + + /** + * 优惠券记录id + */ + private Integer couponReceiveId; + + /** + * 参加店铺活动 1参加 2不参加 + */ + private Integer joinActive; + + + + /** + * 订单备注 + */ + private String remarks; + + /** + * 购买商品规格列表详情 + */ + private List<OrderItemDto> orderItemList; + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/OrderCouponGroupService.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/OrderCouponGroupService.java new file mode 100644 index 0000000..8519518 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/OrderCouponGroupService.java @@ -0,0 +1,282 @@ +package com.matrix.system.shopXcx.api.service; + +import com.matrix.component.redis.RedisUserLoginUtils; +import com.matrix.core.exception.GlobleException; +import com.matrix.core.tools.LogUtil; +import com.matrix.system.common.dao.BusParameterSettingsDao; +import com.matrix.system.shopXcx.api.pojo.OrderCouponGroup; +import com.matrix.system.shopXcx.api.pojo.OrderItemDto; +import com.matrix.system.shopXcx.bean.ShopCoupon; +import com.matrix.system.shopXcx.bean.ShopShoppingCart; +import com.matrix.system.shopXcx.dao.ShopProductDao; +import com.matrix.system.shopXcx.dao.ShopShoppingCartDao; +import com.matrix.system.shopXcx.dao.ShopSkuDao; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; + +/** + * 购物车前台展示对象 + */ +@Service +public class OrderCouponGroupService { + @Autowired + private ShopShoppingCartDao shoppingCartDao; + @Autowired + private RedisUserLoginUtils redisUserLoginUtils; + + @Autowired + WxShopCouponService shopCouponService; + + @Autowired + BusParameterSettingsDao busParameterSettingsDao; + + @Autowired + ShopProductDao shopProductDao; + + @Autowired + ShopSkuDao shopSkuDao; + + /** + * 初始化OrderCouponElement + * @param skuId + * @param count + * @param payType + * @return + */ + public OrderItemDto buildOrderCouponElement(OrderItemDto orderItemDto){ + orderItemDto.setShopSku(shopSkuDao.selectById(orderItemDto.getSkuId())); + orderItemDto.setShopProduct(shopProductDao.selectById(orderItemDto.getProductId())); + return orderItemDto; + } + + /** + * 计算用户的产品可以参与的店铺优惠活动分组 + */ + public List<OrderCouponGroup> buildOrderCouponGroupList(List<OrderItemDto> list) { + + //定义购物车优惠分组 + List<OrderCouponGroup> orderCouponGroupList = new ArrayList<>(); + // 1表示没有优惠的默认分组 + OrderCouponGroup def = new OrderCouponGroup(); + def.setSatisfactionCoupon(true); + def.setMsg("商城"); + def.setOrderItemDtos(new ArrayList<>()); + // 组合默认分组 + orderCouponGroupList.add(def); + + // 记录所有优惠券,一个优惠券(活动)表示一组 + Map<Integer, ShopCoupon> shopCouponMap = new HashMap<>(); + + //查询购物车中的产品匹配上的所有优惠活动 + for (OrderItemDto orderItemDto : list) { + + if(orderItemDto.getPayType()== ShopShoppingCart.CAR_TYPE_SCORE){ + // 积分兑换产品不参加优惠 + def.getOrderItemDtos().add(orderItemDto); + }else{ + List<ShopCoupon> shopCouponList = shopCouponService.getHdListByProductId(orderItemDto.getProductId()); + if (CollectionUtils.isNotEmpty(shopCouponList)) { + // 把所有的优惠券和购物车条目先关联一下,后续可以计算优惠升级的情况 + orderItemDto.setShopCoupons(shopCouponList); + for (ShopCoupon shopCoupon : shopCouponList) { + shopCouponMap.put(shopCoupon.getId(), shopCoupon); + } + } else { + // 该产品没有参加优惠券 + def.getOrderItemDtos().add(orderItemDto); + } + } + + } + + //计算没有优惠组的价格 + countPrice(def); + + + /* + * 计算优惠券分组 1、获取到所有的优惠券,从最高满减开始,找寻合适的产品,找到后加入对应的购物车组 + * 2、计算组内价格 + */ + Set<Integer> keys = shopCouponMap.keySet(); + List<ShopCoupon> allShopCoupons = new ArrayList<>(); + for (Integer key : keys) { + allShopCoupons.add(shopCouponMap.get(key)); + } + + //根据优惠力度排序,优惠力度大的先参与计算 + Collections.sort(allShopCoupons, new Comparator() { + @Override + public int compare(Object o1, Object o2) { + ShopCoupon e1 = (ShopCoupon) o1; + ShopCoupon e2 = (ShopCoupon) o2; + return e2.getMinAmount().compareTo(e1.getMinAmount()); + } + }); + + + // 进行购物车和优惠券的匹配,匹配成功的加入到优惠组中, + for (int i = 0; i < allShopCoupons.size(); i++) { + ShopCoupon shopCoupon = allShopCoupons.get(i); + OrderCouponGroup shopCarVo = new OrderCouponGroup(); + shopCarVo.setCoupon(shopCoupon); + shopCarVo.setOrderItemDtos(new ArrayList<>()); + orderCouponGroupList.add(i, shopCarVo); + + // 获取所有购物车条目 + for (OrderItemDto orderItemDto : list) { + // 如果匹配到的产品已经出现在其他优惠组中,则需要判断是否移除之前的组 + boolean needRemove = false; + + // 判断当前购物车条目是否已经在合适的组里了 + if (isInGroupAndSatisfaction(orderItemDto, orderCouponGroupList)) { + continue; + + } else if (isInGroupNotSatisfaction(orderItemDto, orderCouponGroupList)) { + needRemove = true; + } + + List<ShopCoupon> cartCouons = orderItemDto.getShopCoupons(); + if (cartCouons != null) { + // 获取每个购物车条目满足的优惠 + for (ShopCoupon cartCouon : cartCouons) { + if (cartCouon.getId().equals(shopCoupon.getId())) { + //匹配成功,加入本组 + LogUtil.debug("购物车" + orderItemDto.getProductId() + "和优惠券" + cartCouon.getCName() + "匹配"); + if (needRemove) { + removeNotSatisfaction(orderItemDto, orderCouponGroupList); + } + shopCarVo.getOrderItemDtos().add(orderItemDto); + break; + } + } + } + + } + + // 计算本组优惠券是否已经满足优惠条件 + countPrice(shopCarVo); + } + + + // 因为有些优惠中可能没有产品,所以要去除cartList中没有产品的分组 + List<OrderCouponGroup> cartListCopy = new ArrayList<>(); + for (OrderCouponGroup orderCouponGroup : orderCouponGroupList) { + if (CollectionUtils.isNotEmpty(orderCouponGroup.getOrderItemDtos())) { + cartListCopy.add(orderCouponGroup); + } + } + return cartListCopy; + } + + + /** + * 购车条目在组中并且组是否已经满足优惠的 + * + * @param cartList + * @return + */ + private boolean isInGroupAndSatisfaction(OrderItemDto orderItemDto, List<OrderCouponGroup> cartList) { + boolean result = false; + for (OrderCouponGroup cartVo : cartList) { + if (cartVo.isSatisfactionCoupon() && cartVo.getOrderItemDtos().contains(orderItemDto)) { + result = true; + } + } + return result; + } + + /** + * 购物车条目在组中,但是组中产品没有达到优惠条件 + * @param cartList + * @return + */ + private boolean isInGroupNotSatisfaction(OrderItemDto orderItemDto, List<OrderCouponGroup> cartList) { + boolean result = false; + for (OrderCouponGroup cartVo : cartList) { + if (!cartVo.isSatisfactionCoupon() && cartVo.getOrderItemDtos().contains(orderItemDto)) { + result = true; + } + } + return result; + } + + /** + * 删除购物车条目所在分组中的引用 + * + * @param cartList + */ + private void removeNotSatisfaction(OrderItemDto orderItemDto, List<OrderCouponGroup> cartList) { + for (OrderCouponGroup cartVo : cartList) { + if (cartVo.getOrderItemDtos().remove(orderItemDto)) { + LogUtil.debug("删除购物车所在组" + cartVo.getCoupon().getCName() + "," + orderItemDto.getProductId()); + } + } + } + + /** + * 计算购物车价格和优惠信息 + * + * @author JIANGYOUYAO + * @email 935090232@qq.com + * @date 2019年8月27日 + */ + private void countPrice(OrderCouponGroup orderCouponGroup) { + List<OrderItemDto> orderItemDtoList = orderCouponGroup.getOrderItemDtos(); + // 计算总价 + BigDecimal sum = BigDecimal.ZERO; + //抵扣总积分 + BigDecimal scoreSum = BigDecimal.ZERO; + + for (OrderItemDto orderCouponElement : orderItemDtoList) { + if(ShopShoppingCart.CAR_TYPE_MICRO==orderCouponElement.getPayType()){ + //直接购买 + sum = sum.add(orderCouponElement.getShopSku().getPrice().multiply(BigDecimal.valueOf(orderCouponElement.getCount()))); + + }else if(ShopShoppingCart.CAR_TYPE_SCORE==orderCouponElement.getPayType()){ + //积分兑换 + sum = sum.add(orderCouponElement.getShopSku().getScorePrice().multiply(BigDecimal.valueOf(orderCouponElement.getCount()))); + scoreSum = scoreSum.add(new BigDecimal(orderCouponElement.getShopSku().getScoreCount() * orderCouponElement.getCount())); + }else{ + throw new GlobleException("参数错误"); + } + } + + if (orderCouponGroup.getCoupon() != null) { + // 存在优惠券 + if (sum.compareTo(orderCouponGroup.getCoupon().getMinAmount()) >= 0) { + //标记为合理分组 + orderCouponGroup.setSatisfactionCoupon(true); + if (sum.compareTo(orderCouponGroup.getCoupon().getMinAmount()) >= 0) { + orderCouponGroup.setSubtotal(sum.subtract(orderCouponGroup.getCoupon().getOffsetAmount())); + orderCouponGroup.setSrcPrice(sum); + orderCouponGroup.setCouponPrice(orderCouponGroup.getCoupon().getOffsetAmount()); + orderCouponGroup.setMsg(orderCouponGroup.getCoupon().getCName() + ",已优惠" + + orderCouponGroup.getCoupon().getOffsetAmount().stripTrailingZeros().toPlainString() + "元"); + } + } + if (sum.compareTo(orderCouponGroup.getCoupon().getMinAmount()) < 0) { + orderCouponGroup.setSatisfactionCoupon(false); + orderCouponGroup.setSubtotal(sum); + orderCouponGroup.setSrcPrice(sum); + orderCouponGroup.setMsg(orderCouponGroup.getCoupon().getCName()); + if (sum.doubleValue() > 0) { + orderCouponGroup.setMsg(orderCouponGroup.getCoupon().getCName() + ",再买" + + (orderCouponGroup.getCoupon().getMinAmount().subtract(sum)).stripTrailingZeros() + .toPlainString() + + "元立减" + orderCouponGroup.getCoupon().getOffsetAmount().stripTrailingZeros().toPlainString() + + "元"); + } + } + } else { + orderCouponGroup.setSubtotal(sum); + orderCouponGroup.setSrcPrice(sum); + orderCouponGroup.setSatisfactionCoupon(true); + } + orderCouponGroup.setScorePay(scoreSum); + } + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/ShoppingCartService.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/ShoppingCartService.java index 5180721..ba08465 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/ShoppingCartService.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/ShoppingCartService.java @@ -1,6 +1,5 @@ package com.matrix.system.shopXcx.api.service; -import com.matrix.biz.bean.BizUser; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.tools.LogUtil; import com.matrix.system.common.dao.BusParameterSettingsDao; @@ -32,15 +31,11 @@ @Autowired BusParameterSettingsDao busParameterSettingsDao; - + //计算购车选中项总价以及优惠金额 public ShopCartBillVo buildShopCartBillVo(List<ShopCartVo> cartList) { ShopCartBillVo shopCartBillVo = new ShopCartBillVo(); - //计算购车选中项总价以及优惠金额 - BigDecimal billTotal = BigDecimal.ZERO; - BigDecimal billCouponTotal = BigDecimal.ZERO; - //未优惠之前的金额 - BigDecimal srcTotal = BigDecimal.ZERO; + //计算是否存在选中的产品 Integer selectCount = 0; @@ -59,8 +54,6 @@ shopCartBillVo.setBillCouponTotal(shopCartBillVo.getBillCouponTotal().add(shopCartVo.getCouponPrice())); } } - - for (ShopShoppingCart shopCart : shopCartVo.getCartList()) { if (shopCart.getIsSelected() == 1) { selectCount += shopCart.getCartNumber(); @@ -73,19 +66,7 @@ return shopCartBillVo; } - /** - * 计算用户的购物车产品优惠分组 - * - * @return - * @param shopId - */ - public List<ShopCartVo> findUserCartList(Long shopId) { - BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); - String userId = loginUser.getOpenId(); - List<ShopShoppingCart> list = shoppingCartDao.selectByCartUserId(shopId,userId); - List<ShopCartVo> cartList = buildShopCart(list); - return cartList; - } + /** @@ -95,7 +76,7 @@ * @return */ @SuppressWarnings("unchecked") - private List<ShopCartVo> buildShopCart(List<ShopShoppingCart> list) { + public List<ShopCartVo> buildShopCart(List<ShopShoppingCart> list) { //定义购物车优惠分组 @@ -275,8 +256,14 @@ for (ShopShoppingCart shopShoppingCart : cartList) { sum = sum.add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber()))); if (shopShoppingCart.getIsSelected() == 1) { - selectSum = selectSum - .add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber()))); + if(shopShoppingCart.getCartType()==ShopShoppingCart.CAR_TYPE_MICRO){ + selectSum = selectSum + .add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber()))); + }else { + selectSum = selectSum + .add(shopShoppingCart.getScorePrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber()))); + } + } } @@ -307,9 +294,9 @@ } } } else { - shopCartVo.setSubtotal(selectSum); - shopCartVo.setSrcPrice(selectSum); - shopCartVo.setSatisfactionCoupon(true); + shopCartVo.setSubtotal(selectSum); + shopCartVo.setSrcPrice(selectSum); + shopCartVo.setSatisfactionCoupon(true); } } } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java index 3dabe15..da0f5e4 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WXShopOrderService.java @@ -1,15 +1,12 @@ package com.matrix.system.shopXcx.api.service; -import com.matrix.core.pojo.AjaxResult; import com.matrix.component.wechat.externalInterface.protocol.paramProtocol.BrandWCPayRequestData; -import com.matrix.system.shopXcx.bean.ShopOrder; -import com.matrix.system.shopXcx.dto.DiscountExplain; -import com.matrix.system.shopXcx.api.pojo.AddShopOrderPOJO; +import com.matrix.core.pojo.AjaxResult; import com.matrix.system.shopXcx.api.pojo.OrderInfoQueryPOJO; -import com.matrix.system.shopXcx.api.vo.ShopCartVo; +import com.matrix.system.shopXcx.api.pojo.ShopOrderDto; +import com.matrix.system.shopXcx.bean.ShopOrder; import java.math.BigDecimal; -import java.util.List; /** * @author jyy @@ -22,11 +19,11 @@ /** * 创建订单 - * @param addShopOrderPOJO + * @param shopOrderDto * @return * @throws Exception */ - AjaxResult createShopOrder(AddShopOrderPOJO addShopOrderPOJO) throws Exception; + AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception; /** * 订单结算 @@ -93,5 +90,5 @@ */ AjaxResult updateStockAndVolumeById(Integer orderId); - DiscountExplain buildDiscountExplain(List<ShopCartVo> cartList, Integer id, Long companyId); + AjaxResult buildDiscountExplain(ShopOrderDto shopOrderDto); } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WxShopCouponService.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WxShopCouponService.java index 13d6e99..fd92862 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WxShopCouponService.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/WxShopCouponService.java @@ -2,9 +2,9 @@ import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; -import com.matrix.system.shopXcx.bean.ShopCoupon; -import com.matrix.system.shopXcx.bean.ShopShoppingCart; +import com.matrix.system.shopXcx.api.pojo.OrderItemDto; import com.matrix.system.shopXcx.api.vo.CouponReceiveInfoVO; +import com.matrix.system.shopXcx.bean.ShopCoupon; import java.util.List; @@ -18,7 +18,7 @@ * 根据购物车选中的产品 * @return */ - public List<CouponReceiveInfoVO> getCartVoCouponList(Long companyId,List<ShopShoppingCart> shopShoppingCarts); + public List<CouponReceiveInfoVO> getCartVoCouponList(Long companyId,List<OrderItemDto> OrderItemDtos); /** 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 dce9db6..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 @@ -1,5 +1,6 @@ package com.matrix.system.shopXcx.api.service.impl; +import cn.hutool.core.collection.CollUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.matrix.biz.bean.BizUser; @@ -11,26 +12,25 @@ import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.LogUtil; -import com.matrix.core.tools.StringUtils; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.dao.CustomerDataDictionaryDao; import com.matrix.system.common.interceptor.HostInterceptor; -import com.matrix.system.constance.Dictionary; -import com.matrix.system.hive.bean.ShoppingGoods; 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.AddShopOrderPOJO; +import com.matrix.system.shopXcx.api.pojo.OrderCouponGroup; import com.matrix.system.shopXcx.api.pojo.OrderInfoQueryPOJO; +import com.matrix.system.shopXcx.api.pojo.OrderItemDto; +import com.matrix.system.shopXcx.api.pojo.ShopOrderDto; +import com.matrix.system.shopXcx.api.service.OrderCouponGroupService; import com.matrix.system.shopXcx.api.service.ShoppingCartService; import com.matrix.system.shopXcx.api.service.WXShopOrderService; import com.matrix.system.shopXcx.api.service.WxShopCouponService; import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil; import com.matrix.system.shopXcx.api.vo.CouponReceiveInfoVO; -import com.matrix.system.shopXcx.api.vo.ShopCartBillVo; -import com.matrix.system.shopXcx.api.vo.ShopCartVo; import com.matrix.system.shopXcx.bean.*; import com.matrix.system.shopXcx.dao.*; import com.matrix.system.shopXcx.dto.DiscountExplain; @@ -42,6 +42,7 @@ import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @author jyy @@ -90,6 +91,9 @@ private ShopActivitiesGroupJoinUserDao shopActivitiesGroupJoinUserDao; @Autowired + OrderCouponGroupService orderCouponGroupService; + + @Autowired CustomerDataDictionaryDao dataDictionaryDao; @Value("${wx_pay_debug_onoff}") private boolean isDebug; @@ -97,110 +101,90 @@ @Autowired private BusParameterSettingsDao busParameterSettingsDao; + @Autowired + private ScoreVipDetailDao scoreVipDetailDao; + @Override - public BigDecimal calculationPostage(BigDecimal payPrice,Long companyId) { + public BigDecimal calculationPostage(BigDecimal payPrice, Long companyId) { BigDecimal postage = BigDecimal.ZERO; BusParameterSettings yf = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.PACKAGE_PRICE, companyId); BusParameterSettings myje = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.FREE_PACKAGE_PRICE, companyId); - if(yf!=null&&myje!=null){ + if (yf != null && myje != null) { if (Double.parseDouble(myje.getParamValue()) > payPrice.doubleValue()) { postage = new BigDecimal(yf.getParamValue()); } } - return postage; } - - /** * 创建订单 * - * @param addShopOrderPOJO + * @param shopOrderDto * @return * @throws Exception */ @Transactional(rollbackFor = Exception.class) @Override - public AjaxResult createShopOrder(AddShopOrderPOJO addShopOrderPOJO) throws Exception { + public AjaxResult createShopOrder(ShopOrderDto shopOrderDto) throws Exception { BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); //校验收货地址 - ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(addShopOrderPOJO.getReceiveAddrId()); + ShopReceiveAddress shopReceiveAddress = shopReceiveAddressDao.selectById(shopOrderDto.getReceiveAddrId()); if (shopReceiveAddress == null) { return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择正确的收获地址"); } + //计算订单优惠信息 + AjaxResult caculateResult= buildDiscountExplain(shopOrderDto); + DiscountExplain discountExplain= (DiscountExplain) caculateResult.getMapInfo().get("discountExplain"); - List<ShopCartVo> cartList = shoppingCartService.findUserCartList(addShopOrderPOJO.getShopId()); - //购物车不能为空 - if (CollectionUtils.isEmpty(cartList)) { - return new AjaxResult(AjaxResult.STATUS_FAIL, "请选择您需要购买的产品"); - } - - - //取出购物车中选中的产品 - List<ShopShoppingCart> buyCart = new ArrayList<>(); - //取出购物车中没有参加店铺活动的产品,和参加了店铺活动但是活动没有达到标准的产品,用来计算是否可以使用优惠券 - List<ShopShoppingCart> notCouponuyCart = new ArrayList<>(); - for (ShopCartVo shopCartVo : cartList) { - for (ShopShoppingCart shopShoppingCart : shopCartVo.getCartList()) { - if (shopShoppingCart.getIsSelected() == 1) { - buyCart.add(shopShoppingCart); - if (shopCartVo.getCoupon() == null || !shopCartVo.isSatisfactionCoupon()) { - notCouponuyCart.add(shopShoppingCart); - } - } + if(discountExplain.getScorePay()!=null){ + //校验用户积分是否够用 + int score=scoreVipDetailDao.selectUserTotalScore(bizUser.getOpenId(),null); + if(score<discountExplain.getScorePay()){ + return AjaxResult.buildFailInstance("积分不足"); } } - //计算订单优惠信息 - DiscountExplain discountExplain = buildDiscountExplain(cartList, addShopOrderPOJO.getCouponReceiveId(), bizUser.getCompanyId()); - - ShopOrder shopOrder = new ShopOrder(); shopOrder.setCompanyId(bizUser.getCompanyId()); - shopOrder.setStoreId(Integer.parseInt(addShopOrderPOJO.getShopId().toString())); + shopOrder.setStoreId(Integer.parseInt(shopOrderDto.getShopId().toString())); //默认设置为产品类型 shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); List<ShopOrderDetails> details = new ArrayList<>(); - Integer cartCount = 0; - for (ShopShoppingCart shopShoppingCart : buyCart) { + Integer orderCount = 0; + for (OrderItemDto orderItemDto : shopOrderDto.getOrderItemList()) { ShopOrderDetails shopOrderDetails = new ShopOrderDetails(); shopOrderDetails.setCreateBy(AppConstance.SYSTEM_USER); shopOrderDetails.setUpdateBy(AppConstance.SYSTEM_USER); - shopOrderDetails.setpId(shopShoppingCart.getCartProductId()); - shopOrderDetails.setsId(shopShoppingCart.getCartSkuId()); - shopOrderDetails.setPrice(shopShoppingCart.getPrice()); - shopOrderDetails.setCount(shopShoppingCart.getCartNumber()); - shopOrderDetails.setsTitle(shopShoppingCart.getTitle() + shopShoppingCart.getName()); - shopOrderDetails.setDiscountAmount(BigDecimal.ZERO); - shopOrderDetails.setTotalPrice(shopOrderDetails.getPrice().multiply(BigDecimal.valueOf(shopOrderDetails.getCount()))); - details.add(shopOrderDetails); - cartCount += shopOrderDetails.getCount(); - - //查询绑定的产品是否为家居产品,如果已经含家具产品则不再比较 - if (ShopOrder.ORDER_TYPE_GOODS != shopOrder.getOrderType()) { - ShopSku shopSku = shopSkuDao.selectById(shopShoppingCart.getCartSkuId()); - String stokCode = shopSku.getStockCode(); - if (StringUtils.isNotBlank(stokCode)) { - ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(Long.parseLong(stokCode)); - if (shoppingGoods != null) { - //根据购买的产品设置订单类型 - if (Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(shoppingGoods.getGoodType())) { - shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); - } else { - - } - } else { - shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); - } - } + shopOrderDetails.setpId(orderItemDto.getProductId()); + shopOrderDetails.setsId(orderItemDto.getSkuId()); + shopOrderDetails.setCount(orderItemDto.getCount()); + if(ShopOrderDetails.PAYTYPE_MICRO==orderItemDto.getPayType()){ + shopOrderDetails.setPrice(orderItemDto.getShopSku().getPrice()); + }else{ + shopOrderDetails.setPrice(orderItemDto.getShopSku().getScorePrice()); + shopOrderDetails.setScoreCount(BigDecimal.valueOf(orderItemDto.getShopSku().getScoreCount())); + shopOrderDetails.setTotalScoreCount(shopOrderDetails.getScoreCount().multiply(BigDecimal.valueOf(shopOrderDetails.getCount()))); } + shopOrderDetails.setTotalPrice(shopOrderDetails.getPrice().multiply(BigDecimal.valueOf(shopOrderDetails.getCount()))); + shopOrderDetails.setPayType(orderItemDto.getPayType()); + + shopOrderDetails.setsTitle(orderItemDto.getShopProduct().getTitle() + orderItemDto.getShopSku().getName()); + + shopOrderDetails.setDiscountAmount(BigDecimal.ZERO); + + details.add(shopOrderDetails); + orderCount += shopOrderDetails.getCount(); + if(orderItemDto.getCartId()!=null){ + //删除用户购物车选中的产品 + shoppingCartDao.deleteById(orderItemDto.getCartId()); + } } @@ -213,9 +197,10 @@ shopOrder.setCreateBy("微信小程序生成"); shopOrder.setUpdateBy("微信小程序生成"); shopOrder.setCommodityPrice(discountExplain.getBillPrice()); - shopOrder.setPurchaseQuantity(cartCount); + shopOrder.setPurchaseQuantity(orderCount); + shopOrder.setOrderType(ShopOrder.ORDER_TYPE_GOODS); //购买方式 - shopOrder.setShippingMethod(addShopOrderPOJO.getDeliverySelect()); + shopOrder.setShippingMethod(shopOrderDto.getDeliverySelect()); //生成订单号 shopOrder.setOrderNo(WxUtils.getOrderNum()); //设置支付状态 @@ -230,7 +215,7 @@ //客户姓名 shopOrder.setUserName(shopReceiveAddress.getAddrLiaisonman()); //备注 - shopOrder.setRemarks(addShopOrderPOJO.getRemarks()); + shopOrder.setRemarks(shopOrderDto.getRemarks()); //删除标识 shopOrder.setDelFlag(AppConstance.DATA_USEABLE); //微信订单号 @@ -241,13 +226,14 @@ //获取邮费 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.getActivity().add(discountExplain.getCoupon())); + shopOrder.setDiscountAmount(discountExplain.getActivityPrice().add(discountExplain.getCouponPrice())); shopOrder.setCompanyId(HostInterceptor.getCompanyId()); shopOrderDao.insert(shopOrder); - wxShopOrderUtil.insertSendPackageInfo(shopOrder, addShopOrderPOJO.getDeliverySelect(), shopReceiveAddress); + wxShopOrderUtil.insertSendPackageInfo(shopOrder, shopOrderDto.getDeliverySelect(), shopReceiveAddress); //给订单详情表添加订单ID for (ShopOrderDetails shopOrderDetails : details) { shopOrderDetails.setOrderId(shopOrder.getId()); @@ -256,16 +242,14 @@ shopOrderDetailsDao.batchInsert(details); } //更新使用的优惠券状态 - if (addShopOrderPOJO.getCouponReceiveId() != null) { + if (shopOrderDto.getCouponReceiveId() != null) { ShopCouponRecord record = new ShopCouponRecord(); record.setIsUsing(AppConstance.MY_COUPON_USE); record.setOrderId(shopOrder.getId()); - record.setId(addShopOrderPOJO.getCouponReceiveId()); + record.setId(shopOrderDto.getCouponReceiveId()); shopCouponRecordDao.updateByModel(record); } - //删除用户购物车选中的产品 - shoppingCartDao.deleteUserSelectCart(bizUser.getOpenId()); BrandWCPayRequestData payData = startPayment(shopOrder); @@ -276,28 +260,121 @@ } @Override - public DiscountExplain buildDiscountExplain(List<ShopCartVo> cartList, Integer receiveId, Long companyId) { - ShopCartBillVo shopCartBill = shoppingCartService.buildShopCartBillVo(cartList); - DiscountExplain discountExplain = new DiscountExplain(); - discountExplain.setActivity(shopCartBill.getBillCouponTotal()); - discountExplain.setBillPrice(shopCartBill.getSrcTotal()); - discountExplain.setPayPrice(shopCartBill.getBillTotal()); - //计算优惠券 - if (receiveId != null) { - CouponReceiveInfoVO couponReceiveInfoVO = shopCouponRecordDao.selectMyCouponByReceiveId(receiveId); - if (couponReceiveInfoVO != null) { - BigDecimal payPrice = discountExplain.getPayPrice().subtract(couponReceiveInfoVO.getOffsetAmount()); - payPrice = payPrice.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : payPrice; - discountExplain.setPayPrice(payPrice); - discountExplain.setCoupon(couponReceiveInfoVO.getOffsetAmount()); - } + public AjaxResult buildDiscountExplain(ShopOrderDto shopOrderDto) { + + if(CollUtil.isEmpty(shopOrderDto.getOrderItemList())){ + return AjaxResult.buildFailInstance("请选择购买的明细"); } - discountExplain.setPostage(calculationPostage(discountExplain.getPayPrice(),companyId)); + //订单计价说明 + DiscountExplain discountExplain = new DiscountExplain(); + //账单总金额 + BigDecimal billPrice = BigDecimal.ZERO; + //活动优惠金额 + BigDecimal activityTotal = BigDecimal.ZERO; + //优惠券惠金额 + BigDecimal couponPrice = BigDecimal.ZERO; + //支付总积分 + Integer scoreCount=0; - //计算实际支付 - discountExplain.setPayPrice(discountExplain.getPayPrice().add(discountExplain.getPostage())); - return discountExplain; + BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); + + //计算购物车中物品的优惠信息 + List<OrderItemDto> orderItemDtos = shopOrderDto.getOrderItemList() + .stream().map(orderItemDto -> { + return orderCouponGroupService.buildOrderCouponElement(orderItemDto); + }) + .collect(Collectors.toList()); + //计算未优惠的总金额 + for (OrderItemDto orderItemDto :orderItemDtos ){ + if(orderItemDto.getPayType()==ShopShoppingCart.CAR_TYPE_MICRO){ + billPrice=billPrice.add(orderItemDto.getShopSku().getPrice().multiply(new BigDecimal(orderItemDto.getCount()))); + }else{ + billPrice=billPrice.add(orderItemDto.getShopSku().getScorePrice().multiply(new BigDecimal(orderItemDto.getCount()))); + scoreCount+=orderItemDto.getShopSku().getScoreCount()*orderItemDto.getCount(); + } + } + discountExplain.setScorePay(scoreCount); + + + //计算用户的产品可以参与的店铺优惠活动分组 + List<ShopCoupon> shopActiveList = new ArrayList<>();//记录用户可以参与的门店活动 + List<OrderCouponGroup> orderCouponGroupList = new ArrayList<>(); + int conditionsGroupCount = 0; + if (shopOrderDto.getJoinActive() == ShopOrderDto.JOIN_ACTIVE) {//用户参与优惠活动 + orderCouponGroupList = orderCouponGroupService.buildOrderCouponGroupList(orderItemDtos); + conditionsGroupCount = orderCouponGroupList.stream().map(orderCouponGroup -> { + if (orderCouponGroup.isSatisfactionCoupon()&&orderCouponGroup.getCoupon()!=null) { + shopActiveList.add(orderCouponGroup.getCoupon()); + return 1; + } else { + return 0; + } + }).mapToInt(Integer::intValue).sum(); + } + if(CollUtil.isNotEmpty(shopActiveList)){ + activityTotal=shopActiveList.stream().map(ShopCoupon:: getOffsetAmount).reduce(BigDecimal.ZERO,BigDecimal::add); + } + + //门店活动优惠金额 + discountExplain.setActivityPrice(activityTotal); + + + List<CouponReceiveInfoVO> usefulCoupon = new ArrayList<>(); + CouponReceiveInfoVO shopCoupon = new CouponReceiveInfoVO(); + //满足店铺活动的订单不能使用优惠券 + if (conditionsGroupCount > 0) { + //计算可用优惠券 + usefulCoupon = wxShopCouponService.getCartVoCouponList(bizUser.getCompanyId(), orderItemDtos); + //获取用户使用的优惠券 + if (shopOrderDto.getCouponReceiveId() == null) { + //如果用户没有选择优惠券则默认选优惠金额最高的 + //计算使用优惠券后的价格 + if (CollectionUtils.isNotEmpty(usefulCoupon)) { + //根据优惠券ID用户ID查询优惠券信息 + shopCoupon = usefulCoupon.get(0); + } + } else if (shopOrderDto.getCouponReceiveId() != 1) { + //用户选择了优惠券 + shopCoupon = shopCouponRecordDao.selectMyCouponByReceiveId(shopOrderDto.getCouponReceiveId()); + } else { + //用户不使用优惠券 + } + //计算优惠券 + if (shopCoupon.getCouponId() != null) { + couponPrice=shopCoupon.getOffsetAmount(); + } + //优惠券金额 + discountExplain.setCouponPrice(couponPrice); + } + + + + //计算运费 + discountExplain.setPostage(calculationPostage(discountExplain.getPayPrice(), HostInterceptor.getCompanyId())); + + + + //账单总金额 + discountExplain.setBillPrice(billPrice.add(discountExplain.getPostage())); + + BigDecimal payPrice=discountExplain.getBillPrice().subtract(activityTotal).subtract(couponPrice); + //应付金额 + discountExplain.setPayPrice(payPrice.doubleValue()>0?payPrice:BigDecimal.ONE); + + AjaxResult result = AjaxResult.buildSuccessInstance(""); + //结算金额信息 + result.putInMap("discountExplain", discountExplain); + //用户优惠券 + result.putInMap("usefulCoupon", usefulCoupon); + //用户选中的优惠券 + result.putInMap("shopCoupon", shopCoupon); + + //店铺优惠活动 + result.putInMap("shopActiveList", shopActiveList); + + return result; + } @@ -317,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/api/service/impl/WxShopActivitiesGroupServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesGroupServiceImpl.java index 755f560..0e06b76 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesGroupServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesGroupServiceImpl.java @@ -396,8 +396,8 @@ DiscountExplain discountExplain = new DiscountExplain(); discountExplain.setPayPrice(payPrice); discountExplain.setPostage(postPrice); - discountExplain.setActivity(BigDecimal.ZERO); - discountExplain.setCoupon(BigDecimal.ZERO); + discountExplain.setActivityPrice(BigDecimal.ZERO); + discountExplain.setCouponPrice(BigDecimal.ZERO); discountExplain.setBillPrice(payPrice); Gson g = new GsonBuilder().create(); shopOrder.setDiscountExplain(g.toJson(discountExplain)); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java index 1453dca..b79a20b 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopActivitiesSecKillServiceImpl.java @@ -210,8 +210,8 @@ DiscountExplain discountExplain = new DiscountExplain(); discountExplain.setPayPrice(payPrice); discountExplain.setPostage(postPrice); - discountExplain.setActivity(BigDecimal.ZERO); - discountExplain.setCoupon(BigDecimal.ZERO); + discountExplain.setActivityPrice(BigDecimal.ZERO); + discountExplain.setCouponPrice(BigDecimal.ZERO); discountExplain.setBillPrice(payPrice); Gson g = new GsonBuilder().create(); shopOrder.setDiscountExplain(g.toJson(discountExplain)); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java index bf87285..088d320 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopCouponServiceImpl.java @@ -1,20 +1,20 @@ package com.matrix.system.shopXcx.api.service.impl; +import com.matrix.biz.bean.BizUser; +import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; -import com.matrix.biz.bean.BizUser; -import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.system.common.constance.AppConstance; - -import com.matrix.system.shopXcx.bean.*; -import com.matrix.system.shopXcx.dao.*; +import com.matrix.system.shopXcx.api.pojo.OrderCouponGroup; +import com.matrix.system.shopXcx.api.pojo.OrderItemDto; import com.matrix.system.shopXcx.api.service.WxShopCouponService; import com.matrix.system.shopXcx.api.tools.WxShopCouponUtil; import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil; import com.matrix.system.shopXcx.api.vo.CouponReceiveInfoVO; -import com.matrix.system.shopXcx.api.vo.ShopCartVo; +import com.matrix.system.shopXcx.bean.*; +import com.matrix.system.shopXcx.dao.*; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -54,9 +54,10 @@ * * @return */ - public List<CouponReceiveInfoVO> getCartVoCouponList(Long companyId,List<ShopShoppingCart> shopShoppingCarts) { + public List<CouponReceiveInfoVO> getCartVoCouponList(Long companyId,List<OrderItemDto> OrderItemDtos){ - //可用优惠券列表 + + //可用优惠券列表 List<CouponReceiveInfoVO> shopCoupons = new ArrayList<>(); @@ -77,7 +78,7 @@ //定义购物车优惠分组 - List<ShopCartVo> cartList = new ArrayList<>(); + List<OrderCouponGroup> cartList = new ArrayList<>(); // 记录所有优惠券,一个优惠券(活动)表示一组 Map<Integer, ShopCoupon> shopCouponMap = new HashMap<>(); @@ -86,24 +87,24 @@ for (int i = 0; i < userAllCoupon.size(); i++) { CouponReceiveInfoVO couponReceiveInfoVO = userAllCoupon.get(i); - ShopCartVo shopCarVo = new ShopCartVo(); + OrderCouponGroup shopCarVo = new OrderCouponGroup(); shopCarVo.setCouponReceiveInfoVO(couponReceiveInfoVO); - shopCarVo.setCartList(new ArrayList<>()); + shopCarVo.setOrderItemDtos(new ArrayList<>()); cartList.add(i, shopCarVo); - for (ShopShoppingCart shoppingCart : shopShoppingCarts) { + for (OrderItemDto orderItemDto : OrderItemDtos) { // 如果匹配到的产品已经出现在其他优惠组中,则需要判断是否移除之前的组 boolean needRemove = false; //找到产品所有的优惠券 - List<ShopCoupon> productShopCoupons = getCouponListByProductId(shoppingCart.getCartProductId()); + List<ShopCoupon> productShopCoupons = getCouponListByProductId(orderItemDto.getProductId()); for (ShopCoupon productShopCoupon : productShopCoupons) { if (couponReceiveInfoVO.getCouponId().equals(productShopCoupon.getId())) { - LogUtil.debug("购物车" + shoppingCart.getName() + "和优惠券" + couponReceiveInfoVO.getcName() + "匹配"); - shopCarVo.getCartList().add(shoppingCart); + LogUtil.debug("购物车" + orderItemDto.getProductId() + "和优惠券" + couponReceiveInfoVO.getcName() + "匹配"); + shopCarVo.getOrderItemDtos().add(orderItemDto); break; } } @@ -113,9 +114,9 @@ } //3.计算各组的金额是否满足,把满足的优惠券全部返回 - for (ShopCartVo shopCartVo : cartList) { - if (shopCartVo.isSatisfactionCoupon() && CollectionUtils.isNotEmpty(shopCartVo.getCartList())) { - shopCoupons.add(shopCartVo.getCouponReceiveInfoVO()); + for (OrderCouponGroup orderCouponGroup : cartList) { + if (orderCouponGroup.isSatisfactionCoupon() && CollectionUtils.isNotEmpty(orderCouponGroup.getOrderItemDtos())) { + shopCoupons.add(orderCouponGroup.getCouponReceiveInfoVO()); } } } @@ -125,19 +126,19 @@ - private void countPrice(ShopCartVo shopCartVo) { - List<ShopShoppingCart> cartList = shopCartVo.getCartList(); + private void countPrice(OrderCouponGroup orderCouponGroup) { + List<OrderItemDto> orderItemDtoList = orderCouponGroup.getOrderItemDtos(); // 计算总价 BigDecimal sum = BigDecimal.ZERO; - for (ShopShoppingCart shopShoppingCart : cartList) { - sum = sum.add(shopShoppingCart.getPrice().multiply(BigDecimal.valueOf(shopShoppingCart.getCartNumber()))); + for (OrderItemDto orderItemDto : orderItemDtoList) { + sum = sum.add(orderItemDto.getShopSku().getPrice().multiply(BigDecimal.valueOf(orderItemDto.getCount()))); } // 存在优惠券 - if (sum.compareTo(shopCartVo.getCouponReceiveInfoVO().getMinAmount()) >= 0) { + if (sum.compareTo(orderCouponGroup.getCouponReceiveInfoVO().getMinAmount()) >= 0) { //标记为合理分组 - shopCartVo.setSatisfactionCoupon(true); + orderCouponGroup.setSatisfactionCoupon(true); } else { - shopCartVo.setSatisfactionCoupon(false); + orderCouponGroup.setSatisfactionCoupon(false); } } @@ -299,7 +300,6 @@ * 通过优惠券标签获取优惠券列表 * * @param tag 标签名称 - * @param shopId * @return */ @Override diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java index 7597ba7..2895e24 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/service/impl/WxShopRefundRecordServiceImpl.java @@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.ArrayList; @@ -58,6 +59,7 @@ @Override + @Transactional public Boolean refundToUser(String id, ShopRefundRecord shopRefundRecord) { LogUtil.debug("进入退款接口进行退款。。。", id); Boolean flag = false; @@ -143,7 +145,7 @@ modifyMap.put("refundCharge", shopRefundRecord.getRefundMoney()); shopOrderDao.updateByMap(modifyMap); - rabiitMqTemplate.sendMsg(MQTaskRouting.SHOP_ORDER_REFUND+evn,shopOrder.getId()+""); + rabiitMqTemplate.sendMsg(MQTaskRouting.SHOP_ORDER_REFUND+evn,shopRefundRecord.getOrderId()+""); }catch (Exception e){ diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java index 7c9a66b..283da6a 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java @@ -1,16 +1,15 @@ package com.matrix.system.shopXcx.api.tools; import com.matrix.system.common.bean.CustomerDataDictionary; -import com.matrix.system.common.dao.CustomerDataDictionaryDao; import com.matrix.biz.service.BizUserService; import com.matrix.component.tools.WxTempLateMsgUtil; import com.matrix.core.exception.GlobleException; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.constance.AppConstance; -import com.matrix.system.shopXcx.api.pojo.AddShopOrderPOJO; +import com.matrix.system.shopXcx.api.pojo.ShopOrderDto; import com.matrix.system.shopXcx.api.pojo.OrderPostageInfoPOJO; -import com.matrix.system.shopXcx.api.pojo.OrderProductSkuPOJO; +import com.matrix.system.shopXcx.api.pojo.OrderItemDto; import com.matrix.system.shopXcx.api.service.WxShopMemberDayService; import com.matrix.system.shopXcx.bean.*; import com.matrix.system.shopXcx.dao.*; @@ -47,8 +46,6 @@ private WxShopMemberDayService wxShopMemberDayService; @Autowired private BizUserService bizUserService; - @Autowired - private ShopScoreRecordDao shopScoreRecordDao; private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"); @@ -95,12 +92,12 @@ /** * 处理产品规格信息 - * @param addShopOrderPOJO + * @param shopOrderDto */ - public List<ShopOrderDetails> processProductSkuInfo(ShopOrder shopOrder, AddShopOrderPOJO addShopOrderPOJO, + public List<ShopOrderDetails> processProductSkuInfo(ShopOrder shopOrder, ShopOrderDto shopOrderDto, ShopCoupon shopCoupon) { List<ShopOrderDetails> resList = new ArrayList<>(); - List<OrderProductSkuPOJO> skuList = addShopOrderPOJO.getSkuList(); + List<OrderItemDto> skuList = shopOrderDto.getOrderItemList(); if (CollectionUtils.isEmpty(skuList)) { return resList; } @@ -108,9 +105,9 @@ //设置购买数量 int total = 0; BigDecimal commodityMoney = new BigDecimal("0"); - for (OrderProductSkuPOJO orderProductSkuPOJO : skuList) { - ids.add(orderProductSkuPOJO.getSkuId()); - total += orderProductSkuPOJO.getCount(); + for (OrderItemDto orderItemDto : skuList) { + ids.add(orderItemDto.getSkuId()); + total += orderItemDto.getCount(); } shopOrder.setPurchaseQuantity(total); List<ShopSku> contrastList = shopSkuDao.selectByIds(ids); @@ -131,10 +128,10 @@ BigDecimal couponTotalMoney = new BigDecimal("0"); Double discountRate = wxShopMemberDayService.getMemberDay(); - for (OrderProductSkuPOJO orderProductSkuPOJO : skuList) { + for (OrderItemDto orderItemDto : skuList) { boolean isExist = false; for (ShopSku shopSku : contrastList) { - if (shopSku.getId().equals(orderProductSkuPOJO.getSkuId())) { + if (shopSku.getId().equals(orderItemDto.getSkuId())) { isExist = true; ShopOrderDetails shopOrderDetails = new ShopOrderDetails(); shopOrderDetails.setCreateBy(AppConstance.SYSTEM_USER); @@ -142,9 +139,9 @@ shopOrderDetails.setpId(shopSku.getPId()); shopOrderDetails.setsId(shopSku.getId()); shopOrderDetails.setPrice(shopSku.getPrice()); - shopOrderDetails.setCount(orderProductSkuPOJO.getCount()); + shopOrderDetails.setCount(orderItemDto.getCount()); BigDecimal price = new BigDecimal(shopSku.getPrice().toString()); - BigDecimal count = new BigDecimal(orderProductSkuPOJO.getCount().toString()); + BigDecimal count = new BigDecimal(orderItemDto.getCount().toString()); shopOrderDetails.setsTitle(shopSku.getName()); resList.add(shopOrderDetails); diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ScoreUseRecordVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ScoreUseRecordVo.java new file mode 100644 index 0000000..c687093 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ScoreUseRecordVo.java @@ -0,0 +1,56 @@ +package com.matrix.system.shopXcx.api.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.matrix.core.anotations.Extend; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description 积分记录表页面展示对象 + */ +@Data +@ApiModel(value = "ScoreUseRecordVo", description = "积分记录") +public class ScoreUseRecordVo { + + @Extend + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + private Integer id; + + @ApiModelProperty(value = "记录类型(1:现金消费2:员工划扣3赠送等)") + private Integer recType; + + @ApiModelProperty(value = "调整时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone="GMT+8") + private Date createTime; + + + @ApiModelProperty(value = "调整数量") + private Integer recNum; + + @ApiModelProperty(value = "业务记录ID") + private Long businessId; + + + + @ApiModelProperty(value = "调整后余额") + private Integer nowScore; + + @ApiModelProperty(value = "操作人") + private String optionName; + + @ApiModelProperty(value = "调整门店") + private String shopName; + + + @ApiModelProperty(value = "备注") + private String remarks; + + + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartBillVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartBillVo.java index 6e5c3c1..fca4eb3 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartBillVo.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartBillVo.java @@ -26,6 +26,18 @@ * 未优惠之前的总金额 */ private BigDecimal srcTotal = BigDecimal.ZERO; + /** + * 抵用积分 + */ + private BigDecimal scorePay = BigDecimal.ZERO; + + public BigDecimal getScorePay() { + return scorePay; + } + + public void setScorePay(BigDecimal scorePay) { + this.scorePay = scorePay; + } public BigDecimal getBillTotal() { return billTotal; diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartGroupVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartGroupVo.java new file mode 100644 index 0000000..0658267 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartGroupVo.java @@ -0,0 +1,46 @@ +package com.matrix.system.shopXcx.api.vo; + +import com.matrix.system.shopXcx.bean.ShopCoupon; +import com.matrix.system.shopXcx.bean.ShopShoppingCart; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * 购物车前台展示对象 + */ +@Data +public class ShopCartGroupVo { + + private ShopCoupon coupon; + + //是否满足优惠 + private boolean satisfactionCoupon; + + + private List<ShopShoppingCart> cartList=new ArrayList<>(); + + + //提示语 + private String msg=""; + + //优惠小计金额 + private BigDecimal subtotal=BigDecimal.ZERO; + + //原价 + private BigDecimal srcPrice=BigDecimal.ZERO; + + //优惠金额 + private BigDecimal couponPrice=BigDecimal.ZERO; + /** + * 抵用积分 + */ + private BigDecimal scorePay = BigDecimal.ZERO; + + private CouponReceiveInfoVO couponReceiveInfoVO; + + + +} diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartVo.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartVo.java index 185f984..6d1733e 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartVo.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/vo/ShopCartVo.java @@ -2,6 +2,7 @@ import com.matrix.system.shopXcx.bean.ShopCoupon; import com.matrix.system.shopXcx.bean.ShopShoppingCart; +import lombok.Data; import java.math.BigDecimal; import java.util.List; @@ -9,90 +10,33 @@ /** * 购物车前台展示对象 */ +@Data public class ShopCartVo { - private ShopCoupon coupon; + private ShopCoupon coupon; - private CouponReceiveInfoVO couponReceiveInfoVO; + private CouponReceiveInfoVO couponReceiveInfoVO; - public CouponReceiveInfoVO getCouponReceiveInfoVO() { - return couponReceiveInfoVO; - } - public void setCouponReceiveInfoVO(CouponReceiveInfoVO couponReceiveInfoVO) { - this.couponReceiveInfoVO = couponReceiveInfoVO; - } + //是否满足优惠 + private boolean satisfactionCoupon; - //是否满足优惠 - private boolean satisfactionCoupon; + private List<ShopShoppingCart> cartList; - private List<ShopShoppingCart> cartList; + //提示语 + private String msg = ""; - //提示语 - private String msg=""; + //优惠小计金额 + private BigDecimal subtotal = BigDecimal.ZERO; - //优惠小计金额 - private BigDecimal subtotal=BigDecimal.ZERO; + //原价 + private BigDecimal srcPrice = BigDecimal.ZERO; - //原价 - private BigDecimal srcPrice=BigDecimal.ZERO; + //优惠金额 + private BigDecimal couponPrice = BigDecimal.ZERO; + /** + * 抵用积分 + */ + private BigDecimal scorePay = BigDecimal.ZERO; - //优惠金额 - private BigDecimal couponPrice=BigDecimal.ZERO; - - public ShopCoupon getCoupon() { - return coupon; - } - - public void setCoupon(ShopCoupon coupon) { - this.coupon = coupon; - } - - public boolean isSatisfactionCoupon() { - return satisfactionCoupon; - } - - public void setSatisfactionCoupon(boolean satisfactionCoupon) { - this.satisfactionCoupon = satisfactionCoupon; - } - - public List<ShopShoppingCart> getCartList() { - return cartList; - } - - public void setCartList(List<ShopShoppingCart> cartList) { - this.cartList = cartList; - } - - public String getMsg() { - return msg; - } - - public void setMsg(String msg) { - this.msg = msg; - } - - public BigDecimal getSubtotal() { - return subtotal; - } - - public void setSubtotal(BigDecimal subtotal) { - this.subtotal = subtotal; - } - - public BigDecimal getSrcPrice() { - return srcPrice; - } - - public void setSrcPrice(BigDecimal srcPrice) { - this.srcPrice = srcPrice; - } - - public BigDecimal getCouponPrice() { - return couponPrice; - } - - public void setCouponPrice(BigDecimal couponPrice) { - this.couponPrice = couponPrice; - } } 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/java/com/matrix/system/shopXcx/bean/ShopOrderDetails.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrderDetails.java index f250956..073eb07 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrderDetails.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopOrderDetails.java @@ -1,7 +1,7 @@ package com.matrix.system.shopXcx.bean; -import com.matrix.core.pojo.EntityDTO; import com.matrix.core.anotations.Extend; +import com.matrix.core.pojo.EntityDTO; import java.math.BigDecimal; @@ -10,9 +10,18 @@ * @author jyy * @date 2019-06-10 10:58 */ + public class ShopOrderDetails extends EntityDTO{ @Extend - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; + /** + *支付方式-直接购买 + */ + public static final int PAYTYPE_MICRO = 1; + /** + *支付方式-积分兑换 + */ + public static final int PAYTYPE_SCORE=2; /** @@ -43,19 +52,33 @@ * 单价 */ private BigDecimal price; - + + /** + * 总价 + */ + private BigDecimal totalPrice; + + /** + * 支付积分单价 + */ + private BigDecimal scoreCount; + + /** + * 支付总积分 + */ + private BigDecimal totalScoreCount; + /** * 数量 */ private Integer count; - - /** - * 总价 + * 支付方式1 直接购买 2,积分兑换 */ - private BigDecimal totalPrice; - + private Integer payType; + + /** * 规格标题 @@ -132,6 +155,30 @@ this.price = price; } + public BigDecimal getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(BigDecimal totalPrice) { + this.totalPrice = totalPrice; + } + + public BigDecimal getScoreCount() { + return scoreCount; + } + + public void setScoreCount(BigDecimal scoreCount) { + this.scoreCount = scoreCount; + } + + public BigDecimal getTotalScoreCount() { + return totalScoreCount; + } + + public void setTotalScoreCount(BigDecimal totalScoreCount) { + this.totalScoreCount = totalScoreCount; + } + public Integer getCount() { return count; } @@ -140,12 +187,12 @@ this.count = count; } - public BigDecimal getTotalPrice() { - return totalPrice; + public Integer getPayType() { + return payType; } - public void setTotalPrice(BigDecimal totalPrice) { - this.totalPrice = totalPrice; + public void setPayType(Integer payType) { + this.payType = payType; } public String getsTitle() { diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProduct.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProduct.java index ca48c7e..440cac1 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProduct.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProduct.java @@ -2,6 +2,7 @@ import com.matrix.core.anotations.Extend; import com.matrix.system.common.bean.EntityDTOExt; +import lombok.Data; import java.util.List; @@ -10,13 +11,27 @@ * @author jyy * @date 2019-06-10 10:58 */ +@Data public class ShopProduct extends EntityDTOExt { + /** + * 可用积分 + */ + public static final int PAYFOR_SCORE =1; + /** + * 不用积分 + */ + public static final int NOT_PAYFOR_SCORE =2; /** - * 产品类型-服务 + * 可分销 */ - public static final int IS_SERVICE_Y=1; - public static final int IS_SERVICE_N=2; + public static final int ABLE_SALES =1; + /** + * 不可分销 + */ + public static final int NOT_ABLE_SALES=2; + + /** * 主键 @@ -28,7 +43,12 @@ * 分类ID */ private Integer categoryId; - + + /** + * 积分商城分类ID + */ + private Integer scoreCategoryId; + /** * 标题 @@ -58,10 +78,17 @@ * 手机端封面 */ private String imgMobile; - - - + /** + * 是否可用积分支付 1是,2不是 + */ + private Integer ableScorePay; + + + /** + * 是否为分销产品 1是2不是 + */ + private Integer ableSales; /** * 原价 @@ -161,6 +188,7 @@ */ @Extend private String paramRefs; + @Extend private List<ShopProductParamRef> params; @@ -246,366 +274,4 @@ - public Long getCompanyId() { - return companyId; - } - - public void setCompanyId(Long companyId) { - this.companyId = companyId; - } - - public String getBrand() { - return brand; - } - - public void setBrand(String brand) { - this.brand = brand; - } - - public String getShopIds() { - return shopIds; - } - - public void setShopIds(String shopIds) { - this.shopIds = shopIds; - } - - public ShopCoupon getShopCoupon() { - return shopCoupon; - } - - public void setShopCoupon(ShopCoupon shopCoupon) { - this.shopCoupon = shopCoupon; - } - - public Integer getCouponId() { - return couponId; - } - - public void setCouponId(Integer couponId) { - this.couponId = couponId; - } - - public String getStockNum() { - return stockNum; - } - - public void setStockNum(String stockNum) { - this.stockNum = stockNum; - } - - public Integer getIsService() { - return isService; - } - - public void setIsService(Integer isService) { - this.isService = isService; - } - - public Integer getIsSpecialPrice() { - return isSpecialPrice; - } - - public void setIsSpecialPrice(Integer isSpecialPrice) { - this.isSpecialPrice = isSpecialPrice; - } - - public Double getMarkedPrice() { - return markedPrice; - } - - public void setMarkedPrice(Double markedPrice) { - this.markedPrice = markedPrice; - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id=id; - } - - - public Integer getCategoryId() { - return categoryId; - } - - public void setCategoryId(Integer categoryId) { - this.categoryId=categoryId; - } - - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title=title; - } - - - public String getBriefIntroduction() { - return briefIntroduction; - } - - public void setBriefIntroduction(String briefIntroduction) { - this.briefIntroduction=briefIntroduction; - } - - - public Integer getCarriage() { - return carriage; - } - - public void setCarriage(Integer carriage) { - this.carriage=carriage; - } - - - public String getImgPc() { - return imgPc; - } - - public void setImgPc(String imgPc) { - this.imgPc=imgPc; - } - - - public String getImgMobile() { - return imgMobile; - } - - public void setImgMobile(String imgMobile) { - this.imgMobile=imgMobile; - } - - - - public Double getPrice() { - return price; - } - - public void setPrice(Double price) { - this.price=price; - } - - - public String getPcDetails() { - return pcDetails; - } - - public void setPcDetails(String pcDetails) { - this.pcDetails=pcDetails; - } - - - public String getMobileDetails() { - return mobileDetails; - } - - public void setMobileDetails(String mobileDetails) { - this.mobileDetails=mobileDetails; - } - - - public Integer getBuyLimit() { - return buyLimit; - } - - public void setBuyLimit(Integer buyLimit) { - this.buyLimit=buyLimit; - } - - - public Integer getLimitCycle() { - return limitCycle; - } - - public void setLimitCycle(Integer limitCycle) { - this.limitCycle=limitCycle; - } - - - public Integer getIsCanComment() { - return isCanComment; - } - - public void setIsCanComment(Integer isCanComment) { - this.isCanComment=isCanComment; - } - - - public String getMnemonicCode() { - return mnemonicCode; - } - - public void setMnemonicCode(String mnemonicCode) { - this.mnemonicCode=mnemonicCode; - } - - - public Integer getStatus() { - return status; - } - - public void setStatus(Integer status) { - this.status=status; - } - - - public Integer getDsVolume() { - return dsVolume; - } - - public void setDsVolume(Integer dsVolume) { - this.dsVolume=dsVolume; - } - - - public Integer getRsVolume() { - return rsVolume; - } - - public void setRsVolume(Integer rsVolume) { - this.rsVolume=rsVolume; - } - - - public Integer getDelFlag() { - return delFlag; - } - - public void setDelFlag(Integer delFlag) { - this.delFlag=delFlag; - } - - - public String getParamRefs() { - return paramRefs; - } - - public void setParamRefs(String paramRefs) { - this.paramRefs = paramRefs; - } - - public String getAttrs() { - return attrs; - } - - public void setAttrs(String attrs) { - this.attrs = attrs; - } - - public String getShopSku() { - return shopSku; - } - - public void setShopSku(String shopSku) { - this.shopSku = shopSku; - } - - public String getShopProductImg() { - return shopProductImg; - } - - public void setShopProductImg(String shopProductImg) { - this.shopProductImg = shopProductImg; - } - - public List<ShopProductParamRef> getParams() { - return params; - } - - public void setParams(List<ShopProductParamRef> params) { - this.params = params; - } - - public List<ShopProductAttrRef> getAttrRefs() { - return attrRefs; - } - - public void setAttrRefs(List<ShopProductAttrRef> attrRefs) { - this.attrRefs = attrRefs; - } - - public List<ShopSku> getSkus() { - return skus; - } - - public void setSkus(List<ShopSku> skus) { - this.skus = skus; - } - - public List<ShopProductImg> getProductImgs() { - return productImgs; - } - - public void setProductImgs(List<ShopProductImg> productImgs) { - this.productImgs = productImgs; - } - - public Integer getStartPrice() { - return startPrice; - } - - public void setStartPrice(Integer startPrice) { - this.startPrice = startPrice; - } - - public Integer getEndPrice() { - return endPrice; - } - - public void setEndPrice(Integer endPrice) { - this.endPrice = endPrice; - } - - public String getSortType() { - return sortType; - } - - public void setSortType(String sortType) { - this.sortType = sortType; - } - - public String getQueryType() { - return queryType; - } - - public void setQueryType(String queryType) { - this.queryType = queryType; - } - - public String getAttrValues() { - return attrValues; - } - - public void setAttrValues(String attrValues) { - this.attrValues = attrValues; - } - - public String getAtrid() { - return atrid; - } - - public void setAtrid(String atrid) { - this.atrid = atrid; - } - - public String getScore() { - return score; - } - - public Integer getServiceTime() { - return serviceTime; - } - - public void setServiceTime(Integer serviceTime) { - this.serviceTime = serviceTime; - } - - public void setScore(String score) { - this.score = score; - } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProductComment.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProductComment.java index 811dd40..9c9557d 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProductComment.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopProductComment.java @@ -3,6 +3,7 @@ import com.matrix.core.anotations.Extend; import com.matrix.core.tools.DateUtil; import com.matrix.system.common.bean.EntityDTOExt; +import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @@ -130,14 +131,14 @@ /** * 开始时间 */ - @Extend - private String commentBeginTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + private Date commentBeginTime; /** * 结束时间 */ - @Extend - private String commentEndTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + private Date commentEndTime; private Long companyId; public Long getCompanyId() { return companyId; @@ -157,19 +158,19 @@ this.dateToStrTime = dateToStrTime; } - public String getCommentBeginTime() { + public Date getCommentBeginTime() { return commentBeginTime; } - public void setCommentBeginTime(String commentBeginTime) { + public void setCommentBeginTime(Date commentBeginTime) { this.commentBeginTime = commentBeginTime; } - public String getCommentEndTime() { + public Date getCommentEndTime() { return commentEndTime; } - public void setCommentEndTime(String commentEndTime) { + public void setCommentEndTime(Date commentEndTime) { this.commentEndTime = commentEndTime; } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopScoreRecord.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopScoreRecord.java deleted file mode 100644 index 59de19f..0000000 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopScoreRecord.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.matrix.system.shopXcx.bean; - -import com.matrix.core.pojo.EntityDTO; -import com.matrix.core.anotations.Extend; -import com.matrix.core.tools.DateUtil; - -import java.math.BigDecimal; - -/** - * @description 用户积分获取记录 - * @author jyy - * @date 2019-08-09 15:10 - */ -public class ShopScoreRecord extends EntityDTO{ - @Extend - private static final long serialVersionUID = 1L; - - - /** - * 主键 - */ - private Integer id; - - - /** - * 受益人openID - */ - private String beneficiaryId; - - - /** - * 购买人openID - */ - private String buyerId; - - - /** - * 购买人名称 - */ - private String buyerName; - - - /** - * 购买人头像地址 - */ - private String buyerAvatarUrl; - - - /** - * 订单ID - */ - private Integer orderId; - - - /** - * 订单金额 - */ - private BigDecimal amount; - - - /** - * 获得积分 - */ - private Integer score; - - - /** - * 创建时间格式化成字符串 - */ - @Extend - private String createTimeStr; - - - public String getCreateTimeStr() { - if (this.getCreateTime() == null) { - return ""; - } - return DateUtil.dateToString(this.getCreateTime(), DateUtil.DATE_FORMAT_DD); - } - - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id=id; - } - - - public String getBeneficiaryId() { - return beneficiaryId; - } - - public void setBeneficiaryId(String beneficiaryId) { - this.beneficiaryId=beneficiaryId; - } - - - public String getBuyerId() { - return buyerId; - } - - public void setBuyerId(String buyerId) { - this.buyerId=buyerId; - } - - - public String getBuyerName() { - return buyerName; - } - - public void setBuyerName(String buyerName) { - this.buyerName=buyerName; - } - - - public String getBuyerAvatarUrl() { - return buyerAvatarUrl; - } - - public void setBuyerAvatarUrl(String buyerAvatarUrl) { - this.buyerAvatarUrl = buyerAvatarUrl; - } - - public Integer getOrderId() { - return orderId; - } - - public void setOrderId(Integer orderId) { - this.orderId=orderId; - } - - - public BigDecimal getAmount() { - return amount; - } - - public void setAmount(BigDecimal amount) { - this.amount=amount; - } - - - public Integer getScore() { - return score; - } - - public void setScore(Integer score) { - this.score=score; - } - - - - -} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopShoppingCart.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopShoppingCart.java index 7259104..e39c2d4 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopShoppingCart.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopShoppingCart.java @@ -14,33 +14,42 @@ */ public class ShopShoppingCart extends EntityDTOExt { @Extend - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; + /** + *购物车类型-直接购买 + */ + public static final int CAR_TYPE_MICRO =1; + /** + *购物车类型-积分兑换 + */ + public static final int CAR_TYPE_SCORE=2; - + + /** * 主键 */ private Integer cartId; - - + + /** * 用户ID */ private String cartUserId; - - + + /** * 产品ID */ private Integer cartProductId; - - + + /** * 规格ID */ private Integer cartSkuId; - - + + /** * 数量 */ @@ -50,6 +59,12 @@ * 用户是否选中 1选中 2未选中 */ private Integer isSelected; + /** + * 购物车类型 1直接支付 2积分兑换 + */ + private Integer cartType; + + /** * 门店id @@ -67,6 +82,16 @@ */ @Extend private BigDecimal price; + /** + * 积分兑换所需支付金额 + */ + @Extend + private BigDecimal scorePrice; + /** + * 积分兑换所需支付积分 + */ + @Extend + private Integer scoreCount; /** * 产品手机端封面地址 @@ -165,6 +190,22 @@ this.increaseAndDecrease = increaseAndDecrease; } + public BigDecimal getScorePrice() { + return scorePrice; + } + + public void setScorePrice(BigDecimal scorePrice) { + this.scorePrice = scorePrice; + } + + public Integer getScoreCount() { + return scoreCount; + } + + public void setScoreCount(Integer scoreCount) { + this.scoreCount = scoreCount; + } + public Integer getModifyCartNumber() { return modifyCartNumber; } @@ -251,44 +292,44 @@ public Integer getCartId() { return cartId; } - - public void setCartId(Integer cartId) { + + public void setCartId(Integer cartId) { this.cartId=cartId; } - + public String getCartUserId() { return cartUserId; } - - public void setCartUserId(String cartUserId) { + + public void setCartUserId(String cartUserId) { this.cartUserId=cartUserId; } - + public Integer getCartProductId() { return cartProductId; } - - public void setCartProductId(Integer cartProductId) { + + public void setCartProductId(Integer cartProductId) { this.cartProductId=cartProductId; } - + public Integer getCartSkuId() { return cartSkuId; } - - public void setCartSkuId(Integer cartSkuId) { + + public void setCartSkuId(Integer cartSkuId) { this.cartSkuId=cartSkuId; } - + public Integer getCartNumber() { return cartNumber; } - - public void setCartNumber(Integer cartNumber) { + + public void setCartNumber(Integer cartNumber) { this.cartNumber=cartNumber; } @@ -318,12 +359,18 @@ public void setShopCoupons(List<ShopCoupon> shopCoupons) { this.shopCoupons=shopCoupons; - + } public List<ShopCoupon> getShopCoupons() { return shopCoupons; } - - + + public Integer getCartType() { + return cartType; + } + + public void setCartType(Integer cartType) { + this.cartType = cartType; + } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java index 4e53f55..e33cd09 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java @@ -12,7 +12,7 @@ */ public class ShopSku extends EntityDTO{ @Extend - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; /** @@ -59,9 +59,19 @@ private BigDecimal invitationPrice; /** - * 积分 + * 消费可得积分 */ private Integer score; + + /** + * 积分兑换所需支付金额 + */ + private BigDecimal scorePrice; + /** + * 积分兑换所需支付积分 + */ + private Integer scoreCount; + /** * 排序 @@ -89,6 +99,15 @@ @Extend private String goodsName; + + + public Integer getScoreCount() { + return scoreCount; + } + + public void setScoreCount(Integer scoreCount) { + this.scoreCount = scoreCount; + } public BigDecimal getSealesPrice() { return sealesPrice; @@ -249,6 +268,14 @@ this.goodsName = goodsName; } + public BigDecimal getScorePrice() { + return scorePrice; + } + + public void setScorePrice(BigDecimal scorePrice) { + this.scorePrice = scorePrice; + } + @Override public boolean equals(Object obj) { //这里以name为判定标准。 diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopScoreRecordDao.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopScoreRecordDao.java deleted file mode 100644 index 9475abe..0000000 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopScoreRecordDao.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.matrix.system.shopXcx.dao; - -import org.apache.ibatis.annotations.Param; -import java.util.List; -import java.util.Map; -import com.matrix.core.pojo.PaginationVO; -import com.matrix.system.shopXcx.bean.ShopScoreRecord; - -/** - * @description 用户积分获取记录 - * @author jyy - * @date 2019-08-09 15:10 - */ -public interface ShopScoreRecordDao{ - - public int insert(@Param("item") ShopScoreRecord shopScoreRecord); - - public int batchInsert(@Param("list") List<ShopScoreRecord> shopScoreRecordList); - - public int updateByMap(Map<String, Object> modifyMap); - - public int updateByModel(@Param("record") ShopScoreRecord shopScoreRecord); - - public int deleteByIds(@Param("list") List<String> list); - - public int deleteById(Integer id); - - public int deleteByModel(@Param("record") ShopScoreRecord shopScoreRecord); - - public List<ShopScoreRecord> selectInPage(@Param("record") ShopScoreRecord shopScoreRecord, @Param("pageVo") PaginationVO pageVo); - - public List<ShopScoreRecord> selectByModel(@Param("record") ShopScoreRecord shopScoreRecord); - - public int selectTotalRecord(@Param("record") ShopScoreRecord shopScoreRecord); - - public ShopScoreRecord selectById(Integer id); - - public ShopScoreRecord selectForUpdate(Integer id); - -} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopShoppingCartDao.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopShoppingCartDao.java index bc4a432..c568f5b 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopShoppingCartDao.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopShoppingCartDao.java @@ -44,7 +44,7 @@ public Integer selectUserCartCount(@Param("shopId")Long shopId, @Param("openId")String openId); - public int updateAllSelected(@Param("openId") String openId,@Param("shopId") Long shopId, @Param("isSelected") Integer isSelected); + public int updateAllSelected(@Param("openId") String openId, @Param("shopId") Long shopId, @Param("isSelected") Integer isSelected); /** * 删除用户选中的购物车明细 diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/DiscountExplain.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/DiscountExplain.java index fb48cdf..a9519aa 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/DiscountExplain.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/dto/DiscountExplain.java @@ -1,10 +1,13 @@ package com.matrix.system.shopXcx.dto; +import lombok.Data; + import java.math.BigDecimal; /** * 订单优惠说明 */ +@Data public class DiscountExplain { /** @@ -15,13 +18,13 @@ /** * 优惠券金额 */ - private BigDecimal coupon=BigDecimal.ZERO; + private BigDecimal couponPrice =BigDecimal.ZERO; /** * 活动满减金额 */ - private BigDecimal activity=BigDecimal.ZERO; + private BigDecimal activityPrice =BigDecimal.ZERO; /** * 运费 @@ -32,44 +35,9 @@ * 最终支付金额 */ private BigDecimal payPrice=BigDecimal.ZERO; + /** + * 最终支付积分 + */ + private Integer scorePay; - public BigDecimal getBillPrice() { - return billPrice; - } - - public void setBillPrice(BigDecimal billPrice) { - this.billPrice = billPrice; - } - - public BigDecimal getCoupon() { - return coupon; - } - - public void setCoupon(BigDecimal coupon) { - this.coupon = coupon; - } - - public BigDecimal getActivity() { - return activity; - } - - public void setActivity(BigDecimal activity) { - this.activity = activity; - } - - public BigDecimal getPostage() { - return postage; - } - - public void setPostage(BigDecimal postage) { - this.postage = postage; - } - - public BigDecimal getPayPrice() { - return payPrice; - } - - public void setPayPrice(BigDecimal payPrice) { - this.payPrice = payPrice; - } } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java index 2b548ed..8bd67c4 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/MQTaskRouting.java @@ -9,6 +9,7 @@ String CREATE_ORDER = "CREATE_ORDER"; String SALES_ORDER = "SALES_ORDER"; + String SCORE_ORDER = "SCORE_ORDER"; /** * 发送微信消息 */ diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java index 2b56f6b..b345782 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/SalesOrderRefundTask.java @@ -5,6 +5,11 @@ import com.matrix.core.tools.LogUtil; import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; +import com.matrix.system.score.entity.ScoreVipDetail; +import com.matrix.system.score.service.ScoreVipDetailService; +import com.matrix.system.shopXcx.bean.ShopOrder; +import com.matrix.system.shopXcx.dao.ShopOrderDao; +import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; import com.rabbitmq.client.DeliverCallback; import com.rabbitmq.client.Delivery; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +27,14 @@ @Autowired private ShopSalesmanOrderDao shopSalesmanOrderDao; + @Autowired + private ShopOrderDao shopOrderDao; + + @Autowired + private ScoreVipDetailService scoreVipDetailService; + + @Autowired + ShopOrderDetailsDao shopOrderDetailsDao; @Override @@ -38,6 +51,18 @@ }else{ LogUtil.debug("改订单为生成分销订单={}", orderId); } + ShopOrder order=shopOrderDao.selectById(Integer.parseInt(orderId)); + + //如果是积分支付则需要返还积分 + if(order.getScorePay()!=null && order.getScorePay()>0){ + LogUtil.debug("处理积分退款={}", orderId); + scoreVipDetailService.refundScore(order.getUserId(),null,order.getScorePay(),Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH); + } + + //消费获得积分返还,如果本订单获得了积分则要扣除获得积分 + scoreVipDetailService.removeByBusinessId(order.getUserId(),null,Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH); + + } } diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/ScoreOrderTask.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/ScoreOrderTask.java new file mode 100644 index 0000000..f099fdc --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/ScoreOrderTask.java @@ -0,0 +1,80 @@ +package com.matrix.system.shopXcx.mqTask; + + +import com.matrix.biz.service.BizUserService; +import com.matrix.core.tools.LogUtil; +import com.matrix.system.score.entity.ScoreVipDetail; +import com.matrix.system.score.service.ScoreVipDetailService; +import com.matrix.system.shopXcx.bean.ShopOrder; +import com.matrix.system.shopXcx.bean.ShopOrderDetails; +import com.matrix.system.shopXcx.dao.ShopOrderDao; +import com.matrix.system.shopXcx.dao.ShopOrderDetailsDao; +import com.rabbitmq.client.DeliverCallback; +import com.rabbitmq.client.Delivery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.List; + +/** + * 订单创建积分事件处理 + */ +@Component +public class ScoreOrderTask implements DeliverCallback { + + + @Autowired + ShopOrderDao shopOrderDao; + @Autowired + ShopOrderDetailsDao shopOrderDetailsDao; + + @Autowired + BizUserService bizUserService; + + @Autowired + ScoreVipDetailService scoreVipDetailService; + + + + @Override + public void handle(String consumerTag, Delivery message) throws IOException { + + String orderId = new String(message.getBody(), "UTF-8"); + LogUtil.debug("收到订单积分任务orderId={}", orderId); + //获取订单信息 + ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); + //获取订单详情 + List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); + order.setDetails(orderDetails); + //扣除积分 + if(order.getScorePay()!=null&&order.getScorePay()>0){ + scoreVipDetailService.deductionScore(order.getUserId(),null,Long.parseLong(order.getStoreId()+""),order.getScorePay(),Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH,"商城积分抵扣"); + }else{ + //消费获得积分 + int addScore=0; + for(ShopOrderDetails shopOrderDetail : orderDetails) { + if(shopOrderDetail.getPayType()==ShopOrderDetails.PAYTYPE_MICRO){ + Integer xfkdScore= shopOrderDetail.getShopSku().getScore(); + if(xfkdScore!=null && xfkdScore>0){ + addScore+=xfkdScore; + } + } + } + if(addScore>0){ + //插入新的积分 + scoreVipDetailService.addScore( + order.getUserId(),null, + null, + Long.parseLong(order.getStoreId()+""), + addScore, + Long.parseLong(orderId+""), + ScoreVipDetail.SCORE_VIP_TYPE_CASH, + "微商城消费"); + } + } + + + } + +} diff --git a/zq-erp/src/main/resources/config/config.json b/zq-erp/src/main/resources/config/config.json index 1b5f059..e308302 100644 --- a/zq-erp/src/main/resources/config/config.json +++ b/zq-erp/src/main/resources/config/config.json @@ -8,7 +8,7 @@ "imageCompressEnable": true, /* 是否压缩图片,默认是true */ "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ "imageInsertAlign": "none", /* 插入的图片浮动方式 */ - "imageUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ + "imageUrlPrefix": "http://testfile.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ "imagePathFormat": "/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ @@ -28,13 +28,13 @@ "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ - "scrawlUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ + "scrawlUrlPrefix": "http://testfile.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ "scrawlInsertAlign": "none", /* 截图工具上传 */ "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "snapscreenUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ + "snapscreenUrlPrefix": "http://testfile.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ /* 抓取远程图片配置 */ @@ -42,7 +42,7 @@ "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ "catcherFieldName": "source", /* 提交的图片列表表单名称 */ "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "catcherUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ + "catcherUrlPrefix": "http://testfile.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ diff --git "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" index fc225f3..54180a7 100644 --- "a/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" +++ "b/zq-erp/src/main/resources/config/db/increment/\346\216\250\345\271\277\345\221\230.sql" @@ -180,3 +180,32 @@ PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分销订单'; +biz_user原来的userId改成了自增长的bigint + + +ALTER TABLE `shop_sku` + ADD COLUMN `score_price` decimal(10, 2) NULL COMMENT '积分兑换价格' AFTER `invitation_price`; + +ALTER TABLE `shop_product` + ADD COLUMN `score_category_id` bigint(20) NULL COMMENT '积分商城分类ID' AFTER `company_id`, +ADD COLUMN `able_sales` int(2) NULL COMMENT '是否为分销产品1是2不是' AFTER `score_category_id`, +ADD COLUMN `able_score_pay` int(2) NULL COMMENT '是否可用积分支付1是2不是' AFTER `able_sales`; + +ALTER TABLE `shop_shopping_cart` + ADD COLUMN `cart_type` int(2) NOT NULL COMMENT '购物车类型 1微商城 2积分商城' AFTER `company_id`; + +update shop_product set able_score_pay=1; +update shop_product set able_sales=2; + +ALTER TABLE `shop_sku` + MODIFY COLUMN `score_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '兑换所需支付价格' AFTER `invitation_price`, + ADD COLUMN `score_count` decimal(10, 2) NULL COMMENT '兑换所需积分数量' AFTER `score_price`; + +ALTER TABLE `shop_order_details` + ADD COLUMN `pay_type` int(2) NULL COMMENT '支付方式1 直接购买 2,积分兑换' AFTER `company_id`, +ADD COLUMN `score_count` decimal(20, 2) NULL COMMENT '支付积分单价' AFTER `pay_type`, +ADD COLUMN `total_score_count` decimal(20, 2) NULL COMMENT '支付总积分' AFTER `score_count`; + +ALTER TABLE `shop_order` +DROP COLUMN `score_pay`, +ADD COLUMN `score_pay` int(20) NULL COMMENT '支付积分' AFTER `company_id`; diff --git "a/zq-erp/src/main/resources/config/db/increment/\347\276\216\345\272\246\344\270\232\347\273\251\345\215\207\347\272\247.sql" "b/zq-erp/src/main/resources/config/db/increment/\347\276\216\345\272\246\344\270\232\347\273\251\345\215\207\347\272\247.sql" index dd65cdc..0a352f7 100644 --- "a/zq-erp/src/main/resources/config/db/increment/\347\276\216\345\272\246\344\270\232\347\273\251\345\215\207\347\272\247.sql" +++ "b/zq-erp/src/main/resources/config/db/increment/\347\276\216\345\272\246\344\270\232\347\273\251\345\215\207\347\272\247.sql" @@ -11,3 +11,5 @@ ALTER TABLE `sys_order_item` ADD COLUMN `refundCount` int(11) NULL COMMENT '退款数量' AFTER `pay_method_detail`; + + diff --git a/zq-erp/src/main/resources/config/test/config.json b/zq-erp/src/main/resources/config/test/config.json index 1b5f059..5b0e824 100644 --- a/zq-erp/src/main/resources/config/test/config.json +++ b/zq-erp/src/main/resources/config/test/config.json @@ -8,7 +8,7 @@ "imageCompressEnable": true, /* 是否压缩图片,默认是true */ "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ "imageInsertAlign": "none", /* 插入的图片浮动方式 */ - "imageUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ + "imageUrlPrefix": "http://testfile.hive.jyymatrix.cc", /* 图片访问路径前缀 */ "imagePathFormat": "/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ @@ -28,13 +28,13 @@ "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ "scrawlPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ - "scrawlUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ + "scrawlUrlPrefix": "http://testfile.hive.jyymatrix.cc", /* 图片访问路径前缀 */ "scrawlInsertAlign": "none", /* 截图工具上传 */ "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ "snapscreenPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "snapscreenUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ + "snapscreenUrlPrefix": "http://testfile.hive.jyymatrix.cc", /* 图片访问路径前缀 */ "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ /* 抓取远程图片配置 */ @@ -42,7 +42,7 @@ "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ "catcherFieldName": "source", /* 提交的图片列表表单名称 */ "catcherPathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "catcherUrlPrefix": "http://resource.hive.jyymatrix.cc/uploadeFile", /* 图片访问路径前缀 */ + "catcherUrlPrefix": "http://testfile.hive.jyymatrix.cc", /* 图片访问路径前缀 */ "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ diff --git a/zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml b/zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml index ca3b694..cb50621 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml @@ -3,41 +3,28 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.matrix.system.score.dao.ScoreUseRecordDao"> - <!-- 定义ScoreUseRecord 的复杂关联map --> - <resultMap type="com.matrix.system.score.entity.ScoreUseRecord" id="ScoreUseRecordMap"> - <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="recType" column="rec_type" /> - <result property="recNum" column="rec_num" /> - <result property="businessId" column="business_id" /> - <result property="scoreVipDetailId" column="score_vip_detail_id" /> - <result property="preScore" column="pre_score" /> - <result property="nowScore" column="now_score" /> - <result property="userId" column="user_id" /> - <result property="remarks" column="remarks" /> - <result property="companyId" column="company_id" /> - </resultMap> - - - <!-- 定义ScoreUseRecord 的简单map ,本map不添加其他的关联属性 --> - <resultMap type="com.matrix.system.score.entity.ScoreUseRecord" id="ScoreUseRecordSimpleMap"> - <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="recType" column="rec_type" /> - <result property="recNum" column="rec_num" /> - <result property="businessId" column="business_id" /> - <result property="scoreVipDetailId" column="score_vip_detail_id" /> - <result property="preScore" column="pre_score" /> - <result property="nowScore" column="now_score" /> - <result property="userId" column="user_id" /> - <result property="remarks" column="remarks" /> - <result property="companyId" column="company_id" /> - </resultMap> + + + <select id="selectFlowList" resultType="com.matrix.system.shopXcx.api.vo.ScoreUseRecordVo"> + + select a.*, + b.SHOP_NAME, + c.su_name as optionName + from score_use_record a + left join sys_shop_info b on a.shop_id=b.id + left join sys_users c on a.opration_user_id=c.su_id + where a.open_id=#{record.userId} + and DATE_FORMAT(a.create_time,'%Y-%m')=#{record.queryTime} + <if test="record.revenueType==1"> + and a.rec_num>0 + </if> + <if test="record.revenueType==2"> + <![CDATA[ and a.rec_num<0 ]]> + </if> + order by a.create_time desc + + </select> + + </mapper> \ No newline at end of file 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..3f9fa59 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,29 @@ "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 state=1 + <if test="openId !=null"> + and open_id=#{openId} + </if> + <if test="vipId !=null"> + and vip_id=#{vipId} + </if> 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/main/resources/mybatis/mapper/xcxShop/ShopOrderDetailsDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDetailsDao.xml index c1263ab..46254ee 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDetailsDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopOrderDetailsDao.xml @@ -19,6 +19,9 @@ <result property="sTitle" column="s_title" /> <result property="discountExplain" column="discount_explain" /> <result property="discountAmount" column="discount_amount" /> + <result property="payType" column="pay_type" /> + <result property="scoreCount" column="score_count" /> + <result property="totalScoreCount" column="total_score_count" /> </resultMap> <!-- 定义ShopOrderDetails 的复杂map --> @@ -37,22 +40,19 @@ <result property="sTitle" column="s_title" /> <result property="discountExplain" column="discount_explain" /> <result property="discountAmount" column="discount_amount" /> + <result property="payType" column="pay_type" /> + <result property="scoreCount" column="score_count" /> + <result property="totalScoreCount" column="total_score_count" /> + <!--产品信息--> <association property="shopProduct" column="p_id" select="com.matrix.system.shopXcx.dao.ShopProductDao.selectById"/> <!--规格信息--> <association property="shopSku" column="s_id" select="com.matrix.system.shopXcx.dao.ShopSkuDao.selectById"/> - <!--查询生产企业--> - <association property="productionEnterprise" column="{pId=p_id}" - select="selectProductionEnterpriseByPid"/> + </resultMap> - <!--查询产品生产企业--> - <select id="selectProductionEnterpriseByPid" resultType="java.lang.String"> - select ifnull(param_value, '') from shop_product_param_ref - where p_id = ${pId} and param_name = '生产企业' - </select> <!-- 字段sql --> <sql id="columns"> @@ -69,7 +69,10 @@ total_price, s_title, discount_explain, - discount_amount + discount_amount, + pay_type, + score_count, + total_score_count </sql> <!-- 属性sql --> @@ -87,7 +90,10 @@ #{item.totalPrice}, #{item.sTitle}, #{item.discountExplain}, - #{item.discountAmount} + #{item.discountAmount}, + #{item.payType}, + #{item.scoreCount}, + #{item.totalScoreCount} </sql> <!-- where sql --> @@ -123,6 +129,17 @@ </if> <if test="(record.discountAmount!=null and record.discountAmount!='') or (record.discountAmount!='' and record.discountAmount==0) "> and discount_amount = #{record.discountAmount} + </if> + <if test="(record.payType!=null and record.payType!='') or (record.payType!='' and record.payType==0) "> + and pay_type = #{record.payType} + </if> + + <if test="(record.scoreCount!=null and record.scoreCount!='') or (record.scoreCount!='' and record.scoreCount==0) "> + and score_count = #{record.scoreCount} + </if> + + <if test="(record.totalScoreCount!=null and record.totalScoreCount!='') or (record.totalScoreCount!='' and record.totalScoreCount==0) "> + and total_score_count = #{record.totalScoreCount} </if> </if> @@ -186,7 +203,20 @@ </if> <if test="_parameter.containsKey('discountAmount')"> discount_amount = #{discountAmount}, - </if> + </if> + + <if test="_parameter.containsKey('payType')"> + pay_type = #{payType}, + </if> + + <if test="_parameter.containsKey('scoreCount')"> + score_count = #{scoreCount}, + </if> + + <if test="_parameter.containsKey('totalScoreCount')"> + total_score_count = #{totalScoreCount}, + </if> + </set> WHERE id=#{id} </update> @@ -223,10 +253,18 @@ <if test="record.discountAmount != null "> discount_amount = #{record.discountAmount}, </if> + <if test="record.payType != null "> + pay_type = #{record.payType}, + </if> + <if test="record.scoreCount != null "> + score_count = #{record.scoreCount}, + </if> + <if test="record.totalScoreCount != null "> + total_score_count = #{record.totalScoreCount}, + </if> </set> WHERE id=#{record.id} </update> - <!-- 批量删除 --> <delete id="deleteByIds" parameterType="java.util.List"> delete from shop_order_details where id in diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml index c32a212..9935dd4 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductCommentDao.xml @@ -104,7 +104,7 @@ </if> <if test="record.companyId != null and record.companyId !='' "> - and company_id = #{record.companyId} + and c.company_id = #{record.companyId} </if> <if test="(record.comContent!=null and record.comContent!='') or (record.comContent!='' and record.comContent==0) "> @@ -455,6 +455,7 @@ and c.product_id = #{record.productId} </if> </if> + and c.com_audit_status=1 AND p.del_flag = 2 AND o.del_flag = 2 AND c.del_flag = 2 diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductDao.xml index 2c2cf8c..91c105d 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopProductDao.xml @@ -42,6 +42,10 @@ <result property="couponId" column="couponId"></result> <result property="serviceTime" column="service_time"></result> <result property="companyId" column="company_id"/> + <result property="ableScorePay" column="able_score_pay"/> + <result property="ableSales" column="able_sales"/> + <result property="scoreCategoryId" column="score_category_id"/> + <association property="shopCoupon" select="com.matrix.system.shopXcx.dao.ShopCouponDao.selectById" column="{id=couponId}"></association> </resultMap> @@ -80,6 +84,9 @@ <result property="couponId" column="couponId"></result> <result property="serviceTime" column="service_time"></result> <result property="companyId" column="company_id"/> + <result property="ableScorePay" column="able_score_pay"/> + <result property="ableSales" column="able_sales"/> + <result property="scoreCategoryId" column="score_category_id"/> </resultMap> <sql id="columns"> @@ -113,7 +120,11 @@ is_service, service_time, shop_ids, - company_id + company_id, + able_score_pay, + able_sales, + score_category_id + </sql> <!-- 属性sql --> @@ -148,7 +159,11 @@ #{item.isService}, #{item.serviceTime}, #{item.shopIds}, - #{item.companyId} + #{item.companyId}, + #{item.ableScorePay}, + #{item.ableSales}, + #{item.scoreCategoryId} + </sql> <!-- where sql --> <sql id="where_sql"> @@ -237,6 +252,15 @@ and a.company_id = #{record.companyId} </if> + <if test="record.ableScorePay != null and record.ableScorePay !='' "> + and a.able_score_pay = #{record.ableScorePay} + </if> + <if test="record.ableSales != null and record.ableSales !='' "> + and a.able_sales = #{record.ableSales} + </if> + <if test="record.scoreCategoryId != null and record.scoreCategoryId "> + and a.score_category_id = #{record.scoreCategoryId} + </if> </if> @@ -311,6 +335,17 @@ and b.attr_full_path like concat('%/',#{record.attrs},'/%') </if> + + <if test="record.ableScorePay != null and record.ableScorePay !='' "> + and a.able_score_pay = #{record.ableScorePay} + </if> + <if test="record.ableSales != null and record.ableSales !='' "> + and a.able_sales = #{record.ableSales} + </if> + <if test="record.scoreCategoryId != null and record.scoreCategoryId "> + and a.score_category_id = #{record.scoreCategoryId} + </if> + </if> @@ -418,6 +453,16 @@ <if test="_parameter.containsKey('companyId')"> company_id = #{companyId}, </if> + <if test="_parameter.containsKey('scoreCategoryId')"> + score_category_id = #{scoreCategoryId}, + </if> + <if test="_parameter.containsKey('ableSales')"> + able_sales = #{ableSales}, + </if> + <if test="_parameter.containsKey('ableScorePay')"> + able_score_pay = #{ableScorePay}, + </if> + </set> WHERE id=#{id} @@ -500,6 +545,15 @@ shop_ids = #{record.shopIds}, </if> + <if test="record.ableScorePay != null and record.ableScorePay !='' "> + able_score_pay = #{record.ableScorePay}, + </if> + <if test="record.ableSales != null and record.ableSales !='' "> + able_sales = #{record.ableSales}, + </if> + <if test="record.scoreCategoryId != null and record.scoreCategoryId "> + score_category_id = #{record.scoreCategoryId}, + </if> </set> WHERE id=#{record.id} @@ -588,6 +642,9 @@ a.marked_price, b.attr_full_path, a.couponId, + a.able_score_pay, + a.able_sales, + a.score_category_id, (SELECT ROUND(SUM(ss.stock),2) from shop_sku ss where ss.p_id = a.id) as stockNum, GROUP_CONCAT(DISTINCT(s.atrid) order by a.id SEPARATOR ',') atrid from shop_product a left join shop_product_attr_ref b on a.id = b.p_id @@ -628,6 +685,9 @@ a.marked_price, a.service_time, a.couponId, + a.able_score_pay, + a.able_sales, + a.score_category_id, (SELECT ROUND(SUM(ss.stock),2) from shop_sku ss where ss.p_id = a.id) as stockNum from shop_product a where a.id in (${productIds}) and shop_ids=#{shopId} @@ -665,6 +725,9 @@ a.marked_price, b.attr_full_path, a.couponId, + a.able_score_pay, + a.able_sales, + a.score_category_id, a.service_time, (SELECT ROUND(SUM(ss.stock),2) from shop_sku ss where ss.p_id = a.id) as stockNum, GROUP_CONCAT(DISTINCT(s.atrid) order by a.id SEPARATOR ',') atrid @@ -730,6 +793,9 @@ b.attr_full_path, a.service_time, a.couponId, + a.able_score_pay, + a.able_sales, + a.score_category_id, (SELECT ROUND(SUM(s.stock),2) from shop_sku s where s.p_id = a.id) as stockNum, (SELECT COUNT(p.com_id) from shop_product_comment p where p.product_id=a.id and p.del_flag=2 and p.com_audit_status=1 and p.com_score=5) as comment from shop_product a @@ -771,6 +837,18 @@ <if test="(record.shopIds!=null and record.shopIds!='') or (record.shopIds!='' and record.shopIds==0) "> and find_in_set(#{record.shopIds}, a.shop_ids) </if> + + <if test="record.ableScorePay != null and record.ableScorePay !='' "> + and a.able_score_pay = #{record.ableScorePay} + </if> + <if test="record.ableSales != null and record.ableSales !='' "> + and a.able_sales = #{record.ableSales} + </if> + <if test="record.scoreCategoryId != null and record.scoreCategoryId "> + and a.score_category_id = #{record.scoreCategoryId} + </if> + + </where> GROUP BY a.id <if test="record.queryType != null and record.queryType == 1"> @@ -828,6 +906,9 @@ is_special_price, marked_price, couponId, + a.able_score_pay, + a.able_sales, + a.score_category_id, (SELECT SUM(s.stock) from shop_sku s where s.p_id = a.id) as stockNum, (SELECT ROUND(SUM(s.stock),2) from shop_sku s where s.p_id = a.id) as stockNum, shop_ids diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopShoppingCartDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopShoppingCartDao.xml index 8e59026..4cf0397 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopShoppingCartDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopShoppingCartDao.xml @@ -27,6 +27,7 @@ <result property="isSelected" column="isSelected" /> <result property="shopId" column="shop_id" /> <result property="companyId" column="company_id" /> + <result property="cartType" column="cart_type" /> </resultMap> @@ -44,6 +45,8 @@ <result property="isSelected" column="isSelected" /> <result property="shopId" column="shop_id" /> <result property="companyId" column="company_id" /> + <result property="cartType" column="cart_type" /> + </resultMap> <!-- 字段sql --> @@ -59,7 +62,9 @@ cart_number, isSelected, shop_id, - company_id + company_id, + cart_type + </sql> <!-- 属性sql --> @@ -75,7 +80,9 @@ #{item.cartNumber}, #{item.isSelected}, #{item.shopId}, - #{item.companyId} + #{item.companyId}, + #{item.cartType} + </sql> <!-- where sql --> @@ -122,6 +129,7 @@ <if test="record.companyId != null and record.companyId !='' "> and c.company_id = #{record.companyId} </if> + </if> @@ -268,7 +276,8 @@ p.img_mobile, p.img_pc, u.nick_name, - s.NAME + s.NAME, + c.cart_type, from shop_shopping_cart c LEFT JOIN shop_product p ON c.cart_product_id = p.id LEFT JOIN shop_sku s ON c.cart_sku_id = s.id @@ -325,7 +334,10 @@ p.img_pc, p.buy_limit, s.NAME, - s.stock + s.stock, + s.score_count, + s.score_price, + c.cart_type from shop_shopping_cart c LEFT JOIN shop_product p ON c.cart_product_id = p.id LEFT JOIN shop_sku s ON c.cart_sku_id = s.id @@ -351,7 +363,7 @@ <select id="selectUserCartCount" resultType="java.lang.Integer" > select sum(cart_number) from shop_shopping_cart c LEFT JOIN shop_product p on p.id = c.cart_product_id -where c.shop_Id=#{shopId} and p.del_flag = 2 and cart_user_id=#{openId}; +where c.shop_Id=#{shopId} and p.del_flag = 2 and cart_user_id=#{openId} </select> <!-- 根据id 锁表查询--> diff --git a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml index 1c85265..7d6030d 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml @@ -24,6 +24,8 @@ <result property="shopId" column="shop_id"/> <result property="sealesPrice" column="seales_price"/> <result property="invitationPrice" column="invitation_price"/> + <result property="scorePrice" column="score_price"/> + <result property="scoreCount" column="score_count"/> @@ -50,6 +52,8 @@ <result property="shopId" column="shop_id"/> <result property="sealesPrice" column="seales_price"/> <result property="invitationPrice" column="invitation_price"/> + <result property="scorePrice" column="score_price"/> + <result property="scoreCount" column="score_count"/> </resultMap> <!-- 字段sql --> @@ -72,7 +76,11 @@ stock_code, shop_id, seales_price, -invitation_price +invitation_price, + score_price, +score_count + + </sql> <!-- 属性sql --> @@ -95,7 +103,10 @@ #{item.stockCode}, #{item.shopId}, #{item.sealesPrice}, - #{item.invitationPrice} + #{item.invitationPrice}, + #{item.scorePrice}, + #{item.scoreCount} + </sql> @@ -136,6 +147,18 @@ <if test="(record.shopId!=null and record.shopId!='') or (record.shopId!='' and record.shopId==0) "> and shop_id = #{record.shopId} </if> + + <if test="(record.scorePrice!=null and record.scorePrice!='') or (record.scorePrice!='' and record.scorePrice==0) "> + and score_price = #{record.scorePrice} + </if> + + + <if test="(record.scoreCount!=null and record.scoreCount!='') or (record.scoreCount!='' and record.scoreCount==0) "> + and score_count = #{record.scoreCount} + </if> + + + </if> </sql> @@ -202,6 +225,16 @@ <if test="_parameter.containsKey('sealesPrice')"> seales_price = #{sealesPrice}, </if> + + <if test="_parameter.containsKey('scorePrice')"> + score_price = #{scorePrice}, + </if> + + <if test="_parameter.containsKey('scoreCount')"> + score_count = #{scoreCount}, + </if> + + </set> WHERE id=#{id} </update> @@ -252,6 +285,14 @@ invitation_price = #{record.invitationPrice}, </if> + <if test="record.scorePrice != null "> + score_price = #{record.scorePrice}, + </if> + + <if test="record.scoreCount != null "> + score_count = #{record.scoreCount}, + </if> + </set> WHERE id=#{record.id} diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html index 020f4fc..ef02fde 100644 --- a/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html +++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopAdvertisType-list.html @@ -518,7 +518,10 @@ //改变编辑页面,切换页面元素 changePage(index){ + this.currentPage=this.pageList[index]; + this.currentPageCode=this.pageList[index].code; + console.log(this.currentPageCode); this.loadPageAds(); }, loadPageAds() { diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html index dec22fc..fe12dac 100644 --- a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html @@ -42,7 +42,7 @@ <div class="panel-heading">基本信息</div> <div class="panel-body"> <div class="form-group"> - <label class="col-sm-2 control-label">分类ID + <label class="col-sm-2 control-label">产品分类 <span class="text-danger">*</span> </label> <div class="col-sm-4"> @@ -69,6 +69,40 @@ maxLength="1000" dataType="*" th:value="${obj.briefIntroduction}" nullmsg="产品简介不能为空"> </div> + <label class="col-sm-2 control-label">是否可分销 + <span class="text-danger">*</span> + </label> + <div class="col-sm-4"> + <select th:field="${obj.ableSales}" class="form-control select2 " size="1" + name="ableSales" + id="ableSales" style="width: 100%"> + <option value="1" th:selected="${obj.ableSales == '1'}">可分销</option> + <option value="2" th:selected="${obj.ableSales == '2'}">不可分销</option> + </option> + </select> + </div> + </div> + <div class="form-group"> + <label class="col-sm-2 control-label">是否积分抵 + <span class="text-danger">*</span> + </label> + <div class="col-sm-4"> + <select th:field="${obj.ableScorePay}" class="form-control select2 " size="1" + name="ableScorePay" + id="ableScorePay" style="width: 100%"> + <option value="2" th:selected="${obj.ableScorePay == '2'}">不可抵扣</option> + <option value="1" th:selected="${obj.ableScorePay == '1'}">可抵扣</option> + </option> + </select> + </div> + <label class="col-sm-2 control-label">积分商城分类 + <span class="text-danger">*</span> + </label> + <div class="col-sm-4"> + <select class="form-control select2 " size="1" name="scoreCategoryId" + id="scoreCategoryId" style="width: 100%"> + </select> + </div> </div> <div class="form-group"> @@ -87,14 +121,7 @@ dataType="n" nullmsg="展示销量不能为空" th:value="${obj.dsVolume}" errormsg="请填写数字"> </div> - <!--<label class="col-sm-2 control-label">运费 - <span class="text-danger">*</span> - </label> - <div class="col-sm-4"> - <input autocomplete="off" type="text" class="form-control" name="carriage" - maxLength="250" datatype="*" - th:value="${obj.carriage}" nullmsg="运费不能为空"> - </div>--> + </div> <div class="form-group"> <label class="col-sm-2 control-label">限购数量 @@ -117,42 +144,7 @@ </div> </div> - <div class="form-group"> - <label class="col-sm-2 control-label">是否为服务项目 - </label> - <div class="col-sm-4"> - <select th:field="${obj.isService}" class="form-control " size="1" - name="isService" - id="isService" style="width: 100%"> - <option value="2" th:selected="${obj.isService == '2'}">否</option> - <option value="1" th:selected="${obj.isService == '1'}">是</option> - </option> - - </select> - </div> - - <label class="col-sm-2 control-label">服务时长 - </label> - <div class="col-sm-4"> - <input autocomplete="off" type="text" class="form-control" name="serviceTime" - maxLength="50" - th:value="${obj.serviceTime}" > - </div> - - - </div> - - <!--<div class="form-group"> - - <label class="col-sm-2 control-label">真实销量 - </label> - <div class="col-sm-4"> - <input autocomplete="off" type="text" class="form-control" name="rsVolume" - - th:value="${obj.rsVolume}" errormsg="请填写数字"> - </div> - </div>--> <div class="form-group"> <label class="col-sm-2 control-label">属性设置 </label> <input autocomplete="off" name="attrs" id="attrs" type="hidden" > @@ -226,11 +218,13 @@ <th>规格图片地址<span class="text-danger">*</span></th> <th>库存<span class="text-danger">*</span></th> <th>价格<span class="text-danger">*</span></th> - <th>积分</th> + <th>消费可得积分</th> <th>关联ERP产品</th> <th>排序</th> <th>推广提成</th> <th>邀请提成</th> + <th>兑换所需金额</th> + <th>兑换所需积分</th> <th>操作</th> </tr> </table> @@ -361,6 +355,8 @@ <td><input autocomplete="off" type="text" class="form-control" name=""></td> <td><input autocomplete="off" type="text" class="form-control" name=""></td> <td><input autocomplete="off" type="text" class="form-control" name=""></td> + <td><input autocomplete="off" type="text" class="form-control" name=""></td> + <td><input autocomplete="off" type="text" class="form-control" name=""></td> <td><i class="fa fa-trash form-control-static" onclick="delThis('trId')"></i></td> </tr> </script> @@ -395,6 +391,9 @@ }); $(function () { initSeclect("#parentId",[[${obj.categoryId}]]); + initScoreSeclect("#scoreCategoryId",[[${obj.scoreCategoryId}]]); + + initAttrSeclect("#attrIds"); $("#mobileDetails").html(obj.mobileDetails); $("#pcDetails").html(obj.pcDetails); @@ -538,6 +537,14 @@ if (invitationPrice == null || typeof invitationPrice == 'undefined') { invitationPrice = ""; } + var scorePrice = shopSkus[c].scorePrice; + if (scorePrice == null || typeof scorePrice == 'undefined') { + scorePrice = ""; + } + var scoreCount = shopSkus[c].scoreCount; + if (scoreCount == null || typeof scoreCount == 'undefined') { + scoreCount = ""; + } var html= @@ -554,6 +561,8 @@ +'<td><input autocomplete="off" type="text" class="form-control" value="'+sort+'" name=""></td>' +'<td><input autocomplete="off" type="text" class="form-control" value="'+sealesPrice+'" name=""></td>' +'<td><input autocomplete="off" type="text" class="form-control" value="'+invitationPrice+'" name=""></td>' + +'<td><input autocomplete="off" type="text" class="form-control" value="'+scorePrice+'" name=""></td>' + +'<td><input autocomplete="off" type="text" class="form-control" value="'+scoreCount+'" name=""></td>' +'<td><i class="fa fa-trash form-control-static" onclick="delThis(\''+trId+'\')"></i></td>' +'</tr>'; $("#skutable").find("tbody").append(html); @@ -617,10 +626,6 @@ layer.msg(result.info, { icon : 2, time : 1000, - end:function(){ - parent.myGrid.serchData(); - MTools.closeForm() - } }); return null; } @@ -655,6 +660,22 @@ //初始化分类ID function initSeclect(seler, def) { $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=cpfl&status=1", + function (loj) { + $(seler).createSelectTree( + loj.attr("result").rows, + { + id: "attrId", + parent: "parentId", + value: "attrName", + append: false, + defaultValue: def, + defaultHtml: '' + }); + }); + } + //初始化分积分商城分类ID + function initScoreSeclect(seler, def) { + $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=jfsccpfl&status=1", function (loj) { $(seler).createSelectTree( loj.attr("result").rows, @@ -724,68 +745,75 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; - var id = tds.eq(length - 10).find("input").val(); + var id = tds.eq(length - 12).find("input").val(); if(id == null){ id =""; } sku.id = id; //规格名称 - var name = tds.eq(length - 9).find("input").val(); + var name = tds.eq(length - 11).find("input").val(); if(name == null){ name = ""; } sku.name = name; //图片地址 - var path = tds.eq(length - 8).find("img").attr("src"); + var path = tds.eq(length - 10).find("img").attr("src"); if(path == null){ path = ""; } sku.imgPath = path; //库存 - var stock = tds.eq(length - 7).find("input").val(); + var stock = tds.eq(length - 9).find("input").val(); if(stock == ""){ stock = 0; } sku.stock = stock; //价格 - var price = tds.eq(length -6).find("input").val(); + var price = tds.eq(length -8).find("input").val(); if(price == ""){ price =0; } sku.price = price; //积分 - var score = tds.eq(length - 5).find("input").val(); + var score = tds.eq(length - 7).find("input").val(); if(score == ""){ score = 0; } sku.score = score; //品种编码 - var stockCode = tds.eq(length - 4).find("input").val(); + var stockCode = tds.eq(length - 6).find("input").val(); if(stockCode == null || typeof stockCode == 'undefined'){ stockCode = ''; } sku.stockCode = stockCode; //排序 - var sort = tds.eq(length - 3).find("input").val(); + var sort = tds.eq(length - 5).find("input").val(); if(sort == ""){ sort = 0; } sku.sort = sort; //推广提成 - var sealesPrice = tds.eq(length - 2).find("input").val(); + var sealesPrice = tds.eq(length - 4).find("input").val(); sku.sealesPrice = sealesPrice; //邀请提成 - var invitationPrice = tds.eq(length - 1).find("input").val(); + var invitationPrice = tds.eq(length - 3).find("input").val(); sku.invitationPrice = invitationPrice; + + //兑换所需金额 + var scorePrice = tds.eq(length - 2).find("input").val(); + sku.scorePrice = scorePrice; + //兑换所需积分 + var scoreCount = tds.eq(length - 1).find("input").val(); + sku.scoreCount = scoreCount; skus.push(sku); } @@ -794,8 +822,14 @@ return skus; } + /*验证sku表格中的参数*/ function getSkusValues() { + + var ableScorePay=$("#ableScorePay").val(); + var ableSales=$("#ableSales").val(); + + var flag = false; var reg = new RegExp("(^[1-9]([0-9]+)?(\\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\\.[0-9]([0-9])?$)"); $("#skutable tbody").find("tr").each(function(i) { @@ -803,7 +837,38 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; - var name = tds.eq(length - 9).find("input").val(); + + if(ableSales==1){ + //推广提成 + var sealesPrice = tds.eq(length - 4).find("input").val(); + //邀请提成 + var invitationPrice = tds.eq(length - 3).find("input").val(); + if(sealesPrice == ""||invitationPrice==""){ + layer.msg("请填写推广提成和邀请提成",{ + icon : 2, + time : 2000 + }); + flag = true; + return false; + } + } + + if(ableScorePay==1){ + //兑换所需金额 + var scorePrice = tds.eq(length - 2).find("input").val(); + //兑换所需积分 + var scoreCount = tds.eq(length - 1).find("input").val(); + if(scorePrice == ""||scoreCount==""){ + layer.msg("请填写兑换所需金额和积分",{ + icon : 2, + time : 2000 + }); + flag = true; + return false; + } + } + + var name = tds.eq(length - 11).find("input").val(); if(name == ""){ layer.msg("请填写规格名称",{ icon : 2, @@ -821,7 +886,7 @@ return false; } - var stock = tds.eq(length -7).find("input").val(); + var stock = tds.eq(length -9).find("input").val(); if(stock == ""){ layer.msg("请填写库存",{ icon : 2, @@ -830,7 +895,7 @@ flag = true; return false; } - var price = tds.eq(length - 6).find("input").val(); + var price = tds.eq(length - 8 ).find("input").val(); if(price == ""){ layer.msg("请填写价格",{ icon : 2, diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-list.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-list.html index a7e7d16..6f7468a 100644 --- a/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-list.html +++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-list.html @@ -35,10 +35,18 @@ <input autocomplete="off" id="search-text" name="title" placeholder="输入查询关键词" type="text" class="form-control"> </div> - + <div class="form-group"> + <label class="control-label">积分抵扣</label> + <select style="width:100px;" class="form-control select2" size="1" + name="ableScorePay" > + <option value="">请选择</option> + <option value="1">可抵扣</option> + <option value="2">不可抵扣</option> + </select> + </div> <div class="form-group"> <label class="control-label">是否上架</label> - <select style="width:200px;" class="form-control select2" size="1" + <select style="width:100px;" class="form-control select2" size="1" name="status" id="status"> <option value="">请选择</option> @@ -47,10 +55,10 @@ </select> </div> <div class="form-group"> - <label class="control-label">是否为服务</label> - <select style="width:200px;" class="form-control select2" size="1" - name="isService" - id="isService"> + <label class="control-label">是否可分销</label> + <select style="width:100px;" class="form-control select2" size="1" + name="ableSales" + id="ableSales"> <option value="">请选择</option> <option value="1">是</option> <option value="2">否</option> @@ -114,12 +122,13 @@ <tr> <th data-checkbox="true"></th> <th data-formatter="MGrid.indexfn" data-align="center">序号</th> - <th data-field="id" data-align="center">产品ID</th> + <th data-field="id" data-align="center" >ID</th> + <th data-field="ableScorePay" data-align="center" data-formatter="ableScorePay">积分抵扣</th> <th data-field="title" data-align="center">产品名称</th> <th data-field="imgMobile" data-align="center" data-formatter="MGrid.getImage">产品图片</th> <th data-field="attrValues" data-align="center" data-formatter="formatAttr">产品属性</th> <th data-field="price" data-align="center">价格</th> - <th data-field="score" data-align="center">积分</th> + <th data-field="scorePrice" data-align="center">兑换所需积分</th> <th data-field="status" data-align="center" data-formatter="isStatus">是否上架</th> <th data-field="rsVolume" data-align="center">真实销量</th> @@ -275,7 +284,7 @@ //初始化属性下拉选 function initAttrsSeclect(seler, def) { console.log(1); - $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=cpfl", + $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=productColumn", function (loj) { $(seler).createSelectTree( loj.attr("result").rows, @@ -290,6 +299,16 @@ }); } + function ableScorePay(value, row, index) { + var html = ""; + if (value ==1) { + html="可抵扣" + }else{ + html="不可抵扣" + } + return html; + } + /** * 格式化属性 */ diff --git a/zq-erp/src/main/resources/templates/views/admin/shop/shopProductComment-list.html b/zq-erp/src/main/resources/templates/views/admin/shop/shopProductComment-list.html index 4bbe610..c2634e8 100644 --- a/zq-erp/src/main/resources/templates/views/admin/shop/shopProductComment-list.html +++ b/zq-erp/src/main/resources/templates/views/admin/shop/shopProductComment-list.html @@ -52,6 +52,22 @@ <input autocomplete="off" id="search-text" name="nickName" placeholder="输入查询关键词" type="text" class="form-control"> </div> + <div class="form-group mr-20 ml-20"> + <select class="form-control select2" size="1" + name="comAuditStatus" + id="comAuditStatus" style="width: 98%"> + <option value="">请选择</option> + <option value="0" >未审核</option> + <option value="1" >审核通过</option> + <option value="2" >审核不通过</option> + </select> + </div> + <div class="form-group mr-20 ml-20"> + <input autocomplete="off" name="commentBeginTime" + type="text" class="form-control datetimepicker" > + <input autocomplete="off" name="commentEndTime" + type="text" class="form-control datetimepicker"> + </div> <div class="form-group"> <button onclick="myGrid.serchData(1)" type="button" class="btn btn-info"> @@ -62,64 +78,10 @@ </button> </div> </div> - <!-- 高级搜索 --> - <div class="senior-content"> - <!-- <div><a class="serch-close closestyle">×</a></div> --> - <div class="serch-headline">高级搜索</div> - <div> - <div style="margin-bottom: 20px!important;"> - <div class="col-sm-6" style="text-align: right!important;"> - <label class="col-sm-12 control-label"> - 开始日期: - </label> - </div> - <div class="col-sm-6"> - <input autocomplete="off" name="commentBeginTime" readonly="readonly" - type="text" class="form-control datetimepicker" style="width: 98%"> - </div> - </div> - <div style="margin-bottom: 20px!important;"> - <div class="col-sm-6" style="text-align: right!important;"> - <label class="col-sm-12 control-label"> - 结束日期: - </label> - </div> - <div class="col-sm-6"> - <input autocomplete="off" name="commentEndTime" readonly="readonly" - type="text" class="form-control datetimepicker" style="width: 98%"> - </div> - </div> - - <div style="margin-bottom: 20px!important;"> - <div class="col-sm-6" style="text-align: right!important;"> - <label class="col-sm-12 control-label"> - 审核状态: - </label> - </div> - <div class="col-sm-6"> - <select class="form-control select2" size="1" - name="comAuditStatus" - id="comAuditStatus" style="width: 98%"> - <option value="">请选择</option> - <option value="0" >未审核</option> - <option value="1" >审核通过</option> - <option value="2" >审核不通过</option> - </select> - </div> - </div> - - </div> - <div class="button col-sm-12"> - <button type="button" class="btn btn-sm btn-info mr20" onclick="myGrid.serchData()">确认</button> - <button type="button" class="btn btn-warning serch-close">取消</button> - </div> - </div> </form> </div> - <div class="col-md-1 text-r layui-anim" data-anim="layui-anim-up"> - <a class="senior-serch">高级搜索</a> - </div> + </div> </div> </div> @@ -151,7 +113,14 @@ <script type="text/javascript"> var myGrid; $(function(){ - MTools.ininDatetimepicker(".datetimepicker"); + var _initParam = {format : 'yyyy-mm-dd hh:ii', + todayBtn : true, + autoclose : true, + startView : 2, + maxView : 3, + minView : 0}; + MTools.ininDatetimepicker(_initParam); + MTools.limitStartEndTime(_initParam); var delUrl=""; delUrl=basePath+"/admin/shopProductComment/del" ; myGrid=MGrid.initGrid({ diff --git a/zq-erp/src/test/java/com/matrix/JyyTests.java b/zq-erp/src/test/java/com/matrix/JyyTests.java index b2b3243..744c5e5 100644 --- a/zq-erp/src/test/java/com/matrix/JyyTests.java +++ b/zq-erp/src/test/java/com/matrix/JyyTests.java @@ -1,5 +1,7 @@ package com.matrix; +import com.matrix.system.score.dao.ScoreVipDetailDao; +import com.matrix.system.score.service.ScoreVipDetailService; import com.matrix.system.shopXcx.dao.ShopOrderV2Dao; import org.junit.Test; import org.junit.runner.RunWith; @@ -22,12 +24,26 @@ @Autowired private ShopOrderV2Dao shopOrderV2Dao; + @Autowired + ScoreVipDetailDao scoreVipDetailDao; + @Autowired + ScoreVipDetailService scoreVipDetailService; + + @Test + public void scoreVipDetailService() throws InterruptedException { + scoreVipDetailService.addScore("oJkRK4yelehsY4S7I6Ee1ydWtQMI",null,null,null,15,1L,1,"测试"); + } /** * */ @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