浏览代码

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

liujunchi 3 年之前
父节点
当前提交
ad41bdc739

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleRecordDao.java

@@ -26,4 +26,7 @@ public interface CourseScheduleRecordDao extends BaseMapper<CourseScheduleRecord
 
 
     //消耗时长详情
     //消耗时长详情
     IPage<CourseScheduleRecordVo> selectConsumeTimeList(Page<CourseScheduleRecordVo> pageInfo, @Param("param") Map<String, Object> param);
     IPage<CourseScheduleRecordVo> selectConsumeTimeList(Page<CourseScheduleRecordVo> pageInfo, @Param("param") Map<String, Object> param);
+
+    //查询课程列表
+    IPage<CourseScheduleRecordVo> selectCourseList(Page<CourseScheduleRecordVo> pageInfo,@Param("param") Map<String, Object> param);
 }
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -253,5 +253,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     void updateCourseTime(Map<String, Object> param);
     void updateCourseTime(Map<String, Object> param);
 
 
     void updateCourseStudent(Map<String, Object> param);
     void updateCourseStudent(Map<String, Object> param);
+
+    PageInfo<CourseScheduleRecordVo> selectCourseList(Map<String, Object> param);
 }
 }
 
 

+ 11 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -33,7 +33,6 @@ import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.obj.ObjectUtil;
 import com.yonge.toolset.utils.obj.ObjectUtil;
-import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RMap;
 import org.redisson.api.RMap;
