he2802 пре 4 година
родитељ
комит
aa7993c0a5
18 измењених фајлова са 542 додато и 124 уклоњено
  1. 20 11
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java
  2. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsEditBo.java
  3. 56 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsQueryBo.java
  4. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/Order.java
  5. 50 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  6. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java
  7. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  8. 103 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  9. 69 6
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  10. 49 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderGoodsVo.java
  11. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/OrderPossessUserAddBo.java
  12. 2 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/OrderPossessUserEditBo.java
  13. 1 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/OrderPossessUserQueryBo.java
  14. 7 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/OrderPossessUser.java
  15. 2 21
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/OrderPossessUserVo.java
  16. 41 70
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  17. 18 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml
  18. 4 4
      zhongzheng-system/src/main/resources/mapper/modules/user/OrderPossessUserMapper.xml

+ 20 - 11
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java

@@ -2,30 +2,39 @@ package com.zhongzheng.modules.order.bo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import java.util.Date;
+
 
 import java.math.BigDecimal;
 
 /**
- * 订单添加对象 order
+ * 订单商品添加对象 order_goods
  *
- * @author hjl
- * @date 2021-05-19
+ * @author ruoyi
+ * @date 2021-06-30
  */
 @Data
 @ApiModel("订单商品添加对象")
 public class OrderGoodsAddBo {
 
-
-    /** 用户ID */
+    /** 订单号 */
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    /** 商品类型 1课程 2题库 3考试重点 */
+    @ApiModelProperty("商品类型 1课程 2题库 3考试重点")
+    private Integer goodsType;
+    /** 商品ID */
     @ApiModelProperty("商品ID")
     private Long goodsId;
-
+    /** 商品价格 */
+    @ApiModelProperty("商品价格")
+    private BigDecimal goodsPrice;
     /** 商品数量 */
     @ApiModelProperty("商品数量")
-    private Integer num;
-    /** 类型 1课程 2题库 3考试重点 */
-    @ApiModelProperty("类型 1课程 2题库 3考试重点")
-    private Integer type;
-
+    private Long num;
+    /** 添加时间 */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
 }

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsEditBo.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+import java.math.BigDecimal;
+
+/**
+ * 订单商品编辑对象 order_goods
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+@Data
+@ApiModel("订单商品编辑对象")
+public class OrderGoodsEditBo {
+
+
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long id;
+
+    /** 订单号 */
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    /** 商品类型 1课程 2题库 3考试重点 */
+    @ApiModelProperty("商品类型 1课程 2题库 3考试重点")
+    private Integer goodsType;
+
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    /** 商品价格 */
+    @ApiModelProperty("商品价格")
+    private BigDecimal goodsPrice;
+
+    /** 商品数量 */
+    @ApiModelProperty("商品数量")
+    private Long num;
+}

+ 56 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsQueryBo.java

@@ -0,0 +1,56 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import java.math.BigDecimal;
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 订单商品分页查询对象 order_goods
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("订单商品分页查询对象")
+public class OrderGoodsQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 订单号 */
+	@ApiModelProperty("订单号")
+	private String orderSn;
+	/** 商品类型 1课程 2题库 3考试重点 */
+	@ApiModelProperty("商品类型 1课程 2题库 3考试重点")
+	private Integer goodsType;
+	/** 商品ID */
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+	/** 商品价格 */
+	@ApiModelProperty("商品价格")
+	private BigDecimal goodsPrice;
+	/** 商品数量 */
+	@ApiModelProperty("商品数量")
+	private Long num;
+
+}

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/Order.java

@@ -1,12 +1,16 @@
 package com.zhongzheng.modules.order.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.zhongzheng.modules.order.bo.OrderGoodsAddBo;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 import java.io.Serializable;
 import java.util.Date;
 import java.math.BigDecimal;
+import java.util.List;
+
 import com.zhongzheng.common.annotation.Excel;
 
 /**
@@ -66,4 +70,6 @@ private static final long serialVersionUID=1L;
     /** 订单完成时间 */
     private Long finishTime;
 
+
+
 }

+ 50 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java

