Procházet zdrojové kódy

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

liujunchi před 3 roky
rodič
revize
38bd38a9fe
34 změnil soubory, kde provedl 268 přidání a 67 odebrání
  1. 8 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  2. 4 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java
  3. 2 2
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserDeviceServiceImpl.java
  4. 5 1
      cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java
  5. 3 1
      cooleshow-cms/src/main/resources/config/mybatis/HelpCenterContentMapper.xml
  6. 38 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/ContractDto.java
  7. 6 4
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  8. 1 5
      cooleshow-mall/mall-portal/src/main/resources/config/mybatis/PortalOrderDao.xml
  9. 14 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java
  10. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java
  11. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AlbumFavoriteService.java
  12. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountService.java
  13. 7 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderPaymentService.java
  14. 16 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/AlbumFavoriteServiceImpl.java
  15. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  16. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  17. 15 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  18. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  19. 5 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  20. 1 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountRecordServiceImpl.java
  21. 26 29
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountServiceImpl.java
  22. 8 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderPaymentServiceImpl.java
  23. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundServiceImpl.java
  24. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserWithdrawalServiceImpl.java
  25. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseInfoVo.java
  26. 14 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicAlbumVo.java
  27. 10 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherHomeVo.java
  28. 10 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java
  29. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java
  30. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wordfilter/WordFilter.java
  31. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysManualMapper.xml
  32. 3 5
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java
  33. 5 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java
  34. 5 0
      cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicAlbumController.java

+ 8 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.api.feign;
 
 import com.yonge.cooleshow.api.feign.fallback.AdminFeignServiceFallback;
 import com.yonge.cooleshow.common.constant.AppConstant;
+import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 import com.yonge.toolset.feign.config.FeignConfiguration;
@@ -70,4 +71,11 @@ public interface AdminFeignService {
     @GetMapping(value = "/sysConfig/findConfigValue")
     HttpResponseResult<String> findConfigValue(String paramName);
 
+
+    /**
+     * 签协议 商城调用
+     */
+    @GetMapping("/open/userOrder/contractRecord")
+    HttpResponseResult<Boolean> contractRecord(@RequestBody ContractDto contract);
+
 }

+ 4 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.api.feign.fallback;
 
 import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 
@@ -56,4 +57,7 @@ public class AdminFeignServiceFallback implements AdminFeignService {
         return null;
     }
 
+    public HttpResponseResult<Boolean> contractRecord(ContractDto contract) {
+        return null;
+    }
 }

+ 2 - 2
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserDeviceServiceImpl.java