@@ -44,7 +43,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
-import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
@@ -1778,6 +1776,17 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
     }
 
 
     /**
     /**
+     * @Description: 琴房课列表
+     * @Author: cy
+     * @Date: 2022/6/7
+     */
+    @Override
+    public PageInfo<CourseScheduleRecordVo> selectCourseList(Map<String, Object> param) {
+        param.put("type", CourseScheduleEnum.PIANO_ROOM_CLASS.getCode());
+        return PageUtil.pageInfo(recordDao.selectCourseList(PageUtil.getPageInfo(param), param));
+    }
+
+    /**
      * @Description: 排课推送
      * @Description: 排课推送
      * @Author: cy
      * @Author: cy
      * @Date: 2022/5/31
      * @Date: 2022/5/31

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

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.support.DistributedLock;
 import com.yonge.cooleshow.biz.dal.support.DistributedLock;
@@ -295,6 +296,11 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             }
             }
         }
         }
         log.info("下单请求 start is {} end is {}", start, System.currentTimeMillis());
         log.info("下单请求 start is {} end is {}", start, System.currentTimeMillis());
+
+        //判断订单是否是无需支付的订单,若是,则直接完成订单
+        if(BigDecimal.ZERO.equals(orderVo.getActualPrice())){
+            orderSuccess(orderVo);
+        }
         return HttpResponseResult.succeed(orderVo);
         return HttpResponseResult.succeed(orderVo);
     }
     }
 
 
@@ -665,12 +671,16 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         }
         }
         //清除老师声部缓存
         //清除老师声部缓存
         redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(detail.getUserId())).delete();
         redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(detail.getUserId())).delete();
-
     }
     }
 
 
     private void testOrderSuccess(UserOrderVo detail) {
     private void testOrderSuccess(UserOrderVo detail) {
-        UserOrderPayment orderPayment = new UserOrderPayment();
+        if(null == detail || StringUtil.isEmpty(detail.getOrderNo())){
+            return;
+        }
+        //关闭当前正在支付的订单
+        orderPaymentService.closePaymentAndReqOpen(detail.getOrderNo(),"交易取消");
 
 
+        UserOrderPayment orderPayment = new UserOrderPayment();
         OpenEnum openType = OpenEnum.valueOf(paymentProperties.getOpenType());
         OpenEnum openType = OpenEnum.valueOf(paymentProperties.getOpenType());
         orderPayment.setOpenType(openType);
         orderPayment.setOpenType(openType);
 
 

+ 36 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRecordMapper.xml

@@ -69,4 +69,40 @@
             </if>
             </if>
         </where>
         </where>
     </select>
     </select>
+    <select id="selectCourseList" resultType="com.yonge.cooleshow.biz.dal.vo.CourseScheduleRecordVo">
+        SELECT
+        s.id_ AS courseId,
+        g.name_ AS groupName,
+        g.subject_id_ AS subjectId,
+        sb.name_ AS subjectName,
+        s.status_ AS `status`,
+        s.start_time_ AS startTime,
+        s.end_time_ AS endTime,
+        s.single_course_time_ AS singleCourseTime,
+        a.count_ AS studentCount
+        FROM course_schedule s
+        LEFT JOIN course_group g ON s.course_group_id_ = g.id_
+        LEFT JOIN `subject` sb ON g.subject_id_ = sb.id_
+        LEFT JOIN (SELECT course_id_,COUNT(1) AS count_ FROM course_schedule_student_payment WHERE course_type_='PIANO_ROOM_CLASS' GROUP BY course_id_) a ON s.id_=a.course_id_
+        <where>
+            <if test="param.type != null and param.type !=''">
+                AND s.type_ = #{param.type}
+            </if>
+            <if test="param.status != null and param.status !=''">
+                AND s.status_ = #{param.status}
+            </if>
+            <if test="param.teacherId != null">
+                AND s.teacher_id_ = #{param.teacherId}
+            </if>
+            <if test="param.subjectId != null">
+                AND g.subject_id_ = #{param.subjectId}
+            </if>
+            <if test="param.month != null and param.month !=''">
+                AND date_format(s.end_time_,'%Y-%m') = #{param.month}
+            </if>
+            <if test="param.status != null and param.status !=''">
+                AND s.status_ = #{param.status}
+            </if>
+        </where>
+    </select>
 </mapper>
 </mapper>

+ 17 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java

@@ -216,7 +216,23 @@ public class TeacherCourseScheduleController extends BaseController {
             @ApiImplicitParam(name = "month", dataType = "String", value = "月份,yyyy-mm"),
             @ApiImplicitParam(name = "month", dataType = "String", value = "月份,yyyy-mm"),
             @ApiImplicitParam(name = "status", dataType = "String", value = "课程状态"),
             @ApiImplicitParam(name = "status", dataType = "String", value = "课程状态"),
     })
     })
-    @ApiOperation("课程列表&消耗时长列表")
+    @ApiOperation("课程列表")
+    @PostMapping("/selectCourseList")
+    public HttpResponseResult<PageInfo<CourseScheduleRecordVo>> selectCourseList(@RequestBody Map<String, Object> param) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        param.put("teacherId", user.getId());
+        return succeed(courseScheduleService.selectCourseList(param));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "subjectId", dataType = "Long", value = "声部id"),
+            @ApiImplicitParam(name = "month", dataType = "String", value = "月份,yyyy-mm"),
+            @ApiImplicitParam(name = "status", dataType = "String", value = "课程状态"),
+    })
+    @ApiOperation("消耗时长列表")
     @PostMapping("/selectConsumeTimeList")
     @PostMapping("/selectConsumeTimeList")
     public HttpResponseResult<PageInfo<CourseScheduleRecordVo>> selectConsumeTimeList(@RequestBody Map<String, Object> param) {
     public HttpResponseResult<PageInfo<CourseScheduleRecordVo>> selectConsumeTimeList(@RequestBody Map<String, Object> param) {
         SysUser user = sysUserFeignService.queryUserInfo();
         SysUser user = sysUserFeignService.queryUserInfo();

+ 7 - 2
toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/ali/OriginalAliAppTemplate.java

@@ -26,6 +26,7 @@ import com.yonge.toolset.payment.core.props.PaymentProperties;
 import com.yonge.toolset.payment.core.service.SysConfigPaymentService;
 import com.yonge.toolset.payment.core.service.SysConfigPaymentService;
 import com.yonge.toolset.payment.core.util.RequestKitBean;
 import com.yonge.toolset.payment.core.util.RequestKitBean;
 import com.yonge.toolset.payment.original.ali.constant.AlipayConstant;
 import com.yonge.toolset.payment.original.ali.constant.AlipayConstant;
+import com.yonge.toolset.payment.original.wx.constant.WxpayConstant;
 import com.yonge.toolset.utils.string.StringUtil;
 import com.yonge.toolset.utils.string.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -277,10 +278,14 @@ public class OriginalAliAppTemplate implements PaymentTemplate {
 
 
                     ExecutePaymentCallBack executePayment = new ExecutePaymentCallBack();
                     ExecutePaymentCallBack executePayment = new ExecutePaymentCallBack();
                     String total_amount = jsonParams.getString("total_amount");
                     String total_amount = jsonParams.getString("total_amount");
-                    String receipt_amount = jsonParams.getString("receipt_amount");
 
 
                     executePayment.setPayAmt(total_amount);
                     executePayment.setPayAmt(total_amount);
-                    executePayment.setFeeAmt(sub(total_amount, receipt_amount));
+                    if (!StringUtil.isEmpty(total_amount)) {
+                        String ALI_FEE_RATE = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, AlipayConstant.ALI_FEE_RATE).getParamValue();
+                        BigDecimal feeRate = new BigDecimal(StringUtil.isEmpty(ALI_FEE_RATE) ? "0.006" : ALI_FEE_RATE);
+                        //支付宝不返回手续费,通过费率自己计算
+                        executePayment.setFeeAmt(new BigDecimal(total_amount).multiply(feeRate).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
+                    }
                     executePayment.setTradeTime(jsonParams.getDate("gmt_payment"));
                     executePayment.setTradeTime(jsonParams.getDate("gmt_payment"));
                     paymentCallBack.setExecutePaymentCallBack(executePayment);
                     paymentCallBack.setExecutePaymentCallBack(executePayment);
                 }
                 }

+ 6 - 0
toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/ali/constant/AlipayConstant.java

@@ -62,5 +62,11 @@ public interface AlipayConstant {
      * @updateTime 2022/5/12 14:12
      * @updateTime 2022/5/12 14:12
      */
      */
     String ALI_CONTENT_SIGN_TYPE = "ALI_CONTENT_SIGN_TYPE";
     String ALI_CONTENT_SIGN_TYPE = "ALI_CONTENT_SIGN_TYPE";