@@ -0,0 +1,50 @@
+package com.zhongzheng.modules.order.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 订单商品对象 order_goods
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("order_goods")
+public class OrderGoods implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+    /** 订单商品ID */
+    @TableId(value = "id")
+    private Long id;
+
+    /** 订单号 */
+    private String orderSn;
+
+    /** 商品类型 1课程 2题库 3考试重点 */
+    private Integer goodsType;
+
+    /** 商品ID */
+    private Long goodsId;
+
+    /** 商品价格 */
+    private BigDecimal goodsPrice;
+
+    /** 商品数量 */
+    private Long num;
+
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.order.domain.OrderGoods;
+
+/**
+ * 订单商品Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
+
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.order.bo.OrderGoodsAddBo;
+import com.zhongzheng.modules.order.bo.OrderGoodsEditBo;
+import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
+import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.order.vo.OrderGoodsVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 订单商品Service接口
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+public interface IOrderGoodsService extends IService<OrderGoods> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	OrderGoodsVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<OrderGoodsVo> queryList(OrderGoodsQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入订单商品
+	 * @param bo 订单商品新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(OrderGoodsAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改订单商品
+	 * @param bo 订单商品编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(OrderGoodsEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 103 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -0,0 +1,103 @@
+package com.zhongzheng.modules.order.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.order.bo.OrderGoodsAddBo;
+import com.zhongzheng.modules.order.bo.OrderGoodsEditBo;
+import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
+import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.order.mapper.OrderGoodsMapper;
+import com.zhongzheng.modules.order.service.IOrderGoodsService;
+import com.zhongzheng.modules.order.vo.OrderGoodsVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 订单商品Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+@Service
+public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGoods> implements IOrderGoodsService {
+
+
+
+    @Override
+    public OrderGoodsVo queryById(Long id){
+        OrderGoods db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, OrderGoodsVo.class);
+    }
+
+    @Override
+    public List<OrderGoodsVo> queryList(OrderGoodsQueryBo bo) {
+        LambdaQueryWrapper<OrderGoods> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StrUtil.isNotBlank(bo.getOrderSn()), OrderGoods::getOrderSn, bo.getOrderSn());
+        lqw.eq(bo.getGoodsType() != null, OrderGoods::getGoodsType, bo.getGoodsType());
+        lqw.eq(bo.getGoodsId() != null, OrderGoods::getGoodsId, bo.getGoodsId());
+        lqw.eq(bo.getGoodsPrice() != null, OrderGoods::getGoodsPrice, bo.getGoodsPrice());
+        lqw.eq(bo.getNum() != null, OrderGoods::getNum, bo.getNum());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<OrderGoodsVo> entity2Vo(Collection<OrderGoods> collection) {
+        List<OrderGoodsVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, OrderGoodsVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<OrderGoods> page = (Page<OrderGoods>)collection;
+            Page<OrderGoodsVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(OrderGoodsAddBo bo) {
+        OrderGoods add = BeanUtil.toBean(bo, OrderGoods.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(OrderGoodsEditBo bo) {
+        OrderGoods update = BeanUtil.toBean(bo, OrderGoods.class);
+        validEntityBeforeSave(update);
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(OrderGoods entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 69 - 6
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -2,13 +2,23 @@ package com.zhongzheng.modules.order.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.bank.service.IQuestionBankService;
+import com.zhongzheng.modules.bank.vo.QuestionBankVo;
+import com.zhongzheng.modules.bank.vo.QuestionVo;
 import com.zhongzheng.modules.collect.domain.CollectBank;
+import com.zhongzheng.modules.course.service.ICourseService;
+import com.zhongzheng.modules.course.vo.CourseVo;
+import com.zhongzheng.modules.exam.service.IExamNoteService;
+import com.zhongzheng.modules.exam.vo.ExamNoteVo;
 import com.zhongzheng.modules.order.bo.OrderAddBo;
 import com.zhongzheng.modules.order.bo.OrderEditBo;
+import com.zhongzheng.modules.order.bo.OrderGoodsAddBo;
 import com.zhongzheng.modules.order.bo.OrderQueryBo;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.mapper.OrderMapper;
+import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderVo;
 import com.zhongzheng.modules.user.domain.User;
@@ -22,6 +32,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.Page;
 
+import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -43,6 +54,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IUserService iUserService;
 
+    @Autowired
+    private IOrderGoodsService iOrderGoodsService;
+
+    @Autowired
+    private ICourseService iCourseService;
+
+    @Autowired
+    private IQuestionBankService iQuestionBankService;
+
+    @Autowired
+    private IExamNoteService iExamNoteService;
+
     @Override
     public OrderVo queryById(Long orderId){
         Order db = this.baseMapper.selectById(orderId);
@@ -104,11 +127,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
     @Override
     public Map<String, String> placeOrder(OrderAddBo bo) {
+        List<OrderGoodsAddBo> goodsList = bo.getGoodsList();
+        if(goodsList.size()<1){
+            throw new CustomException("商品列表为空");
+        }
         Order add = BeanUtil.toBean(bo, Order.class);
         validEntityBeforeSave(add);
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
-        Map<String, String> result = dealOrder(add);
+        Map<String, String> result = dealOrder(add,goodsList);
+
         return result;
     }
 
@@ -136,17 +164,52 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return this.removeByIds(ids);
     }
 
-    private Map<String, String>  dealOrder(Order add){
+    private Map<String, String>  dealOrder(Order add,List<OrderGoodsAddBo> goodsList){
         UserVo userVo = iUserService.queryById(add.getUserId());
-        String body = "中正云课堂会员充值";
+        String body = "中正云课堂消费";
         String price = "1";
         String out_trade_no = DateUtils.getDateOrderSn();
-        System.out.println(out_trade_no);
         add.setOderSn(out_trade_no);
-        add.setPayType(1);
+        add.setPayType(1); //微信支付
         add.setOrderStatus(0);
+        BigDecimal totalPrice = new BigDecimal(0);
+        for (OrderGoodsAddBo g : goodsList) {
+            g.setOrderSn(out_trade_no);
+            if(g.getNum()<1){
+                throw new CustomException("商品数量错误");
+            }
+            //课程
+            if(g.getGoodsType()==1){
+                CourseVo courseVo = iCourseService.queryById(g.getGoodsId());
+                if(courseVo==null||courseVo.getStatus()!=1){
+                    throw new CustomException("课程无法购买");
+                }
+                g.setGoodsPrice(courseVo.getPrice());
+            }
+            //题库
+            if(g.getGoodsType()==1){
+                QuestionBankVo questionBankVo = iQuestionBankService.queryById(g.getGoodsId());
+                if(questionBankVo==null||questionBankVo.getStatus()!=1){
+                    throw new CustomException("题库无法购买");
+                }
+                g.setGoodsPrice(questionBankVo.getPrice());
+            }
+            //考试重点
+            if(g.getGoodsType()==1){
+                ExamNoteVo examNoteVo = iExamNoteService.queryById(g.getGoodsId());
+                if(examNoteVo==null||examNoteVo.getStatus()!=1){
+                    throw new CustomException("考试重点无法购买");
+                }
+                g.setGoodsPrice(examNoteVo.getPrice());
+            }
+            if(!iOrderGoodsService.insertByAddBo(g)){
+                throw new CustomException("商品错误");
+            }
+            totalPrice = totalPrice.add(g.getGoodsPrice());
+        }
+        add.setOrderPrice(totalPrice);
         if(!this.save(add)){
-            return null;
+            throw new CustomException("订单数据错误");
         }
         Map<String, String> result =  iWxPayService.payment(out_trade_no,userVo.getOpenId(),body,price);
         return result;

+ 49 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderGoodsVo.java

@@ -0,0 +1,49 @@
+package com.zhongzheng.modules.order.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.math.BigDecimal;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 订单商品视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-06-30
+ */
+@Data
+@ApiModel("订单商品视图对象")
+public class OrderGoodsVo {
+	private static final long serialVersionUID = 1L;
+
+	/** 订单商品ID */
+	@ApiModelProperty("订单商品ID")
+	private Long id;
+
+	/** 订单号 */
+	@Excel(name = "订单号")
+	@ApiModelProperty("订单号")
+	private String orderSn;
+	/** 商品类型 1课程 2题库 3考试重点 */
+	@Excel(name = "商品类型 1课程 2题库 3考试重点")
+	@ApiModelProperty("商品类型 1课程 2题库 3考试重点")
+	private Integer goodsType;
+	/** 商品ID */
+	@Excel(name = "商品ID")
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+	/** 商品价格 */
+	@Excel(name = "商品价格")
+	@ApiModelProperty("商品价格")
+	private BigDecimal goodsPrice;
+	/** 商品数量 */
+	@Excel(name = "商品数量")
+	@ApiModelProperty("商品数量")
+	private Long num;
+
+}

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/OrderPossessUserAddBo.java

