瀏覽代碼

Merge remote-tracking branch 'origin/master'

zouxuan 3 年之前
父節點
當前提交
5c82fb8aff
共有 28 個文件被更改,包括 174 次插入43 次删除
  1. 0 1
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsArticleVo.java
  2. 0 4
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java
  3. 2 1
      cooleshow-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderDao.xml
  4. 1 0
      cooleshow-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderReturnApplyDao.xml
  5. 11 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrder.java
  6. 19 4
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderMapper.xml
  7. 11 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/domain/OrderParam.java
  8. 1 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  9. 17 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/UmsMemberServiceImpl.java
  10. 5 0
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml
  11. 5 0
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalProductDao.xml
  12. 2 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/SubjectController.java
  13. 2 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserWithdrawalController.java
  14. 0 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetExport.java
  15. 0 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  16. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java
  17. 1 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java
  18. 9 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  19. 39 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserWithdrawalServiceImpl.java
  20. 0 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseAdjustVo.java
  21. 32 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/SysUserContractRecordVo.java
  22. 0 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetListVo.java
  23. 10 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserWithdrawalVo.java
  24. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRecordMapper.xml
  25. 2 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  26. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserWithdrawalMapper.xml
  27. 1 3
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicAlbumController.java
  28. 1 2
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicAlbumController.java

+ 0 - 1
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsArticleVo.java

@@ -2,7 +2,6 @@ package com.yonge.cooleshow.bbs.vo;
 
 import com.yonge.cooleshow.bbs.entity.BbsArticle;
 import io.swagger.annotations.ApiModel;
-import org.apache.commons.beanutils.BeanUtils;
 
 /**
  * @Author: liweifan

+ 0 - 4
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -179,10 +179,6 @@ public interface SysConfigConstant {
      * 琴房课扣时公式
      */
     String PIANO_ROOM_TIME_FORMULA = "piano_room_time_formula";
