Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

liujunchi 3 years ago
parent
commit
cbccf13294
21 changed files with 667 additions and 158 deletions
  1. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/config/ResourceServerConfig.java
  2. 6 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java
  3. 69 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VipCardController.java
  4. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VipCardDao.java
  5. 2 57
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  6. 122 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VipCard.java
  7. 40 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/VipTimeTypeEnum.java
  8. 3 16
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardRecordService.java
  9. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardService.java
  10. 38 32
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  11. 7 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java
  12. 69 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardServiceImpl.java
  13. 45 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VipCardVo.java
  14. 0 33
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/OrderCheckRes.java
  15. 100 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/OrderCreateRes.java
  16. 0 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentTotalMapper.xml
  17. 45 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VipCardMapper.xml
  18. 1 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/config/ResourceServerConfig.java
  19. 0 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/PaymentController.java
  20. 43 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VipCardController.java
  21. 1 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/config/ResourceServerConfig.java

+ 1 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/config/ResourceServerConfig.java

@@ -26,7 +26,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 	public void configure(HttpSecurity http) throws Exception {
 		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
 				.authorizeRequests().antMatchers("/task/**").hasIpAddress("0.0.0.0/0")
-				.antMatchers("/v2/api-docs", "/code/*", "/api/*", "/appVersionInfo/queryByPlatform", "/uploadFile").permitAll().anyRequest().authenticated()
+				.antMatchers("/v2/api-docs", "/code/*", "/api/*","/payment/callback", "/appVersionInfo/queryByPlatform", "/uploadFile").permitAll().anyRequest().authenticated()
 				.and().httpBasic();
 	}
 

+ 6 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java

@@ -14,6 +14,7 @@ import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
@@ -51,7 +52,10 @@ public class TeacherAuthEntryRecordController extends BaseController {
     @ApiOperation(value = "审核", notes = "传入authOperaDto")
     @PreAuthorize("@pcs.hasPermissions('teacherAuthEntryRecord/doAuth')")
     public HttpResponseResult<Boolean> doAuth(@Valid @RequestBody AuthOperaReq authOperaReq) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        return teacherAuthEntryRecordService.doAuth(authOperaReq, sysUser);
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return teacherAuthEntryRecordService.doAuth(authOperaReq, user);
     }
 }

+ 69 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VipCardController.java

@@ -0,0 +1,69 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
+import com.yonge.cooleshow.biz.dal.entity.VipCard;
+import com.yonge.cooleshow.biz.dal.service.VipCardService;
+
+import java.util.Date;
+import java.util.List;
+
+@RestController
+@RequestMapping("/vipCard")
+@Api(value = "会员卡表", tags = "会员卡表")
+public class VipCardController extends BaseController {
+
+    @Autowired
+    private VipCardService vipCardService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+	/**
+     * 查询单条
+     */
+    @GetMapping("/detail/{id}")
+    @ApiOperation(value = "详情", notes = "传入id")
+    @PreAuthorize("@pcs.hasPermissions('vipCard/detail')")
+    public HttpResponseResult<VipCardVo> detail(@PathVariable("id") Long id) {
+    	return succeed(vipCardService.detail(id));
+	}
+    
+    /**
+     * 查询分页
+     */
+    @PostMapping("/list")
+    @ApiOperation(value = "查询列表")
+    @PreAuthorize("@pcs.hasPermissions('vipCard/list')")
+    public HttpResponseResult<List<VipCardVo>> list() {
+		List<VipCardVo> list = vipCardService.selectList();
+        return succeed(list);
+	}
+    
+    /**
+	 * 修改
+	 */
+	@PostMapping("/update")
+	@ApiOperation(value = "修改", notes = "传入vipCard")
+    @PreAuthorize("@pcs.hasPermissions('vipCard/update')")
+    public HttpResponseResult update(@Valid @RequestBody VipCard vipCard) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        vipCard.setUpdateBy(user.getId());
+        vipCard.setUpdateTime(new Date());
+        return status(vipCardService.updateById(vipCard));
+	}
+}

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VipCardDao.java

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import com.yonge.cooleshow.biz.dal.entity.VipCard;
+import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
+
+
+public interface VipCardDao extends BaseMapper<VipCard>{
+	/**
+	 * 查询详情
+     * @author liweifan
+     * @date 2022-04-13 13:36:48
+     * @return: com.yonge.cooleshow.biz.dal.vo.VipCardVo
+	 */
+	VipCardVo detail(@Param("id") Long id);
+	/***
+	 * 查询集合
+	 * @author liweifan
+	 * @updateTime 2022/4/13 14:02
+	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.VipCardVo>
+	 */
+	List<VipCardVo> selectList();
+	
+}