@@ -12,7 +12,7 @@ import java.util.Date;
  * 【请填写功能名称】添加对象 order_possess_user
  *
  * @author ruoyi
- * @date 2021-06-24
+ * @date 2021-06-30
  */
 @Data
 @ApiModel("【请填写功能名称】添加对象")
@@ -21,6 +21,8 @@ public class OrderPossessUserAddBo {
     /** 解锁类型 0课程 1题库  2考试重点 */
     @ApiModelProperty("解锁类型 0课程 1题库  2考试重点")
     private Integer typeId;
+    @ApiModelProperty("来源id  0 订单购买  1订单活动购买  2 等级解锁")
+    private Integer sourceId;
     /** 拥有的课程id或题库id或考试重点 */
     @ApiModelProperty("拥有的课程id或题库id或考试重点")
     private Long possessId;

+ 2 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/OrderPossessUserEditBo.java

@@ -11,7 +11,7 @@ import java.util.Date;
  * 【请填写功能名称】编辑对象 order_possess_user
  *
  * @author ruoyi
- * @date 2021-06-24
+ * @date 2021-06-30
  */
 @Data
 @ApiModel("【请填写功能名称】编辑对象")
@@ -24,8 +24,7 @@ public class OrderPossessUserEditBo {
 
     /** 来源id  0 订单购买  1订单活动购买  2 等级解锁 */
     @ApiModelProperty("来源id  0 订单购买  1订单活动购买  2 等级解锁")
-    private Integer 
-sourceId;
+    private Integer sourceId;
 
     /** 解锁类型 0课程 1题库  2考试重点 */
     @ApiModelProperty("解锁类型 0课程 1题库  2考试重点")

+ 1 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/OrderPossessUserQueryBo.java

@@ -15,7 +15,7 @@ import com.zhongzheng.common.core.domain.BaseEntity;
  * 【请填写功能名称】分页查询对象 order_possess_user
  *
  * @author ruoyi
- * @date 2021-06-24
+ * @date 2021-06-30
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -43,8 +43,4 @@ public class OrderPossessUserQueryBo extends BaseEntity {
 	@ApiModelProperty("拥有的课程id或题库id或考试重点")
 	private Long possessId;
 
-	/** 用户id */
-	@ApiModelProperty("用户ID")
-	private Long userId;
-
 }

+ 7 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/OrderPossessUser.java

@@ -11,9 +11,9 @@ import com.zhongzheng.common.annotation.Excel;
 
 /**
  * 【请填写功能名称】对象 order_possess_user
- * 
+ *
  * @author ruoyi
- * @date 2021-06-24
+ * @date 2021-06-30
  */
 @Data
 @NoArgsConstructor
@@ -25,10 +25,14 @@ private static final long serialVersionUID=1L;
 
 
     /** 用户id */
+    @TableId(value = "user_id")
     private Long userId;
 
     /** 来源id  0 订单购买  1订单活动购买  2 等级解锁 */
-    private Integer sourceId;
+    @TableId(value = "
+source_id")
+    private Integer
+sourceId;
 
     /** 解锁类型 0课程 1题库  2考试重点 */
     private Integer typeId;

+ 2 - 21
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/OrderPossessUserVo.java

@@ -2,21 +2,18 @@ package com.zhongzheng.modules.user.vo;
 
 import com.zhongzheng.common.annotation.Excel;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.zhongzheng.modules.bank.vo.QuestionBankVo;
-import com.zhongzheng.modules.course.vo.CourseVo;
-import com.zhongzheng.modules.exam.vo.ExamNoteVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
-import java.util.List;
+
 
 
 /**
  * 【请填写功能名称】视图对象 mall_package
  *
  * @author ruoyi
- * @date 2021-06-24
+ * @date 2021-06-30
  */
 @Data
 @ApiModel("【请填写功能名称】视图对象")
@@ -36,20 +33,4 @@ public class OrderPossessUserVo {
 	@ApiModelProperty("拥有的课程id或题库id或考试重点")
 	private Long possessId;
 
-	/** 拥有的课程 */
-	@Excel(name = "拥有的课程")
-	@ApiModelProperty("拥有的课程")
-	private List<CourseVo> CourseVoList;
-
-	/** 拥有的考试重点 */
-	@Excel(name = "拥有的考试重点")
-	@ApiModelProperty("拥有的考试重点")
-	private List<ExamNoteVo> examNoteList;
-
-	/** 拥有的考试重点 */
-	@Excel(name = "拥有的考试重点")
-	@ApiModelProperty("拥有的考试重点")
-	private List<QuestionBankVo> questionBankList;
-
-
 }

+ 41 - 70
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -20,8 +20,13 @@ import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.common.utils.ip.IpUtils;
 import com.zhongzheng.common.utils.polyv.PolyvUtils;
 import com.zhongzheng.common.utils.wxpay.*;
+import com.zhongzheng.modules.exam.service.IExamNoteService;
+import com.zhongzheng.modules.order.bo.OrderGoodsAddBo;
+import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
 import com.zhongzheng.modules.order.domain.Order;
+import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
+import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.polyv.bo.PolyvVideoAddBo;
 import com.zhongzheng.modules.polyv.bo.PolyvVideoEditBo;
 import com.zhongzheng.modules.polyv.bo.PolyvVideoQueryBo;
@@ -32,6 +37,8 @@ import com.zhongzheng.modules.polyv.mapper.PolyvVideoMapper;
 import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
 import com.zhongzheng.modules.polyv.vo.PolyvVideoQuerVo;
 import com.zhongzheng.modules.polyv.vo.PolyvVideoVo;
+import com.zhongzheng.modules.user.bo.OrderPossessUserAddBo;
+import com.zhongzheng.modules.user.service.IOrderPossessUserService;
 import com.zhongzheng.modules.wx.service.IWxPayService;
 import com.zhongzheng.modules.wx.vo.WxPayVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -84,6 +91,12 @@ public class WxPayServiceImpl  implements IWxPayService {
     @Autowired
     private IOrderService iOrderService;
 
+    @Autowired
+    private IOrderPossessUserService iOrderPossessUserService;
+
+    @Autowired
+    private IOrderGoodsService iOrderGoodsService;
+
 
     @Override
     public Map<String, String> payment(String out_trade_no,String openid,String body,String price) {
@@ -112,7 +125,7 @@ public class WxPayServiceImpl  implements IWxPayService {
             result.put("package","prepay_id="+resp.get("prepay_id"));
             result.put("signType","MD5");
             result.put("sign", WXPayUtil.generateSignature(result, key, WXPayConstants.SignType.MD5));
-            System.out.println(resp);
+     //       System.out.println(resp);
             return result;
         } catch (Exception e) {
             e.printStackTrace();
@@ -134,19 +147,12 @@ public class WxPayServiceImpl  implements IWxPayService {
                 if("SUCCESS".equals(result_code)){
                     String out_trade_no = notifyMap.get("out_trade_no");
                     String transaction_id = notifyMap.get("transaction_id");
-                    Order order = iOrderService.queryByOrderSn(out_trade_no);
-                    if(order.getOrderStatus()==0){
-                        order.setOrderStatus(1);
-                        order.setPayTime(DateUtils.getNowTime());
-                        order.setTransid(transaction_id);
-                        order.setOrderGeneral(out_trade_no);
-                        if(iOrderService.updateById(order)){
-                            Map<String,String> result = new HashMap<>();
-                            result.put("return_code","<![CDATA[SUCCESS]]>");
-                            result.put("return_msg","<![CDATA[OK]]>");
-                            String resultXml = WXPayUtil.mapToXml(result);
-                            return resultXml;
-                        }
+                    if(dealOrder(out_trade_no,transaction_id)){
+                        Map<String,String> result = new HashMap<>();
+                        result.put("return_code","<![CDATA[SUCCESS]]>");
+                        result.put("return_msg","<![CDATA[OK]]>");
+                        String resultXml = WXPayUtil.mapToXml(result);
+                        return resultXml;
                     }
                 }
             }
@@ -159,64 +165,29 @@ public class WxPayServiceImpl  implements IWxPayService {
         return null;
     }
 
-    /**
-     * 不需要证书的请求
-     * @param urlSuffix String
-     * @param reqData 向wxpay post的请求数据
-     * @param connectTimeoutMs 超时时间,单位是毫秒
-     * @param readTimeoutMs 超时时间,单位是毫秒
-     * @return API返回数据
-     * @throws Exception
-     */
-    public String requestWithoutCert(String urlSuffix, Map<String, String> reqData,
-                                     int connectTimeoutMs, int readTimeoutMs) throws Exception {
-        String msgUUID = reqData.get("nonce_str");
-        String reqBody = WXPayUtil.mapToXml(reqData);
-        String resp = this.wxPayRequest.requestWithoutCert(urlSuffix, msgUUID, reqBody, connectTimeoutMs, readTimeoutMs, autoReport);
-        return resp;
-    }
-    /**
-     * 处理 HTTPS API返回数据,转换成Map对象。return_code为SUCCESS时,验证签名。
-     * @param xmlStr API返回的XML格式数据
-     * @return Map类型数据
-     * @throws Exception
-     */
-    public Map<String, String> processResponseXml(String xmlStr) throws Exception {
-        String RETURN_CODE = "return_code";
-        String return_code;
-        Map<String, String> respData = WXPayUtil.xmlToMap(xmlStr);
-        if (respData.containsKey(RETURN_CODE)) {
-            return_code = respData.get(RETURN_CODE);
-        }
-        else {
-            throw new Exception(String.format("No `return_code` in XML: %s", xmlStr));
-        }
 
-        if (return_code.equals(WXPayConstants.FAIL)) {
-            return respData;
-        }
-        else if (return_code.equals(WXPayConstants.SUCCESS)) {
-            if (this.isResponseSignatureValid(respData)) {
-                return respData;
-            }
-            else {
-                throw new Exception(String.format("Invalid sign value in XML: %s", xmlStr));
+    private boolean dealOrder(String out_trade_no,String transaction_id){
+        Order order = iOrderService.queryByOrderSn(out_trade_no);
+        if(order.getOrderStatus()==0){
+            order.setOrderStatus(1);
+            order.setPayTime(DateUtils.getNowTime());
+            order.setTransid(transaction_id);
+            order.setOrderGeneral(out_trade_no);
+            if(iOrderService.updateById(order)){
+                OrderGoodsQueryBo bo = new OrderGoodsQueryBo();
+                bo.setOrderSn(out_trade_no);
+                List<OrderGoodsVo> goodsList = iOrderGoodsService.queryList(bo);
+                for (OrderGoodsVo g : goodsList) {
+                    //添加入我的学习
+                    OrderPossessUserAddBo addBo = new OrderPossessUserAddBo();
+                    addBo.setPossessId(g.getGoodsId());
+                    addBo.setTypeId(g.getGoodsType());
+                    addBo.setSourceId(0);//订单来源
+                    iOrderPossessUserService.insertByAddBo(addBo);
+                }
+               return true;
             }
         }
-        else {
-            throw new Exception(String.format("return_code value %s is invalid in XML: %s", return_code, xmlStr));
-        }
-    }
-
-    /**
-     * 判断xml数据的sign是否有效,必须包含sign字段,否则返回false。
-     *
-     * @param reqData 向wxpay post的请求数据
-     * @return 签名是否有效
-     * @throws Exception
-     */
-    public boolean isResponseSignatureValid(Map<String, String> reqData) throws Exception {
-        // 返回数据的签名方式和请求中给定的签名方式是一致的
-        return WXPayUtil.isSignatureValid(reqData, key, this.signType);
+        return false;
     }
 }

+ 18 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.modules.order.mapper.OrderGoodsMapper">
+
+    <resultMap type="com.zhongzheng.modules.order.domain.OrderGoods" id="OrderGoodsResult">
+        <result property="id" column="id"/>
+        <result property="orderSn" column="order_sn"/>
+        <result property="goddsType" column="godds_type"/>
+        <result property="goodsId" column="goods_id"/>
+        <result property="goodsPrice" column="goods_price"/>
+        <result property="num" column="num"/>
+        <result property="createTime" column="create_time"/>
+    </resultMap>
+
+
+</mapper>

+ 4 - 4
zhongzheng-system/src/main/resources/mapper/modules/user/OrderPossessUserMapper.xml

@@ -35,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectByBank" parameterType="com.zhongzheng.modules.user.bo.OrderPossessUserQueryBo"  resultMap="QuestionBankResult">
         SELECT qb.*,mc.category_name FROM question_bank qb LEFT JOIN major_category mc on qb.category_id = mc.category_id LEFT JOIN order_possess_user o ON o.possess_id =qb.bank_id
-        WHERE 1=1 and o.type_id =1
+        WHERE 1=1 and o.type_id =2
         <if test="userId != null and userId != ''">
             AND o.user_id = #{userId}
         </if>
@@ -89,7 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ) rs
                 LEFT JOIN major_category mc ON rs.category_id = mc.category_id
                 LEFT JOIN order_possess_user o ON o.possess_id =rs.course_id
-            where 1=1 and o.type_id =0
+            where 1=1 and o.type_id =1
             <if test="userId != null and userId != ''">
                 AND o.user_id = #{userId}
             </if>
@@ -120,9 +120,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             exam_note en
                 LEFT JOIN major_category mc ON en.category_id = mc.category_id
             LEFT JOIN order_possess_user o ON o.possess_id =en.file_id
-        where 1=1  and o.type_id =2
+        where 1=1  and o.type_id =3
         <if test="userId != null and userId != ''">
             AND o.user_id = #{userId}
         </if>
     </select>
-</mapper>
+</mapper>