-    /**
-     * 琴房课开课最小时长(分钟)
-     */
-    String PIANO_ROOM_MIN_TIME = "piano_room_min_time";
     /***
      * 结算开关 0 关闭 1开启
      * @author liweifan

+ 2 - 1
cooleshow-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderDao.xml

@@ -17,7 +17,7 @@
                 um.id as userId,
                 um.username as username,
                 um.phone as phone,
-                (select  uop.payment_client_ from user_order_payment uop where uop.order_no_ = o.order_sn order by  uop.id_ desc limit 1) as userType
+                o.platform_type as userType
 
         FROM
         oms_order o
@@ -45,6 +45,7 @@
             OR o.receiver_phone LIKE concat("%",#{queryParam.receiverKeyword},"%")
             )
         </if>
+        order by o.id desc
     </select>
     <update id="delivery">
         UPDATE oms_order

+ 1 - 0
cooleshow-mall/mall-admin/src/main/resources/config/mybatis/OmsOrderReturnApplyDao.xml

@@ -40,6 +40,7 @@
             AND (return_name LIKE concat("%",#{queryParam.receiverKeyword},"%")
             OR return_phone LIKE concat("%",#{queryParam.receiverKeyword},"%"))
         </if>
+        order by id desc
     </select>
     <select id="getDetail" resultMap="returnApplyDetailResultMap">
         SELECT

+ 11 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrder.java

@@ -13,6 +13,9 @@ public class OmsOrder implements Serializable {
 
     private Long couponId;
 
+    @ApiModelProperty("下单平台 STUDENT TEACHER")
+    private String platformType;
+
     @ApiModelProperty(value = "订单编号")
     private String orderSn;
 
@@ -141,6 +144,14 @@ public class OmsOrder implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    public String getPlatformType() {
+        return platformType;
+    }
+
+    public void setPlatformType(String platformType) {
+        this.platformType = platformType;
+    }
+
     public Long getId() {
         return id;
     }

+ 19 - 4
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderMapper.xml

@@ -47,6 +47,7 @@
     <result column="receive_time" jdbcType="TIMESTAMP" property="receiveTime" />
     <result column="comment_time" jdbcType="TIMESTAMP" property="commentTime" />
     <result column="modify_time" jdbcType="TIMESTAMP" property="modifyTime" />
+    <result column="platform_type" jdbcType="TIMESTAMP" property="platformType" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -113,7 +114,7 @@
     integration, growth, promotion_info, bill_type, bill_header, bill_content, bill_receiver_phone, 
     bill_receiver_email, receiver_name, receiver_phone, receiver_post_code, receiver_province, 
     receiver_city, receiver_region, receiver_detail_address, note, confirm_status, delete_status, 
-    use_integration, payment_time, delivery_time, receive_time, comment_time, modify_time,cart_ids
+    use_integration, payment_time, delivery_time, receive_time, comment_time, modify_time,cart_ids,platform_type
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderExample" resultMap="BaseResultMap">
     select
@@ -163,7 +164,7 @@
       receiver_detail_address, note, confirm_status, 
       delete_status, use_integration, payment_time, 
       delivery_time, receive_time, comment_time, 
-      modify_time,cart_ids)
+      modify_time,cart_ids,platform_type)
     values (#{memberId,jdbcType=BIGINT}, #{couponId,jdbcType=BIGINT}, #{orderSn,jdbcType=VARCHAR}, 
       #{createTime,jdbcType=TIMESTAMP}, #{memberUsername,jdbcType=VARCHAR}, #{totalAmount,jdbcType=DECIMAL}, 
       #{payAmount,jdbcType=DECIMAL}, #{freightAmount,jdbcType=DECIMAL}, #{promotionAmount,jdbcType=DECIMAL}, 
@@ -178,7 +179,7 @@
       #{receiverDetailAddress,jdbcType=VARCHAR}, #{note,jdbcType=VARCHAR}, #{confirmStatus,jdbcType=INTEGER}, 
       #{deleteStatus,jdbcType=INTEGER}, #{useIntegration,jdbcType=INTEGER}, #{paymentTime,jdbcType=TIMESTAMP}, 
       #{deliveryTime,jdbcType=TIMESTAMP}, #{receiveTime,jdbcType=TIMESTAMP}, #{commentTime,jdbcType=TIMESTAMP}, 
-      #{modifyTime,jdbcType=TIMESTAMP},#{cartIds})
+      #{modifyTime,jdbcType=TIMESTAMP},#{cartIds},#{platformType})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.OmsOrder">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -318,6 +319,9 @@
       <if test="cartIds != null">
         cart_ids,
       </if>
+      <if test="platformType != null">
+        platform_type,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="memberId != null">
@@ -452,6 +456,9 @@
       <if test="cartIds != null">
         #{cartIds},
       </if>
+      <if test="platformType != null">
+        #{platformType},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderExample" resultType="java.lang.Long">
@@ -598,6 +605,9 @@
       <if test="record.cartIds != null">
         cart_ids = #{record.cartIds},
       </if>
+      <if test="record.platformType != null">
+        platform_type = #{record.platformType},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -649,6 +659,7 @@
       receive_time = #{record.receiveTime,jdbcType=TIMESTAMP},
       comment_time = #{record.commentTime,jdbcType=TIMESTAMP},
       cart_ids = #{record.cartIds},
+      platform_type = #{record.platformType},
       modify_time = #{record.modifyTime,jdbcType=TIMESTAMP}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -787,7 +798,10 @@
         modify_time = #{modifyTime,jdbcType=TIMESTAMP},
       </if>
       <if test="cartIds != null">
-        cart_ids = #{cartIds,jdbcType=TIMESTAMP},
+        cart_ids = #{cartIds},
+      </if>
+      <if test="platformType != null">
+        platform_type = #{platformType},
       </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
@@ -837,6 +851,7 @@
       receive_time = #{receiveTime,jdbcType=TIMESTAMP},
       comment_time = #{commentTime,jdbcType=TIMESTAMP},
       cart_ids = #{cartIds},
+      platform_type = #{platformType},
       modify_time = #{modifyTime,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>

+ 11 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/domain/OrderParam.java

@@ -21,6 +21,17 @@ public class OrderParam {
     @ApiModelProperty("被选中的购物车商品ID")
     private List<Long> cartIds;
 
+    @ApiModelProperty("平台类型 STUDENT:学生端  TEACHER:老师端")
+    private String platformType;
+
+    public String getPlatformType() {
+        return platformType;
+    }
+
+    public void setPlatformType(String platformType) {
+        this.platformType = platformType;
+    }
+
     public Long getMemberReceiveAddressId() {
         return memberReceiveAddressId;
     }

+ 1 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -211,6 +211,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         order.setFreightAmount(new BigDecimal(0));
         order.setPromotionAmount(calcPromotionAmount(orderItemList));
         order.setPromotionInfo(getOrderPromotionInfo(orderItemList));
+        order.setPlatformType(orderParam.getPlatformType());
         if (orderParam.getCouponId() == null) {
             order.setCouponAmount(new BigDecimal(0));
         } else {

+ 17 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/UmsMemberServiceImpl.java

@@ -86,6 +86,23 @@ public class UmsMemberServiceImpl implements UmsMemberService {
                 umsMember.setMemberLevelId(memberLevelList.get(0).getId());
             }
             memberMapper.insert(umsMember);
+        } else {
+            boolean flag = false;
+            if (sysUser.getUsername() != null && !sysUser.getUsername().equals(umsMember.getUsername())) {
+                umsMember.setUsername(sysUser.getUsername());
+                flag = true;
+            }
+            if (sysUser.getPhone() != null && !sysUser.getPhone().equals(umsMember.getUsername())) {
+                umsMember.setPhone(sysUser.getPhone());
+                flag = true;
+            }
+            if (sysUser.getAvatar() != null && !sysUser.getAvatar().equals(umsMember.getIcon())) {
+                umsMember.setIcon(sysUser.getAvatar());
+                flag = true;
+            }
+            if (flag) {
+                memberMapper.updateByPrimaryKeySelective(umsMember);
+            }
         }
         return umsMember;
     }

+ 5 - 0
cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml

@@ -59,6 +59,11 @@
               WHEN #{item.productSkuId} THEN stock - #{item.productQuantity}
             </foreach>
             END,
+            sale = CASE id
+            <foreach collection="itemList" item="item">
+                WHEN #{item.productSkuId} THEN pms_sku_stock.sale + #{item.productQuantity}
+            </foreach>
+            END,
             lock_stock = CASE id
             <foreach collection="itemList" item="item">
               WHEN #{item.productSkuId} THEN lock_stock - #{item.productQuantity}

+ 5 - 0
cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalProductDao.xml

@@ -104,6 +104,11 @@
             WHEN #{item.productId} THEN stock - #{item.stock}
         </foreach>
         END,
+        sale = CASE id
+        <foreach collection="itemList" item="item">
+            WHEN #{item.productId} THEN sale + #{item.stock}
+        </foreach>
+        END,
         lock_stock = CASE id
         <foreach collection="itemList" item="item">
             WHEN #{item.productId} THEN lock_stock - #{item.stock}

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

@@ -74,11 +74,11 @@ public class SubjectController extends BaseController {
 		return succeed();
 	}
 
-	@ApiOperation(value = "删除指定声部")
+	/*@ApiOperation(value = "删除指定声部")
 	@PostMapping("/delete/{id}")
 	@PreAuthorize("@pcs.hasPermissions('subject/delete')")
 	public HttpResponseResult<Subject> delete(@ApiParam(value = "声部编号", required = true) @PathVariable("id") Long id) {
 		subjectService.deleteById(id);
 		return succeed();
-	}
+	}*/
 }

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