@@ -43,9 +43,9 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Long, SysUserDevic
 	@Override
 	public boolean bindDevice(String clientId, Long userId, String deviceNum) {
 		String paramName;
-		if (StringUtils.equals(clientId, "STUDENT")) {
+		if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
 			paramName = "student_device_acc_num";
-		} else if (StringUtils.equals(clientId, "TEACHER")) {
+		} else if (StringUtils.equalsIgnoreCase(clientId, "TEACHER")) {
 			paramName = "teacher_device_acc_num";
 		}else {
 			return true;

+ 5 - 1
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java

@@ -44,7 +44,11 @@ public class NewsController extends BaseController {
 	@ApiOperation(value = "资讯/广告/闪页/轮播图/乐理 列表分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
 	@PostMapping(value = "/page",  consumes="application/json", produces="application/json")
 	public HttpResponseResult<PageInfo<SysNewsInformationDto>> getList(@Valid @RequestBody NewsInformationQueryInfo queryInfo) {
-		
+
+		if (queryInfo.getType() == 2) {
+			queryInfo.setAttribute2(queryInfo.getSubType());
+			queryInfo.setSubType(null);
+		}
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
 		return succeed(sysNewsInformationService.selectPage(queryInfo));

+ 3 - 1
cooleshow-cms/src/main/resources/config/mybatis/HelpCenterContentMapper.xml

@@ -28,7 +28,9 @@
 				and content.catalog_id_ in (${catalogIds})
 			</if>
 			<if test="title!= null and title != ''">
-				and content.title_ like '%' #{title} '%'
+				and (content.title_ like '%' #{title} '%'
+					or content.id_ like '%' #{title} '%'
+				)
 			</if>
 			<if test="status!= null">
 			and ((content.status_ = #{status} and content.catalog_id_ = 1)

+ 38 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/ContractDto.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.common.entity;
+
+/**
+ * Description 远程签署协议
+ *
+ * @author liujunchi
+ * @date 2022-07-26
+ */
+public class ContractDto {
+
+    // 用户类型 STUDENT TEACHER
+    private String type;
+
+    // 用户id
+    private Long userId;
+
+
+    public ContractDto(String type, Long userId) {
+        this.type = type;
+        this.userId = userId;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+}

+ 6 - 4
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.api.feign.AdminFeignService;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
+import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
@@ -97,6 +98,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     private CancelOrderSender cancelOrderSender;
 
     @Autowired
+    private AdminFeignService adminFeignService;
+    @Autowired
     private UserOrderPaymentService userOrderPaymentService;
 
     @Autowired(required = true)
@@ -116,9 +119,6 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 
 
     @Autowired
-    private AdminFeignService adminFeignService;
-
-    @Autowired
     private PortalProductDao productDao;
 
     @Override
@@ -335,9 +335,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         OmsOrderDetail detail = detail(orderId);
 
         // 设置平台收入和分润
-
         setPromoterRecord(detail,PostStatusEnum.WAIT);
 
+        // 签协议
+        adminFeignService.contractRecord(new ContractDto(orderDetail.getPlatformType(),orderDetail.getMemberId()));
 
         return count;
     }
@@ -1053,6 +1054,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             }
         }
         userOrderPaymentService.saveOrUpdate(orderPayment);
+
     }
 
 

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

@@ -9,11 +9,7 @@
     </resultMap>
     <select id="getDetail" resultMap="orderDetailMap">
         SELECT
-            o.id,
-            o.order_sn,
-            o.coupon_id,
-            o.integration,
-            o.member_id,
+            o.*,
             ot.id ot_id,
         ot.product_id ot_product_id,
             ot.product_name ot_product_name,

+ 14 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.admin.controller.open;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
+import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
 import com.yonge.cooleshow.biz.dal.service.UserOrderPaymentService;
@@ -155,4 +156,17 @@ public class UserOrderClient extends BaseController {
         userOrderService.setOrderStatus(orderNo, orderStatus);
         return succeed(true);
     }
+
+
+
+
+    /**
+     * 签协议 商城调用
+     */
+    @PostMapping("/contractRecord")
+    @ApiOperation(value = "签协议 商城调用", notes = "签协议 商城调用")
+    public HttpResponseResult<Boolean> contractRecord(@RequestBody ContractDto contract) {
+        paymentService.setContractRecord(contract.getType(),contract.getUserId());
+        return succeed(true);
+    }
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java

@@ -30,6 +30,9 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty("专辑状态0:停用,1:启用")
     private YesOrNoEnum albumStatus;
 
+    @ApiModelProperty("登录用户id")
+    private Long userId;
+
 
     @ApiModelProperty(value = "是否审核时可见 (0:否  1:是)",hidden = true)
     private YesOrNoEnum auditVersion;
@@ -49,6 +52,13 @@ public class MusicAlbumSearch extends QueryInfo{
     @ApiModelProperty(hidden = true)
     private List<Long> subjectIdList;
 
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
 
     public String getSubjectIds() {
         return subjectIds;

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AlbumFavoriteService.java

@@ -21,4 +21,13 @@ public interface AlbumFavoriteService extends IService<AlbumFavorite> {
      * @return list
      */
     List<AlbumFavorite> getFavorite(Long studentId, Long albumId);
+
+    /**
+     * 获取收藏信息
+     *
+     * @param userId 用户id
+     * @param albumIds 专辑id
+     * @return
+     */
+    List<Long> selectFavorite(Long userId, List<Long> albumIds);
 }

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
 import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
+import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountSearch;
 import com.yonge.cooleshow.biz.dal.entity.UserAccount;
@@ -70,7 +71,7 @@ public interface UserAccountService extends IService<UserAccount>  {
      * @updateTime 2022/4/7 16:40
      * @return: java.lang.Integer
      */
-    HttpResponseResult<UserAccountRecord> accountChange(Long recordId, PostStatusEnum postStatus);
+    HttpResponseResult<UserAccountRecord> accountChange(UserAccountRecord record, PostStatusEnum postStatus);
     /***
      * 账户统计查询
      * @author liweifan

+ 7 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderPaymentService.java

@@ -78,5 +78,11 @@ public interface UserOrderPaymentService extends IService<UserOrderPayment> {
     void closePaymentCallBack(PaymentCallBack data);
 
 
-
+    /**
+     * 签协议
+     *
+     * @param  type 类型
+     * @param userId 用户id
+     */
+    void setContractRecord(String type, Long userId);
 }

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

@@ -8,8 +8,11 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * AlbumFavoriteService服务实现类
@@ -37,4 +40,17 @@ public class AlbumFavoriteServiceImpl extends ServiceImpl<AlbumFavoriteDao,Album
                     .eq(AlbumFavorite::getUserId, studentId)
                     .list();
     }
+
+    @Override
+    public List<Long> selectFavorite(Long userId, List<Long> albumIds) {
+        List<AlbumFavorite> list = this.lambdaQuery()
+                                       .in(AlbumFavorite::getAlbumId, albumIds)
+                                       .eq(AlbumFavorite::getUserId, userId)
+                                       .list();
+
+        if (CollectionUtils.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+        return list.stream().map(AlbumFavorite::getAlbumId).collect(Collectors.toList());
+    }
 }

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

@@ -144,6 +144,11 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         if (teacher == null) {
             throw new BizException("用户不存在");
         }
+        if (sysUser.getId().equals(teacher.getId())) {
+            result.setMyself(true);
+        } else {
+            result.setMyself(false);
+        }
 
         result.setTeacherName(teacher.getRealName());
         result.setUserName(teacher.getUsername());

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

@@ -1779,7 +1779,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             for (UserAccountRecordDto dto : list) {
                 UserAccountRecordVo record = userAccountRecordService.detail(dto.getOrderNo(), dto.getBizType(), dto.getBizId());
                 if (null != record) {
-                    userAccountService.accountChange(record.getId(), PostStatusEnum.RECORDED);
+                    userAccountService.accountChange(record, PostStatusEnum.RECORDED);
                 }
             }
             Set<Long> bizIds = list.stream().map(UserAccountRecordDto::getBizId).collect(Collectors.toSet());

+ 15 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java

@@ -203,7 +203,21 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
 
     @Override
     public IPage<MusicAlbumVo> selectStudentPage(IPage<MusicAlbumVo> page, MusicAlbumSearch query) {
-        return page.setRecords(baseMapper.selectStudentPage(page,query));
+        IPage<MusicAlbumVo> iPage = page.setRecords(baseMapper.selectStudentPage(page, query));
+        List<MusicAlbumVo> records = iPage.getRecords();
+        List<Long> albumIds = records.stream().map(MusicAlbumVo::getId).collect(Collectors.toList());
+        if (query.getUserId() == null || CollectionUtils.isEmpty(albumIds)) {
+            return iPage;
+        }
+        albumIds = albumFavoriteService.selectFavorite(query.getUserId(),albumIds);
+        for (MusicAlbumVo record : records) {
+            if(albumIds.contains(record.getId())) {
+                record.setFavorite(YesOrNoEnum.YES);
+            } else {
+                record.setFavorite(YesOrNoEnum.NO);
+            }
+        }
+        return iPage;
     }
 
     private boolean checkNameRepeat(String albumName, Long id) {

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

@@ -638,6 +638,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
         if (musicSheetPurchaseRecord == null) {
             musicSheetPurchaseRecord = new MusicSheetPurchaseRecord();
         }
+        musicSheetPurchaseRecord.setClientType(userOrderDetailVo.getOrderClient());
         musicSheetPurchaseRecord.setMusicSheetId(userOrderDetailVo.getBizId());
         musicSheetPurchaseRecord.setOrderNo(userOrderDetailVo.getOrderNo());
         musicSheetPurchaseRecord.setTeacherId(userOrderDetailVo.getMerchId());

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

@@ -24,6 +24,7 @@ import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
+import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import com.yonge.toolset.utils.string.ValueUtil;
 import org.redisson.api.RMap;
@@ -72,6 +73,8 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         if (null == detail) {
             detail = new TeacherVo();
         }
+        int num = DateUtil.daysBetween(new Date(), detail.getMembershipEndTime());
+        detail.setMembershipDays(num < 0 ? 0 : num);
         List<TeacherStyleVideo> teacherStyleVideos = teacherStyleVideoService.selectListByUserId(userId);
         detail.setStyleVideo(teacherStyleVideos);
         TeacherAuthEntryRecordVo lastRecordByUserId = entryRecordService.getLastRecordByUserId(userId);
@@ -114,7 +117,8 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         teacherHomeVo.setIdCardNo(ValueUtil.fuzzyIdCard(teacherHomeVo.getIdCardNo()));
         teacherHomeVo.setPhone(ValueUtil.fuzzyMobile(teacherHomeVo.getPhone()));
         teacherHomeVo.setHeardUrl(teacher.getAvatar());
-
+        int num = DateUtil.daysBetween(new Date(), teacher.getMembershipEndTime());
+        teacherHomeVo.setMembershipDays(num < 0 ? 0 : num);
         if (YesOrNoEnum.YES.equals(teacher.getEntryFlag())) {
             teacherHomeVo.setEntryStatus(AuthStatusEnum.PASS);
         } else {

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

@@ -105,7 +105,7 @@ public class UserAccountRecordServiceImpl extends ServiceImpl<UserAccountRecordD
         paramNames.add(AccountBizTypeEnum.VIP_SHARE.getCode());
         List<UserAccountRecord> accountRecords = baseMapper.queryCanAccountByBizType(paramNames);
         for (UserAccountRecord accountRecord : accountRecords) {
-            userAccountService.accountChange(accountRecord.getId(), PostStatusEnum.RECORDED);
+            userAccountService.accountChange(accountRecord, PostStatusEnum.RECORDED);
         }
     }
 
@@ -115,7 +115,6 @@ public class UserAccountRecordServiceImpl extends ServiceImpl<UserAccountRecordD
         return detail;
     }
 
-
     @Override
     public IPage<UserAccountRecordVo> appSelectPage(IPage<UserAccountRecordVo> page, UserAccountRecordSearch query) {
         return page.setRecords(baseMapper.appSelectPage(page, query));

+ 26 - 29
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountServiceImpl.java

@@ -211,67 +211,64 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
     }
 
     @Override
-    public HttpResponseResult<UserAccountRecord> accountChange(Long recordId, PostStatusEnum postStatus) {
-        if (null == postStatus || null == recordId
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResponseResult<UserAccountRecord> accountChange(UserAccountRecord record, PostStatusEnum postStatus) {
+        if (null == postStatus || null == record
                 || (!PostStatusEnum.RECORDED.equals(postStatus) && !PostStatusEnum.CANCEL.equals(postStatus))) {
-            throw new BizException("入账状态变更, 参数异常: recordId is {} postStatus is {}", recordId, postStatus.getCode());
-        }
-        UserAccountRecordVo detail = userAccountRecordService.detail(recordId);
-        if (null == detail) {
-            throw new BizException("入账状态变更, 未找到记录信息: recordId is {} postStatus is {}", recordId, postStatus.getCode());
+            throw new BizException("入账状态变更, 参数异常: record is {} postStatus is {}", JSONObject.toJSONString(record), postStatus.getCode());
         }
-        if (!PostStatusEnum.WAIT.equals(detail.getPostStatus())
-                && !PostStatusEnum.FROZEN.equals(detail.getPostStatus())) {
+        if (!PostStatusEnum.WAIT.equals(record.getPostStatus())
+                && !PostStatusEnum.FROZEN.equals(record.getPostStatus())) {
             return HttpResponseResult.succeed();
         }
-        detail.setPostStatus(postStatus);
+        record.setPostStatus(postStatus);
         HttpResponseResult<UserAccountRecord> res = DistributedLock.of(redissonClient)
-                .runIfLockToFunction(CacheNameEnum.LOCK_CHANGE_ACCOUNT.getRedisKey(recordId)
-                        , this::doAccountChange, detail, 10L);
+                .runIfLockToFunction(CacheNameEnum.LOCK_CHANGE_ACCOUNT.getRedisKey(record.getAccountId())
+                        , this::doAccountChange, record, 10L);
         if (null != res) {
             return res;
         } else {
-            throw new BizException("记录变更-账户记录变更失败: param is {}", JSONObject.toJSONString(detail));
+            throw new BizException("记录变更-账户记录变更失败: param is {}", JSONObject.toJSONString(record));
         }
     }
 
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<UserAccountRecord> doAccountChange(UserAccountRecord param) {
         //这里需要双重判断,这一次是锁内判断
-        UserAccountRecordVo detail = userAccountRecordService.detail(param.getId());
-        if (!PostStatusEnum.WAIT.equals(detail.getPostStatus())
-                && !PostStatusEnum.FROZEN.equals(detail.getPostStatus())) {
+        UserAccountRecord old = userAccountRecordService.getById(param.getId());
+        if (!PostStatusEnum.WAIT.equals(old.getPostStatus())
+                && !PostStatusEnum.FROZEN.equals(old.getPostStatus())) {
             return HttpResponseResult.succeed();
         }
-        detail.setPostStatus(detail.getPostStatus());
         //待入账
-        if (PostStatusEnum.WAIT.equals(detail.getPostStatus())) {
-            if (PostStatusEnum.RECORDED.equals(detail.getPostStatus())) {
+        if (PostStatusEnum.WAIT.equals(old.getPostStatus())) {
+            if (PostStatusEnum.RECORDED.equals(param.getPostStatus())) {
                 //正常入账
-                baseMapper.changeAccount(detail.getAccountId(), detail.getTransAmount(), detail.getInOrOut().getCode());
+                baseMapper.changeAccount(old.getAccountId(), old.getTransAmount(), old.getInOrOut().getCode());
             } else if (PostStatusEnum.CANCEL.equals(param.getPostStatus())) {
                 //取消入账
             }
-        } else if (PostStatusEnum.FROZEN.equals(detail.getPostStatus())) {
+        } else if (PostStatusEnum.FROZEN.equals(old.getPostStatus())) {
             if (PostStatusEnum.RECORDED.equals(param.getPostStatus())) {
                 //冻结后正常入账
-                baseMapper.frozenDeductChangeAccount(detail.getAccountId(), detail.getTransAmount(), detail.getInOrOut().getCode());
+                baseMapper.frozenDeductChangeAccount(old.getAccountId(), old.getTransAmount(), old.getInOrOut().getCode());
             } else if (PostStatusEnum.CANCEL.equals(param.getPostStatus())) {
                 //冻结后取消入账
-                baseMapper.frozenBackChangeAccount(detail.getAccountId(), detail.getTransAmount(), detail.getInOrOut().getCode());
+                baseMapper.frozenBackChangeAccount(old.getAccountId(), old.getTransAmount(), old.getInOrOut().getCode());
             }
         }
 
-        UserAccountVo accountVo = detail(detail.getAccountId());
+        UserAccountVo accountVo = detail(old.getAccountId());
         if (accountVo.getAmountTotal().doubleValue() < 0
                 || accountVo.getAmountUsable().doubleValue() < 0 || accountVo.getAmountFrozen().doubleValue() < 0) {
             throw new BizException("账户变更失败");
         }
         //插入账户变更记录
-        detail.setAccountBalance(accountVo.getAmountUsable());
-        detail.setUpdateTime(new Date());
-        userAccountRecordService.updateById(detail);
-        return HttpResponseResult.succeed(detail);
+        old.setPostStatus(param.getPostStatus());
+        old.setAccountBalance(accountVo.getAmountUsable());
+        old.setUpdateTime(new Date());
+        userAccountRecordService.updateById(old);
+        return HttpResponseResult.succeed(old);
     }
 
     @Override
@@ -432,7 +429,7 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
             return;
         }
         for (UserAccountRecord userAccount : list) {
-            this.accountChange(userAccount.getId(),shareDto.getStatus());
+            this.accountChange(userAccount,shareDto.getStatus());
         }
     }
 

+ 8 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderPaymentServiceImpl.java

@@ -23,7 +23,6 @@ import com.yonge.toolset.payment.base.enums.PayChannelEnum;
 import com.yonge.toolset.payment.base.enums.PaymentClientEnum;
 import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
 import com.yonge.toolset.payment.base.model.*;
-import com.yonge.toolset.payment.base.model.callback.ExecutePaymentCallBack;
 import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
 import com.yonge.toolset.payment.core.props.PaymentProperties;
 import com.yonge.toolset.payment.core.service.PaymentClient;
@@ -276,14 +275,19 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
             userOrderService.orderSuccess(detail, data);
         }
 
+        setContractRecord(orderPayment.getPaymentClient(), detail.getUserId());
+    }
+
+    @Override
+    public void setContractRecord(String type, Long userId) {
         //处理支付完成签署协议
         SysUserType userType = SysUserType.STUDENT;
-        if (ClientEnum.TEACHER.getCode().equals(orderPayment.getPaymentClient())) {
+        if (ClientEnum.TEACHER.getCode().equals(type)) {
             userType = SysUserType.TEACHER;
         }
-        Boolean aBoolean = sysUserContractRecordService.checkContractSign(detail.getUserId(), userType, ContractTemplateTypeEnum.BUY_ORDER);
+        Boolean aBoolean = sysUserContractRecordService.checkContractSign(userId, userType, ContractTemplateTypeEnum.BUY_ORDER);
         if (!aBoolean) {
-            SysUser userById = userService.findUserById(detail.getUserId());
+            SysUser userById = userService.findUserById(userId);
             SysUserType finalUserType = userType;
             CompletableFuture.runAsync(() -> sysUserContractRecordService.sign(ContractTemplateTypeEnum.BUY_ORDER, finalUserType, userById));
         }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundServiceImpl.java

@@ -534,7 +534,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
         for (UserAccountRecord userAccountRecord : dataList) {
             if (PostStatusEnum.WAIT.equals(userAccountRecord.getPostStatus())
                     || PostStatusEnum.FROZEN.equals(userAccountRecord.getPostStatus())) {
-                userAccountService.accountChange(userAccountRecord.getId(), PostStatusEnum.CANCEL);
+                userAccountService.accountChange(userAccountRecord, PostStatusEnum.CANCEL);
             }
         }
         //处理平台入账

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

@@ -279,12 +279,12 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
                 res = HttpResponseResult.failed("结算" + authOperaReq.getId() + "失败,失败原因:" + withdraw.getMsg());
 
                 UserAccountRecordVo detail = accountRecordService.detail(null, AccountBizTypeEnum.WITHDRAWAL, Long.parseLong(authOperaReq.getId()));
-                userAccountService.accountChange(detail.getId(), PostStatusEnum.CANCEL);
+                userAccountService.accountChange(detail, PostStatusEnum.CANCEL);
             }
         } else {
             //审核不通过,账户解冻
             UserAccountRecordVo detail = accountRecordService.detail(null, AccountBizTypeEnum.WITHDRAWAL, Long.parseLong(authOperaReq.getId()));
-            userAccountService.accountChange(detail.getId(), PostStatusEnum.CANCEL);
+            userAccountService.accountChange(detail, PostStatusEnum.CANCEL);
 
             //发生审核未通过通知
             unpassSend(build.getUserId(), build.getPhone(), authOperaReq.getReason());
@@ -357,7 +357,7 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
 
             //结算成功,账户解冻,入账户明细
             UserAccountRecordVo recordVo = accountRecordService.detail(null, AccountBizTypeEnum.WITHDRAWAL, detail.getId());
-            userAccountService.accountChange(recordVo.getId(), PostStatusEnum.RECORDED);
+            userAccountService.accountChange(recordVo, PostStatusEnum.RECORDED);
             //发生结算成功通知
             successSend(detail.getUserId(), detail.getPhone());
         } else if ("2".equals(callback.getStatus())) {
@@ -369,7 +369,7 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
 
             //结算失败,账户解冻
             UserAccountRecordVo recordVo = accountRecordService.detail(null, AccountBizTypeEnum.WITHDRAWAL, detail.getId());
-            userAccountService.accountChange(recordVo.getId(), PostStatusEnum.CANCEL);
+            userAccountService.accountChange(recordVo, PostStatusEnum.CANCEL);
 
             //发生结算失败通知
             unpassSend(detail.getUserId(), detail.getPhone(), callback.getErrorMsg());

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseInfoVo.java

@@ -22,6 +22,18 @@ public class LiveCourseInfoVo extends CourseGroupVo implements Serializable {
     @ApiModelProperty(value = "学员列表")
     private List<CourseBuyStudentVo> studentList;
 
+    @ApiModelProperty(value = "true 自己的课,false 其他老师的课程")
+    private Boolean myself;
+
+    public Boolean getMyself() {
+        return myself;
+    }
+
+    public void setMyself(Boolean myself) {
+        this.myself = myself;
+    }
+
+
     @ApiModel(value = "PlanVo", description = "教学计划")
     public static class PlanVo extends CourseTimeEntity implements Serializable {
 

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicAlbumVo.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**
@@ -11,6 +12,11 @@ import io.swagger.annotations.ApiModelProperty;
  */
 public class MusicAlbumVo extends MusicAlbum {
 
+
+    @ApiModelProperty("收藏0:否,1:是")
+    private YesOrNoEnum favorite = YesOrNoEnum.NO;
+
+
     @ApiModelProperty("教材标签")
     private String musicTagNames;
 
@@ -23,6 +29,14 @@ public class MusicAlbumVo extends MusicAlbum {
     @ApiModelProperty("专辑声部")
     private String subjectNames;
 
+    public YesOrNoEnum getFavorite() {
+        return favorite;
+    }
+
+    public void setFavorite(YesOrNoEnum favorite) {
+        this.favorite = favorite;
+    }
+
     public String getSubjectNames() {
         return subjectNames;
     }

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

@@ -33,7 +33,8 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     private Integer expTime;
     @ApiModelProperty("未上课时")
     private Integer unExpTime;
-
+    @ApiModelProperty("会员剩余有效期天数")
+    private Integer membershipDays;
     @ApiModelProperty("专辑数 ")
     private Integer musicAlbumNum;
     @ApiModelProperty("曲谱数 ")
@@ -74,6 +75,14 @@ public class TeacherHomeVo extends Teacher implements Serializable {
     @ApiModelProperty(value = "学生 STUDENT 老师 TEACHER 系统用户 STSTEM")
     private String userType;
 
+    public Integer getMembershipDays() {
+        return membershipDays;
+    }
+
+    public void setMembershipDays(Integer membershipDays) {
+        this.membershipDays = membershipDays;
+    }
+
     @ApiModelProperty(value = "是否会员 0否 1是")
     private YesOrNoEnum isVip;
 

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

@@ -21,7 +21,8 @@ import java.util.List;
 @ApiModel(value = "TeacherVo对象", description = "教师详情")
 public class TeacherVo extends Teacher {
     private static final long serialVersionUID = 1L;
-
+    @ApiModelProperty("会员剩余有效期天数")
+    private Integer membershipDays;
     @ApiModelProperty("头像地址")
     private String avatar;
     @ApiModelProperty("老师昵称")
@@ -57,6 +58,14 @@ public class TeacherVo extends Teacher {
     @ApiModelProperty(value = "是否会员 0否 1是")
     private YesOrNoEnum isVip;
 
+    public Integer getMembershipDays() {
+        return membershipDays;
+    }
+
+    public void setMembershipDays(Integer membershipDays) {
+        this.membershipDays = membershipDays;
+    }
+
     public YesOrNoEnum getIsVip() {
         return isVip;
     }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java

@@ -20,6 +20,17 @@ public class VideoLessonStudentVo extends BaseEntity {
     @ApiModelProperty(value = "true已买,false未买")
     private Boolean alreadyBuy;
 
+    @ApiModelProperty(value = "true 自己的课,false 其他老师的课程")
+    private Boolean myself;
+
+    public Boolean getMyself() {
+        return myself;
+    }
+
+    public void setMyself(Boolean myself) {
+        this.myself = myself;
+    }
+
     public VideoLessonGroupVo getLessonGroup() {
         return lessonGroup;
     }

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wordfilter/WordFilter.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.wordfilter;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Configuration;
 
 import java.util.ArrayList;
@@ -88,6 +89,9 @@ public class WordFilter {
      */
     public boolean include(final String text, final int skip) {
         boolean include = false;
+        if(StringUtils.isEmpty(text)){
+            return include;
+        }
         char[] charset = text.toCharArray();
         for (int i = 0; i < charset.length; i++) {
             FlagIndex fi = getFlagIndex(charset, i, skip);

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

@@ -39,7 +39,7 @@
 				AND menu_id_ = #{menuId}
 			</if>
 			<if test="search != null and search != '' ">
-				AND (sm.name_ like concat('%', #{search} '%') )
+				AND (sm.name_ like concat('%', #{search} '%') or sm.id_  like concat('%', #{search} '%')  )
 			</if>
 		</where>
 		<include refid="global.limit" />
@@ -58,7 +58,7 @@
 				AND sm.menu_id_ = #{menuId}
 			</if>
 			<if test="search != null and search != '' ">
-				AND (sm.name_ like concat('%', #{search} '%') )
+				AND (sm.name_ like concat('%', #{search} '%') or sm.id_  like concat('%', #{search} '%') )
 			</if>
 		</where>
 		<include refid="global.limit" />

+ 3 - 5
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -149,19 +149,17 @@ public class MusicSheetController extends BaseController {
     /**
      * 我的单曲,收藏单曲
      */
-    @GetMapping("/my")
+    @PostMapping("/my")
     @ApiOperation(value = "我的单曲")
-    public HttpResponseResult<PageInfo<MusicSheetVo>> myMusic(QueryInfo query) {
+    public HttpResponseResult<PageInfo<MusicSheetVo>> myMusic(@RequestBody  StudentMusicSheetSearch search) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
-        StudentMusicSheetSearch search = new StudentMusicSheetSearch();
         search.setStudentId(sysUser.getId());
         search.setState(YesOrNoEnum.YES);
         search.setAuditStatus(AuthStatusEnum.PASS);
-        search.setUserType(ClientEnum.TEACHER);
-        IPage<MusicSheetVo> sheetVoIPage = musicSheetService.myMusic(PageUtil.getPage(query),search);
+        IPage<MusicSheetVo> sheetVoIPage = musicSheetService.myMusic(PageUtil.getPage(search),search);
         return succeed(PageUtil.pageInfo(sheetVoIPage));
     }
 

+ 5 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java

@@ -145,6 +145,11 @@ public class VideoLessonGroupController extends BaseController {
         }
 
         VideoLessonStudentVo videoLessonStudentVo = videoLessonGroupService.selectVideoLesson(groupId);
+        if (videoLessonStudentVo.getLessonGroup().getTeacherId().equals(sysUser.getId()))  {
+            videoLessonStudentVo.setMyself(true);
+        } else {
+            videoLessonStudentVo.setMyself(false);
+        }
         if (videoLessonStudentVo.getLessonGroup() != null && sysUser.getId().equals(videoLessonStudentVo.getLessonGroup().getId())) {
             videoLessonStudentVo.setAlreadyBuy(true);
         } else {

+ 5 - 0
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicAlbumController.java

@@ -44,6 +44,11 @@ public class OpenMusicAlbumController extends BaseController {
     @PostMapping(value="/list", consumes="application/json", produces="application/json")
     public HttpResponseResult<PageInfo<MusicAlbumVo>> list(@RequestBody MusicAlbumSearch query) {
 
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser != null && sysUser.getId() != null) {
+            query.setUserId(sysUser.getId());
+        }
+
         // 检查app版本
         query.setAuditVersion(YesOrNoEnum.NO);
         query.setAlbumStatus(YesOrNoEnum.YES);