+    /***
+     * 支付宝-手续费率
+     * @author liweifan
+     * @updateTime 2022/5/13 14:09
+     */
+    String ALI_FEE_RATE = "ALI_FEE_RATE";
 
 
 }
 }

+ 1 - 0
toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/wx/OriginalWxAppTemplate.java

@@ -267,6 +267,7 @@ public class OriginalWxAppTemplate implements PaymentTemplate {
                     BigDecimal payAmt = new BigDecimal(result.getAmount().getTotal()).divide(new BigDecimal("100"));
                     BigDecimal payAmt = new BigDecimal(result.getAmount().getTotal()).divide(new BigDecimal("100"));
                     executePayment.setPayAmt(payAmt.toString());
                     executePayment.setPayAmt(payAmt.toString());
 
 
+                    //微信不返回手续费,通过
                     String WX_FEE_RATE = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_FEE_RATE).getParamValue();
                     String WX_FEE_RATE = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_FEE_RATE).getParamValue();
 
 
                     BigDecimal feeRate = new BigDecimal(StringUtil.isEmpty(WX_FEE_RATE) ? "0.006" : WX_FEE_RATE);
                     BigDecimal feeRate = new BigDecimal(StringUtil.isEmpty(WX_FEE_RATE) ? "0.006" : WX_FEE_RATE);