@@ -99,7 +99,7 @@ public class UserWithdrawalController extends BaseController {
         return userWithdrawalService.batchAuth(authOperaReq, user);
     }
 
-    @ApiImplicitParams({
+    /*@ApiImplicitParams({
             @ApiImplicitParam(
                     name = "id",
                     value = "审核单id",
@@ -130,5 +130,5 @@ public class UserWithdrawalController extends BaseController {
             e.printStackTrace();
             return HttpResponseResult.failed("转账失败");
         }
-    }
+    }*/
 }

+ 0 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicSheetExport.java

@@ -2,10 +2,8 @@ package com.yonge.cooleshow.biz.dal.dto;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.yonge.cooleshow.biz.dal.convert.AudioTypeConverter;
-import com.yonge.cooleshow.biz.dal.convert.ChargeTypeConverter;
 import com.yonge.cooleshow.biz.dal.convert.YesOrNoConverter;
 import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
-import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java

@@ -3,7 +3,6 @@ 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.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -81,6 +81,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     TEACHER_STYLE_VIDEO_SUCCESS("个人风采审核通过"),
     TEACHER_STYLE_VIDEO_FAIL("个人风采审核失败"),
 
+    TEACHER_WITHDRAW_UNPASS("老师结算审核不通过"),
     TEACHER_WITHDRAW_SUCCESS("老师结算成功"),
 
     //------短信模板------

+ 1 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java

@@ -1,12 +1,11 @@
 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.search.MusicAlbumDetailSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;

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

@@ -48,7 +48,9 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
+import java.time.Instant;
 import java.time.LocalDate;
+import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -1113,6 +1115,13 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         Date startTime = adjustVo.getStartTime();
         Date endTime = adjustVo.getEndTime();
         Date now = new Date();
+
+        if(endTime==null){
+            CourseSchedule courseSchedule = baseMapper.selectById(courseId);
+            Integer minutes = Math.toIntExact(ChronoUnit.MINUTES.between(Instant.ofEpochMilli(courseSchedule.getStartTime().getTime()), Instant.ofEpochMilli(courseSchedule.getEndTime().getTime())));
+            endTime = DateUtil.offsetMinute(startTime, minutes);
+        }
+
         //校验时间是否为未来时刻
         if (startTime.before(now) || endTime.before(now)) {
             throw new BizException("排课日期必须大于当前日期");
@@ -1683,12 +1692,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         Integer singleClssTime = arrangeCourseVo.getSingleClssTime();//单课时长
         List<Long> studentIds = arrangeCourseVo.getStudentIds();//学员id集合
 
-        //单课最小时长
-//        Integer minTime = Integer.valueOf(sysConfigService.findConfigValue(SysConfigConstant.PIANO_ROOM_TIME_FORMULA));
-//        if (singleClssTime<minTime){
-//            throw new BizException("单课最小时长不得低于{}分钟", minTime);
-//        }
-
         String formula = sysConfigService.findConfigValue(SysConfigConstant.PIANO_ROOM_TIME_FORMULA);
         Integer n = (Integer) WrapperUtil.strToFormula(formula, "n", String.valueOf(studentIds.size() + 1));//人数计算 公式n*(n-1) n包含老师
         Integer consumTime = classNum * singleClssTime * n;//消耗时长 课程数*单课时长*人数

+ 39 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserWithdrawalServiceImpl.java

@@ -82,7 +82,16 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
     @Override
     public IPage<UserWithdrawalVo> selectPage(IPage<UserWithdrawalVo> page, TeacherWithdrawalSearch query) {
         List<UserWithdrawalVo> withdrawalVoList = baseMapper.selectPage(page, query);
-        withdrawalVoList.forEach(o -> o.setBankCard(ValueUtil.fuzzyBankCard(o.getBankCard())));
+        withdrawalVoList.forEach(o -> {
+            if(AuthStatusEnum.DOING.equals(o.getAuthStatus())){
+                o.setWithdrawStatus("DOING");
+            }else if(TradeStatusEnum.succeeded.equals(o.getTradeStatus())){
+                o.setWithdrawStatus("SUCCESS");
+            }else{
+                o.setWithdrawStatus("FAILED");
+            }
+            o.setBankCard(ValueUtil.fuzzyBankCard(o.getBankCard()));
+        });
         return page.setRecords(withdrawalVoList);
     }
 
@@ -221,7 +230,6 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
 
         //请求三方
         SysUser withdrawalUser = sysUserService.findUserById(build.getUserId());
-        Boolean flag = false;
         if (authOperaReq.getPass()) {
             //请求三方接口
             //交易流水号生成
@@ -234,14 +242,15 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
             if (withdraw.getStatus() && withdraw.getData()) {
                 build.setTradeStatus(TradeStatusEnum.pending);
                 build.setTransNo(transNo.toString());
-                flag = true;
             } else {
                 build.setTradeStatus(TradeStatusEnum.failed);
                 build.setErrorMsg("请求三方接口返回失败");
             }
         }
+        updateById(build);
+
         //修改系统中账户
-        if (!authOperaReq.getPass() || !flag) {
+        if (!authOperaReq.getPass()) {
             //审核不通过,账户解冻
             UserAccountRecordDto accountRecordDto = new UserAccountRecordDto(
                     build.getUserId(), build.getAmount(), InOrOutEnum.OUT, AccountBizTypeEnum.WITHDRAWAL,
@@ -250,8 +259,11 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
             accountRecordDto.setFrozenType(FrozenTypeEnum.FROZEN_BACK);
             accountRecordDto.setSaveRecord(false);
             userAccountService.accountChange(accountRecordDto);
+
+            //发生结算成功通知
+            unpassSend(build.getUserId(), build.getPhone(), authOperaReq.getReason());
         }
-        updateById(build);
+
     }
 
     @Override
@@ -327,6 +339,18 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
             detail.setTradeNo(callback.getOrderNo());
             detail.setErrorCode(callback.getErrorCode());
             detail.setErrorMsg(callback.getErrorMsg());
+
+            //审核不通过,账户解冻
+            UserAccountRecordDto accountRecordDto = new UserAccountRecordDto(
+                    detail.getUserId(), detail.getAmount(), InOrOutEnum.OUT, AccountBizTypeEnum.WITHDRAWAL,
+                    detail.getId(), "老师结算", null
+            );
+            accountRecordDto.setFrozenType(FrozenTypeEnum.FROZEN_BACK);
+            accountRecordDto.setSaveRecord(false);
+            userAccountService.accountChange(accountRecordDto);
+
+            //发生结算失败通知
+            unpassSend(detail.getUserId(), detail.getPhone(), "结算失败,请重新提交。");
         } else {
             return;
         }
@@ -360,6 +384,16 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
         }
     }
 