+ 2 - 57
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.dto.req;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -27,25 +26,11 @@ public class OrderReq {
     @NotNull(message = "订单类型不能为空")
     @ApiModelProperty(value = "订单类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ", required = true)
     private OrderTypeEnum orderType;
-    @NotNull(message = "原价不能为空")
-    @ApiModelProperty(value = "原价 ", required = true)
-    private BigDecimal originalPrice;
-    @NotNull(message = "预计价格不能为空")
-    @ApiModelProperty(value = "预计价格 ", required = true)
-    private BigDecimal expectPrice;
-    @NotNull(message = "实际价格不能为空")
-    @ApiModelProperty(value = "实际价格 ", required = true)
-    private BigDecimal actualPrice;
-    @NotNull(message = "优惠金额不能为空")
-    @ApiModelProperty(value = "优惠金额 ", required = true)
-    private BigDecimal couponAmount;
     @ApiModelProperty("用户备注 ")
     private String userNote;
-
-    @ApiModelProperty(value = "业务id ")
-    private Long bizId;
-    @ApiModelProperty(value = "业务内容 ")
+    @ApiModelProperty(value = "业务内容 订单业务内容json")
     private String bizContent;
+
     public Long getUserId() {
         return userId;
     }
@@ -78,14 +63,6 @@ public class OrderReq {
         this.orderType = orderType;
     }
 
-    public Long getBizId() {
-        return bizId;
-    }
-
-    public void setBizId(Long bizId) {
-        this.bizId = bizId;
-    }
-
     public String getBizContent() {
         return bizContent;
     }
@@ -94,38 +71,6 @@ public class OrderReq {
         this.bizContent = bizContent;
     }
 
-    public BigDecimal getOriginalPrice() {
-        return originalPrice;
-    }
-
-    public void setOriginalPrice(BigDecimal originalPrice) {
-        this.originalPrice = originalPrice;
-    }
-
-    public BigDecimal getExpectPrice() {
-        return expectPrice;
-    }
-
-    public void setExpectPrice(BigDecimal expectPrice) {
-        this.expectPrice = expectPrice;
-    }
-
-    public BigDecimal getActualPrice() {
-        return actualPrice;
-    }
-
-    public void setActualPrice(BigDecimal actualPrice) {
-        this.actualPrice = actualPrice;
-    }
-
-    public BigDecimal getCouponAmount() {
-        return couponAmount;
-    }
-
-    public void setCouponAmount(BigDecimal couponAmount) {
-        this.couponAmount = couponAmount;
-    }
-
     public String getUserNote() {
         return userNote;
     }

+ 122 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VipCard.java

@@ -0,0 +1,122 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.VipTimeTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * 会员卡表
+ */
+@TableName("vip_card")
+@ApiModel(value = "VipCard对象", description = "会员卡表")
+public class VipCard implements Serializable {
+	private static final long serialVersionUID = 1L;
+    @ApiModelProperty("会员卡id ")
+    @TableId(value = "id_")
+    private Long id;
+    @ApiModelProperty("时长类型:MONTH、月卡 QUARTER、季卡 YEAR、年卡 ")
+	@TableField(value = "time_type_")
+    @NotNull(message = "时长类型不能为空")
+    private VipTimeTypeEnum timeType;
+    @ApiModelProperty("原价 ")
+	@TableField(value = "original_price_")
+    @NotNull(message = "原价不能为空")
+    private BigDecimal originalPrice;
+    @ApiModelProperty("实际价格 ")
+	@TableField(value = "actual_price_")
+    @NotNull(message = "实际价格不能为空")
+    private BigDecimal actualPrice;
+    @ApiModelProperty("创建时间 ")
+	@TableField(value = "create_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date createTime;
+    @ApiModelProperty("创建人 ")
+	@TableField(value = "create_by__")
+    private Long createBy;
+    @ApiModelProperty("更新时间 ")
+	@TableField(value = "update_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date updateTime;
+    @ApiModelProperty("更新人 ")
+	@TableField(value = "update_by_")
+    private Long updateBy;
+
+	public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public VipTimeTypeEnum getTimeType() {
+        return timeType;
+    }
+
+    public void setTimeType(VipTimeTypeEnum timeType) {
+        this.timeType = timeType;
+    }
+
+    public BigDecimal getOriginalPrice() {
+        return originalPrice;
+    }
+
+    public void setOriginalPrice(BigDecimal originalPrice) {
+        this.originalPrice = originalPrice;
+    }
+    
+	public BigDecimal getActualPrice() {
+        return actualPrice;
+    }
+
+    public void setActualPrice(BigDecimal actualPrice) {
+        this.actualPrice = actualPrice;
+    }
+    
+	public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+    
+	public Long getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(Long createBy) {
+        this.createBy = createBy;
+    }
+    
+	public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+    
+	public Long getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(Long updateBy) {
+        this.updateBy = updateBy;
+    }
+    
+}

+ 40 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/VipTimeTypeEnum.java

@@ -0,0 +1,40 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * 会员卡
+ * @Author: liweifan
+ * @Data: 2022/4/13 14:22
+ */
+public enum VipTimeTypeEnum implements BaseEnum<String, VipTimeTypeEnum> {
+    MONTH("月卡"),
+    QUARTER("季卡"),
+    YEAR("年卡");
+    @EnumValue
+    private String code;
+    private String msg;
+
+    VipTimeTypeEnum(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.name();
+    }
+}

+ 3 - 16
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardRecordService.java

@@ -3,7 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
-import com.yonge.cooleshow.biz.dal.vo.res.OrderCheckRes;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
 import com.yonge.cooleshow.biz.dal.dto.search.VipCardRecordSearch;
@@ -30,19 +30,6 @@ public interface VipCardRecordService extends IService<VipCardRecord>  {
  	 * @date 2022-03-30
      */
     IPage<VipCardRecordVo> selectPage(IPage<VipCardRecordVo> page, VipCardRecordSearch query);
-	/***
-	 * 验证订单参数
-	 * @author liweifan
-	 * @param: orderReq
-	 * @updateTime 2022/3/31 15:47
-	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
-	 */
-    HttpResponseResult<OrderCheckRes> checkOrder(OrderReq orderReq);
-	/***
-	 * 订单下单后操作
-	 * @author liweifan
-	 * @param: orderVo
-	 * @updateTime 2022/3/31 17:24
-	 */
-    void orderAfter(UserOrderVo orderVo);
+
+
 }

+ 48 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VipCardService.java

@@ -0,0 +1,48 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
+import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
+import com.yonge.cooleshow.biz.dal.entity.VipCard;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+import java.util.List;
+
+/**
+ * 会员卡表 服务类
+ * @author liweifan
+ * @date 2022-04-13
+ */
+public interface VipCardService extends IService<VipCard>  {
+
+	/**
+     * 查询详情
+     * @author liweifan
+ 	 * @date 2022-04-13
+     */
+	VipCardVo detail(Long id);
+	/***
+	 * 查询页面
+	 * @author liweifan
+	 * @updateTime 2022/4/13 13:59
+	 * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.VipCardVo>
+	 */
+	List<VipCardVo> selectList();
+	/***
+	 * 订单下单前操作
+	 * @author liweifan
+	 * @param: orderReq
+	 * @updateTime 2022/3/31 15:47
+	 * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.lang.Boolean>
+	 */
+	HttpResponseResult<OrderCreateRes> orderCreate(OrderReq orderReq);
+	/***
+	 * 订单下单后操作
+	 * @author liweifan
+	 * @param: orderVo
+	 * @updateTime 2022/3/31 17:24
+	 */
+	void orderAfter(UserOrderVo orderVo);
+}

+ 38 - 32
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -18,7 +18,7 @@ import com.yonge.cooleshow.biz.dal.sdk.PaymentSdk;
 import com.yonge.cooleshow.biz.dal.sdk.req.DeviceInfo;
 import com.yonge.cooleshow.biz.dal.sdk.req.PaymentReq;
 import com.yonge.cooleshow.biz.dal.service.*;
-import com.yonge.cooleshow.biz.dal.vo.res.OrderCheckRes;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -45,7 +45,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     private final static Logger log = LoggerFactory.getLogger(UserOrderServiceImpl.class);
 
     @Autowired
-    private VipCardRecordService vipCardRecordService;
+    private VipCardService vipCardService;
     @Autowired
     private SysConfigService sysConfigService;
     @Autowired
@@ -58,18 +58,17 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     private IdGeneratorService idGeneratorService;
 
     //验证订单是否可以下单
-    private static final Map<OrderTypeEnum, Function<OrderReq, HttpResponseResult<OrderCheckRes>>> checkOrder = new HashMap<>();
+    private static final Map<OrderTypeEnum, Function<OrderReq, HttpResponseResult<OrderCreateRes>>> orderCreate = new HashMap<>();
     //插入订单后执行
     private static final Map<OrderTypeEnum, Consumer<UserOrderVo>> orderAfter = new HashMap<>();
 
     @PostConstruct
     private void init() {
         //vip开通缴费
-        checkOrder.put(OrderTypeEnum.VIP, vipCardRecordService::checkOrder);
-
+        orderCreate.put(OrderTypeEnum.VIP, vipCardService::orderCreate);
 
         //vip开通缴费
-        orderAfter.put(OrderTypeEnum.VIP, vipCardRecordService::orderAfter);
+        orderAfter.put(OrderTypeEnum.VIP, vipCardService::orderAfter);
     }
 
     @Override
@@ -91,26 +90,23 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<UserOrder> executeOrder(OrderReq orderReq) {
         log.info("订单[创建订单] Req:{}", JSONObject.toJSONString(orderReq));
-        //todo 假定一个用户最多有三个待支付,支付中订单
-        /*Integer num = baseMapper.selectCount(Wrappers.<Order>query().lambda()
-                .eq(Order::getUserId, orderReq.getUserId())
-                .in(Order::getStatus, OrderStatusEnum.PAYING.getCode(), OrderStatusEnum.WAIT_PAY.getCode())
-        );
-        Integer payingNum = 3;
-        if (num >= payingNum) {
-            return HttpResponseResult.failed("未完成订单数过多");
-        }*/
-        //todo 订单验证参数,金额不小于0等
-
         //验证参数,必须验证参数
-        Function<OrderReq, HttpResponseResult<OrderCheckRes>> checkFunction = checkOrder.get(orderReq.getOrderType());
+        Function<OrderReq, HttpResponseResult<OrderCreateRes>> checkFunction = orderCreate.get(orderReq.getOrderType());
         if (Objects.isNull(checkFunction)) {
-            return HttpResponseResult.failed("参数校验失败");
+            return HttpResponseResult.failed("订单商品信息获取失败");
         }
-        HttpResponseResult<OrderCheckRes> checkResult = checkFunction.apply(orderReq);
-        if (!checkResult.getStatus() || null == checkResult.getData() || !checkResult.getData().getRes()) {
+        HttpResponseResult<OrderCreateRes> checkResult = checkFunction.apply(orderReq);
+        OrderCreateRes createRes = checkResult.getData();
+        if (!checkResult.getStatus() || null == createRes || !createRes.getRes()) {
             log.info("订单[创建订单] Res:{}", JSONObject.toJSONString(checkResult));
-            return HttpResponseResult.failed("参数校验失败");
+            return HttpResponseResult.failed("订单商品信息获取失败");
+        }
+        if (!checkPositiveOrZero(createRes.getOriginalPrice())
+                || !checkPositiveOrZero(createRes.getExpectPrice())
+                || !checkPositiveOrZero(createRes.getActualPrice())
+                || !checkPositiveOrZero(createRes.getCouponAmount())
+        ) {
+            return HttpResponseResult.failed("金额校验失败");
         }
         //验证成功后,订单入库
         UserOrderVo orderVo = insertOrder(orderReq, checkResult.getData());
@@ -178,7 +174,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 
         OrderPayRes orderPayRes = new OrderPayRes();
         orderPayRes.setPay_amt(detail.getActualPrice().setScale(2).toString());
-        String pay_info =  ((JSONObject)res.get("expend")).getString("pay_info");
+        String pay_info = ((JSONObject) res.get("expend")).getString("pay_info");
         orderPayRes.setPay_info(pay_info);
         //入订单付款表,同时修改订单状态
         UserOrderPayment orderPayment = insertOrderPayment(res, payReq);
@@ -194,7 +190,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         orderPayment.setPayAmt(
                 new BigDecimal(res.get("pay_amt").toString()).setScale(2)
         );
-        String pay_info =  ((JSONObject)res.get("expend")).getString("pay_info");
+        String pay_info = ((JSONObject) res.get("expend")).getString("pay_info");
         orderPayment.setPayInfo(pay_info);
         orderPayment.setStatus(PayStatusEnum.pending);
 
@@ -221,7 +217,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
      * @updateTime 2022/3/31 16:15
      * @return: com.yonge.cooleshow.biz.dal.entity.Order
      */
-    private UserOrderVo insertOrder(OrderReq orderReq, OrderCheckRes data) {
+    private UserOrderVo insertOrder(OrderReq orderReq, OrderCreateRes data) {
         UserOrder userOrder = new UserOrder();
         //订单号生成
         Long orderNo = idGeneratorService.generatorId("userOrder");
@@ -231,13 +227,13 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         userOrder.setOrderName(orderReq.getOrderName());
         userOrder.setOrderDesc(orderReq.getOrderDesc());
         userOrder.setStatus(OrderStatusEnum.WAIT_PAY);
-        userOrder.setOriginalPrice(orderReq.getOriginalPrice());
-        userOrder.setExpectPrice(orderReq.getExpectPrice());
-        userOrder.setActualPrice(orderReq.getActualPrice());
-        userOrder.setCouponAmount(orderReq.getCouponAmount());
+        userOrder.setOriginalPrice(data.getOriginalPrice());
+        userOrder.setExpectPrice(data.getExpectPrice());
+        userOrder.setActualPrice(data.getActualPrice());
+        userOrder.setCouponAmount(data.getCouponAmount());
         //平台服务费
         BigDecimal serviceFeeRate = getServiceFeeRate(orderReq.getOrderType());
-        userOrder.setPlantformFee(orderReq.getActualPrice().multiply(serviceFeeRate));
+        userOrder.setPlantformFee(data.getActualPrice().multiply(serviceFeeRate));
         userOrder.setPlantformFeeRate(serviceFeeRate);
         userOrder.setUserNote(orderReq.getUserNote());
         userOrder.setOrderType(orderReq.getOrderType());
@@ -249,8 +245,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         }
         UserOrderDetail orderDetail = new UserOrderDetail();
         orderDetail.setOrderNo(userOrder.getOrderNo());
-        orderDetail.setBizId(orderReq.getBizId());
-        orderDetail.setBizContent(orderReq.getBizContent());
+        orderDetail.setBizId(data.getBizId());
+        orderDetail.setBizContent(data.getBizContent());
         orderDetail.setCreateTime(new Date());
         orderDetailService.save(orderDetail);
 
@@ -285,4 +281,14 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         }
         return new BigDecimal(configValue).divide(new BigDecimal(100));
     }
+
+    private Boolean checkPositiveOrZero(BigDecimal amount) {
+        if (null == amount) {
+            return false;
+        }
+        if (amount.doubleValue() < 0) {
+            return false;
+        }
+        return true;
+    }
 }

+ 7 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardRecordServiceImpl.java

@@ -3,9 +3,13 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
-import com.yonge.cooleshow.biz.dal.vo.res.OrderCheckRes;
+import com.yonge.cooleshow.biz.dal.entity.VipCard;
+import com.yonge.cooleshow.biz.dal.service.VipCardService;
+import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.VipCardRecord;
 import com.yonge.cooleshow.biz.dal.vo.VipCardRecordVo;
@@ -16,7 +20,8 @@ import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
 
 @Service
 public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipCardRecord> implements VipCardRecordService {
-
+    @Autowired
+    private VipCardService vipCardService;
 	@Override
     public VipCardRecordVo detail(Long id) {
         VipCardRecordVo detail = baseMapper.detail(id);
@@ -28,16 +33,4 @@ public class VipCardRecordServiceImpl extends ServiceImpl<VipCardRecordDao, VipC
         return page.setRecords(baseMapper.selectPage(page, query));
     }
 
-    @Override
-    public HttpResponseResult<OrderCheckRes> checkOrder(OrderReq orderReq) {
-        OrderCheckRes orderCheckRes = new OrderCheckRes();
-        orderCheckRes.setRes(true);
-        return HttpResponseResult.succeed(orderCheckRes);
-    }
-
-    @Override
-    public void orderAfter(UserOrderVo orderVo) {
-
-    }
-
 }

+ 69 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VipCardServiceImpl.java

@@ -0,0 +1,69 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
+import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
+import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.yonge.cooleshow.biz.dal.entity.VipCard;
+import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
+import com.yonge.cooleshow.biz.dal.dao.VipCardDao;
+import com.yonge.cooleshow.biz.dal.service.VipCardService;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+
+@Service
+public class VipCardServiceImpl extends ServiceImpl<VipCardDao, VipCard> implements VipCardService {
+    private final static Logger log = LoggerFactory.getLogger(VipCardServiceImpl.class);
+    @Autowired
+    private VipCardRecordService vipCardRecordService;
+
+    @Override
+    public VipCardVo detail(Long id) {
+        VipCardVo detail = baseMapper.detail(id);
+        detail.setTimeTypeName(detail.getTimeType().name());
+        return detail;
+    }
+
+    @Override
+    public List<VipCardVo> selectList() {
+        List<VipCardVo> vipCardVos = baseMapper.selectList();
+        vipCardVos.forEach(o -> o.setTimeTypeName(o.getTimeType().name()));
+        return vipCardVos;
+    }
+
+    @Override
+    public HttpResponseResult<OrderCreateRes> orderCreate(OrderReq orderReq) {
+        VipCardVo detail = detail(Long.parseLong(orderReq.getBizContent()));
+        if(null == detail){
+            return HttpResponseResult.failed("未找到会员卡信息");
+        }
+        //插入会员卡信息到会员卡记录表
+        OrderCreateRes orderCreateRes = new OrderCreateRes();
+        orderCreateRes.setRes(true);
+        orderCreateRes.setBizId(detail.getId());
+        orderCreateRes.setBizContent("会员卡购买-"+detail.getTimeTypeName());
+
+        orderCreateRes.setOriginalPrice(detail.getOriginalPrice());
+        orderCreateRes.setExpectPrice(detail.getActualPrice());
+        orderCreateRes.setActualPrice(detail.getActualPrice());
+        orderCreateRes.setCouponAmount(new BigDecimal(0));
+        return HttpResponseResult.succeed(orderCreateRes);
+    }
+
+
+    @Override
+    public void orderAfter(UserOrderVo orderVo) {
+
+    }
+
+
+}

+ 45 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VipCardVo.java

@@ -0,0 +1,45 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.VipCard;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.beanutils.BeanUtils;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022-04-13 13:36:48
+ */
+@ApiModel(value = "VipCardVo对象", description = "会员卡表查询视图对象")
+public class VipCardVo extends VipCard{
+	private static final long serialVersionUID = 1L;
+    @ApiModelProperty("时长类型名称 ")
+    private String timeTypeName;
+    @ApiModelProperty("修改人名称 ")
+    private String updateByName;
+
+    public String getTimeTypeName() {
+        return timeTypeName;
+    }
+
+    public void setTimeTypeName(String timeTypeName) {
+        this.timeTypeName = timeTypeName;
+    }
+
+    public String getUpdateByName() {
+        return updateByName;
+    }
+
+    public void setUpdateByName(String updateByName) {
+        this.updateByName = updateByName;
+    }
+
+    public VipCardVo buildVo(VipCard vipCard){
+        try {
+            BeanUtils.copyProperties(this,vipCard);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return this;
+    }
+
+}

+ 0 - 33
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/OrderCheckRes.java

@@ -1,33 +0,0 @@
-package com.yonge.cooleshow.biz.dal.vo.res;
-
-import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @Author: liweifan
- * @Data: 2022/3/31 16:18
- */
-@ApiModel(value = "OrderCheckRes", description = "订单验证返回对象")
-public class OrderCheckRes {
-    @ApiModelProperty("验证结果")
-    private Boolean res;
-    @ApiModelProperty("商家id")
-    private Long merchId;
-
-    public Boolean getRes() {
-        return res;
-    }
-
-    public void setRes(Boolean res) {
-        this.res = res;
-    }
-
-    public Long getMerchId() {
-        return merchId;
-    }
-
-    public void setMerchId(Long merchId) {
-        this.merchId = merchId;
-    }
-}

+ 100 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/OrderCreateRes.java

@@ -0,0 +1,100 @@
+package com.yonge.cooleshow.biz.dal.vo.res;
+
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/31 16:18
+ */
+@ApiModel(value = "OrderCheckRes", description = "订单创建业务返回对象")
+public class OrderCreateRes {
+    @ApiModelProperty("验证结果")
+    private Boolean res;
+    @ApiModelProperty("商家id")
+    private Long merchId;
+    @ApiModelProperty("业务id")
+    private Long bizId;
+    @ApiModelProperty(value = "业务内容")
+    private String bizContent;
+    @NotNull(message = "原价不能为空")
+    @ApiModelProperty(value = "原价 ", required = true)
+    private BigDecimal originalPrice;
+    @NotNull(message = "预计价格不能为空")
+    @ApiModelProperty(value = "预计价格 ", required = true)
+    private BigDecimal expectPrice;
+    @NotNull(message = "实际价格不能为空")
+    @ApiModelProperty(value = "实际价格 ", required = true)
+    private BigDecimal actualPrice;
+    @NotNull(message = "优惠金额不能为空")
+    @ApiModelProperty(value = "优惠金额 ", required = true)
+    private BigDecimal couponAmount;
+
+    public Boolean getRes() {
+        return res;
+    }
+
+    public void setRes(Boolean res) {
+        this.res = res;
+    }
+
+    public Long getMerchId() {
+        return merchId;
+    }
+
+    public void setMerchId(Long merchId) {
+        this.merchId = merchId;
+    }
+
+    public Long getBizId() {
+        return bizId;
+    }
+
+    public void setBizId(Long bizId) {
+        this.bizId = bizId;
+    }
+
+    public BigDecimal getOriginalPrice() {
+        return originalPrice;
+    }
+
+    public void setOriginalPrice(BigDecimal originalPrice) {
+        this.originalPrice = originalPrice;
+    }
+
+    public BigDecimal getExpectPrice() {
+        return expectPrice;
+    }
+
+    public void setExpectPrice(BigDecimal expectPrice) {
+        this.expectPrice = expectPrice;
+    }
+
+    public BigDecimal getActualPrice() {
+        return actualPrice;
+    }
+
+    public void setActualPrice(BigDecimal actualPrice) {
+        this.actualPrice = actualPrice;
+    }
+
+    public BigDecimal getCouponAmount() {
+        return couponAmount;
+    }
+
+    public void setCouponAmount(BigDecimal couponAmount) {
+        this.couponAmount = couponAmount;
+    }
+
+    public String getBizContent() {
+        return bizContent;
+    }
+
+    public void setBizContent(String bizContent) {
+        this.bizContent = bizContent;
+    }
+}

+ 0 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/mybatis/StudentTotalMapper.xml → cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentTotalMapper.xml


+ 45 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VipCardMapper.xml

@@ -0,0 +1,45 @@
+<?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.yonge.cooleshow.biz.dal.dao.VipCardDao">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.VipCard">
+            <result column="id_" property="id" />
+	        <result column="time_type_" property="timeType" />
+	        <result column="original_price_" property="originalPrice" />
+	        <result column="actual_price_" property="actualPrice" />
+	        <result column="create_time_" property="createTime" />
+	        <result column="create_by__" property="createBy" />
+	        <result column="update_time_" property="updateTime" />
+	        <result column="update_by_" property="updateBy" />
+		</resultMap>  
+    
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_ as id
+        , t.time_type_ as timeType
+        , t.original_price_ as originalPrice
+        , t.actual_price_ as actualPrice
+        , t.create_time_ as createTime
+        , t.create_by__ as createBy
+        , t.update_time_ as updateTime
+        , t.update_by_ as updateBy
+        </sql> 
+    
+    <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.VipCardVo">
+        SELECT
+            <include refid="baseColumns"/>,
+            (
+                SELECT u.username_ FROM sys_user u WHERE u.id_ = t.update_by_
+            ) as updateByName
+        FROM vip_card t
+        where t.id_ = #{id}
+    </select>
+
+    <select id="selectList" resultType="com.yonge.cooleshow.biz.dal.vo.VipCardVo">
+        SELECT
+            <include refid="baseColumns" />,
+            (
+                SELECT u.username_ FROM sys_user u WHERE u.id_ = t.update_by_
+            ) as updateByName
+        FROM vip_card t
+    </select>
+</mapper>

+ 1 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/config/ResourceServerConfig.java

@@ -26,7 +26,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
     public void configure(HttpSecurity http) throws Exception {
         http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
                 .authorizeRequests().antMatchers("/task/**").hasIpAddress("0.0.0.0/0")
-                .antMatchers("/wechat/*","/v2/api-docs", "/code/*").permitAll().anyRequest().authenticated().and().httpBasic();
+                .antMatchers("/wechat/*","/v2/api-docs", "/code/*","/payment/callback").permitAll().anyRequest().authenticated().and().httpBasic();
     }
 
     @Override

+ 0 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/PaymentController.java

@@ -30,7 +30,6 @@ import java.util.Map;
 @Api(value = "付款接口", tags = "付款接口")
 public class PaymentController extends BaseController {
     private final static Logger log = LoggerFactory.getLogger(PaymentController.class);
-
     @Autowired
     private PaymentSdk paymentSdk;
     @Autowired

+ 43 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VipCardController.java

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.yonge.cooleshow.biz.dal.entity.SysConfig;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.service.VipCardService;
+import com.yonge.cooleshow.biz.dal.vo.VipCardVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/vipCard")
+@Api(value = "会员卡表", tags = "会员卡表")
+public class VipCardController extends BaseController {
+
+    @Autowired
+    private VipCardService vipCardService;
+    @Autowired
+    private SysConfigService sysConfigService;
+
+    @PostMapping("/list")
+    @ApiOperation(value = "查询列表")
+    public HttpResponseResult<List<VipCardVo>> list() {
+		List<VipCardVo> list = vipCardService.selectList();
+        return succeed(list);
+	}
+
+    @PostMapping("/vipPermissions")
+    @ApiOperation(value = "查询列表")
+    public HttpResponseResult<List<SysConfig>> vipPermissions() {
+        Map<String,Object> params = new HashMap<>();
+        params.put("group", "VIP_PERMISSION");
+        List<SysConfig> configs = sysConfigService.findAll(params);
+        return succeed(configs);
+    }
+}

+ 1 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/config/ResourceServerConfig.java

@@ -32,7 +32,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 				.and()
 				.authorizeRequests()
 				.antMatchers("/task/**").hasIpAddress("0.0.0.0/0")
-				.antMatchers("/v2/api-docs", "/code/*",
+				.antMatchers("/v2/api-docs", "/code/*","/payment/callback",
                         "/liveRoom/test","/liveRoom/syncUserStatus")
                 .permitAll().anyRequest().authenticated().and().httpBasic();
 	}