+    private void unpassSend(Long userId, String phone, String reason) {
+        Map<Long, String> receivers = new HashMap<>();
+        receivers.put(userId, phone);
+        try {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_WITHDRAW_UNPASS,
+                    receivers, null, 0, null, ClientEnum.TEACHER.getCode(), reason);
+        } catch (Exception e) {
+            log.error("老师结算极光消息推送异常,userId={}", userId);
+        }
+    }
 
     /***
      * 入结算表

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseAdjustVo.java

@@ -26,7 +26,6 @@ public class CourseAdjustVo implements Serializable {
     private Date startTime;
 
     @ApiModelProperty(value = "下课时间")
-    @NotNull(message = "下课时间")
     private Date endTime;
 
     public Integer getCourseId() {

+ 32 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/SysUserContractRecordVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.beanutils.BeanUtils;
 
 /**
@@ -11,7 +12,37 @@ import org.apache.commons.beanutils.BeanUtils;
 @ApiModel(value = "SysUserContractRecordVo对象", description = "用户协议记录表-一个用户一种协议一个版本一条记录查询视图对象")
 public class SysUserContractRecordVo extends SysUserContractRecord{
 	private static final long serialVersionUID = 1L;
-    
+    @ApiModelProperty(value = "协议名称")
+    private String templateName;
+    @ApiModelProperty(value = "协议类型")
+    private String templateType;
+    @ApiModelProperty(value = "协议版本")
+    private Integer version;
+
+    public String getTemplateName() {
+        return templateName;
+    }
+
+    public void setTemplateName(String templateName) {
+        this.templateName = templateName;
+    }
+
+    public String getTemplateType() {
+        return templateType;
+    }
+
+    public void setTemplateType(String templateType) {
+        this.templateType = templateType;
+    }
+
+    public Integer getVersion() {
+        return version;
+    }
+
+    public void setVersion(Integer version) {
+        this.version = version;
+    }
+
     public SysUserContractRecordVo buildVo(SysUserContractRecord sysUserContractRecord){
         try {
             BeanUtils.copyProperties(this,sysUserContractRecord);

+ 0 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetListVo.java

@@ -1,13 +1,9 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import org.springframework.format.annotation.DateTimeFormat;
 
-import java.util.Date;
 import java.util.List;
 
 /**

+ 10 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserWithdrawalVo.java

@@ -21,9 +21,10 @@ public class UserWithdrawalVo extends UserWithdrawal {
 	private String	withdrawaUser;
 	@ApiModelProperty("结算手机号 ")
 	private String phone;
-
 	@ApiModelProperty("审核人 ")
 	private String verifyUser;
+	@ApiModelProperty("提现状态 DOING 审核中 FAILED 未通过 SUCCESS 提现成功 ")
+	private String withdrawStatus;
 
 	public String getBankName() {
 		return bankName;
@@ -72,4 +73,12 @@ public class UserWithdrawalVo extends UserWithdrawal {
 	public void setRealName(String realName) {
 		this.realName = realName;
 	}
+
+	public String getWithdrawStatus() {
+		return withdrawStatus;
+	}
+
+	public void setWithdrawStatus(String withdrawStatus) {
+		this.withdrawStatus = withdrawStatus;
+	}
 }

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

@@ -73,6 +73,7 @@
         s.end_time_ AS endTime,
         s.single_course_time_ AS singleCourseTime,
         a.count_ AS studentCount,
+        (CASE WHEN s.status_ = 'NOT_START' THEN 0 ELSE ( a.count_ + 1 )*(a.count_)* s.single_course_time_ END) AS consumTime,
         i.id_ AS imGroupId
         FROM course_schedule s
         LEFT JOIN course_group g ON s.course_group_id_ = g.id_

+ 2 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -143,7 +143,8 @@
 
     <select id="querySubjectItem" resultType="com.yonge.cooleshow.biz.dal.entity.Subject">
         select * from subject t
-        where exists(
+        where t.parent_subject_id_ != 0
+        and exists(
             select 1 from teacher s where s.user_id_ = #{userId} and find_in_set(t.id_,s.subject_id_)
             union all
             select 1 from music_sheet a where a.user_id_ = #{userId} and find_in_set(t.id_,a.music_subject_)

+ 1 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserWithdrawalMapper.xml

@@ -126,6 +126,7 @@
                 <![CDATA[AND t.create_time_ < #{param.endTime} ]]>
             </if>
         </where>
+        order by t.create_time_ desc
     </sql>
 
     <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.UserWithdrawalVo">

+ 1 - 3
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicAlbumController.java

@@ -6,18 +6,16 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
-import com.yonge.cooleshow.biz.dal.entity.AppVersionInfo;
-import com.yonge.cooleshow.biz.dal.enums.AppVersionStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
-import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.base.page.QueryInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;

+ 1 - 2
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicAlbumController.java

@@ -6,19 +6,18 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
-import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.base.page.QueryInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Base64;
 
 /**
  * 专辑表 web 控制层