Browse Source

Merge branch 'master' into online

liweifan 3 years ago
parent
commit
64ab8cf935
31 changed files with 208 additions and 66 deletions
  1. 2 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java
  2. 6 0
      cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java
  3. 6 0
      cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  4. 0 1
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ContractTemplateTypeEnum.java
  5. 1 0
      cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/enums/OrderCacheEnum.java
  6. 24 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsCartItem.java
  7. 59 11
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsCartItemController.java
  8. 2 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsCartItemService.java
  9. 48 6
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java
  10. 7 8
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ContractTemplateController.java
  11. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ContractTemplateDao.java
  12. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysMessage.java
  13. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherAuthEntryRecord.java
  14. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherAuthMusicianRecord.java
  15. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageIconTypeEnum.java
  16. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java
  17. 2 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ContractTemplateService.java
  18. 6 12
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ContractTemplateServiceImpl.java
  19. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  20. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysUserContractRecordServiceImpl.java
  21. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  22. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/HomeUserToDoNum.java
  23. 2 0
      cooleshow-user/user-biz/src/main/resources/config/contracts/latest_contract_template.ftl
  24. 5 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ContractTemplateMapper.xml
  25. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml
  26. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  27. 12 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml
  28. 3 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  29. 3 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserWithdrawalMapper.xml
  30. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  31. 1 0
      toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/util/DistributedLock.java

+ 2 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/dal/dao/SysUserDao.java

@@ -168,4 +168,6 @@ public interface SysUserDao extends BaseDAO<Long, SysUser> {
                             @Param("avatar") String avatar);
 
     List<SysUser> queryHistoryUserById(@Param("id")Long id);
+
+    Integer getUnCompCourseNum(@Param("userId") Long userId);
 }

+ 6 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java

@@ -253,6 +253,12 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
 
     @Override
     public void logoffById(Long id) {
+        //判断用户是否有未结束的课程
+        Integer num = sysUserDao.getUnCompCourseNum(id);
+        if(num>0){
+            throw new BizException("用户有未完成的课程");
+        }
+
         List<SysUser> sysUsers = sysUserDao.queryHistoryUserById(id);
         Integer maxVersion = 0;
         if (!CollectionUtils.isEmpty(sysUsers)) {

+ 6 - 0
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -291,4 +291,10 @@
         where phone_ like CONCAT('%',(select phone_ from sys_user where id_ = #{id} and del_flag_ = 0),'%')
     </select>
 
+    <select id="getUnCompCourseNum" resultType="java.lang.Integer">
+        select count(1) from course_schedule cs
+        where cs.teacher_id_ = #{userId}
+          and status_ in ('NOT_START','ING')
+    </select>
+
 </mapper>

+ 0 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/ContractTemplateTypeEnum.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.yonge.toolset.base.enums.BaseEnum;
 
 public enum ContractTemplateTypeEnum implements BaseEnum<String, ContractTemplateTypeEnum> {
-    REGISTER(ContractTemplateSourceEnum.PLATFORM, "注册"),
     BUY_ORDER(ContractTemplateSourceEnum.PLATFORM, "平台购买商品"),
     WITHDRAW(ContractTemplateSourceEnum.LINGXINPAY, "用户结算");
 

+ 1 - 0
cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/enums/OrderCacheEnum.java

@@ -17,6 +17,7 @@ public enum OrderCacheEnum {
     LOCK_CHANGE_ACCOUNT("账户变更锁"),
     LOCK_REFUND_ORDER_MALL("商城退款锁"),
     LOCK_ORDER_NO_MALL("订单号锁"),
+    LOCK_STOCK_MALL("商品库存锁"),
 
     ;
     /***

+ 24 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsCartItem.java

@@ -59,6 +59,30 @@ public class OmsCartItem implements Serializable {
     @ApiModelProperty("是否隐藏(1:是,0:否)")
     private Integer hidden;
 
+    @ApiModelProperty(value = "库存")
+    private Integer stock = 0;
+
+
+    @ApiModelProperty(value = "锁定库存")
+    private Integer lockStock = 0 ;
+
+
+    public Integer getStock() {
+        return stock;
+    }
+
+    public void setStock(Integer stock) {
+        this.stock = stock;
+    }
+
+    public Integer getLockStock() {
+        return lockStock;
+    }
+
+    public void setLockStock(Integer lockStock) {
+        this.lockStock = lockStock;
+    }
+
     private static final long serialVersionUID = 1L;
 
     public Integer getHidden() {

+ 59 - 11
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsCartItemController.java

@@ -1,19 +1,31 @@
 package com.yonge.cooleshow.portal.controller;
 
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
+import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
 import com.yonge.cooleshow.mbg.model.OmsCartItem;
 import com.yonge.cooleshow.portal.domain.CartProduct;
 import com.yonge.cooleshow.portal.domain.CartPromotionItem;
+import com.yonge.cooleshow.portal.dto.OrderPayRes;
 import com.yonge.cooleshow.portal.service.OmsCartItemService;
 import com.yonge.cooleshow.portal.service.UmsMemberService;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
+import com.yonge.toolset.payment.util.DistributedLock;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import static com.yonge.cooleshow.mall.common.api.CommonResult.failed;
+import static com.yonge.cooleshow.mall.common.enums.OrderCacheEnum.LOCK_STOCK_MALL;
 
 /**
  * 购物车管理Controller
@@ -28,15 +40,34 @@ public class OmsCartItemController {
     @Autowired
     private UmsMemberService memberService;
 
+
+    @Autowired
+    private RedissonClient redissonClient;
+
     @ApiOperation("添加商品到购物车")
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     @ResponseBody
     public CommonResult<OmsCartItem> add(@RequestBody OmsCartItem cartItem) {
-        OmsCartItem omsCartItem = cartItemService.add(cartItem);
-        if (omsCartItem != null) {
-            return CommonResult.success(omsCartItem);
+
+        RLock lock = redissonClient.getLock(OrderCacheEnum.LOCK_STOCK_MALL.getRedisKey(cartItem.getProductSkuId()));
+        try {
+            boolean b = lock.tryLock(60, TimeUnit.SECONDS);
+            if (b) {
+                OmsCartItem omsCartItem = cartItemService.add(cartItem);
+                return CommonResult.success(omsCartItem);
+            }
+            return failed("请求超时");
+        } catch (BizException e) {
+            return failed(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return failed("请求超时");
+        } finally {
+            if (lock.getHoldCount()>0) {
+                lock.unlock();
+            }
         }
-        return CommonResult.failed();
+
     }
 
     @ApiOperation("获取当前会员的购物车列表")
@@ -62,11 +93,28 @@ public class OmsCartItemController {
     @ResponseBody
     public CommonResult updateQuantity(@RequestParam Long id,
                                        @RequestParam Integer quantity) {
-        int count = cartItemService.updateQuantity(id, memberService.getCurrentMember().getId(), quantity);
-        if (count > 0) {
-            return CommonResult.success(count);
+
+        OmsCartItem omsCartItem = cartItemService.get(id);
+
+        RLock lock = redissonClient.getLock(OrderCacheEnum.LOCK_STOCK_MALL.getRedisKey(omsCartItem.getProductSkuId()));
+        try {
+            boolean b = lock.tryLock(60, TimeUnit.SECONDS);
+            if (b) {
+                int i = cartItemService.updateQuantity(id, memberService.getCurrentMember().getId(), quantity);
+                return CommonResult.success(i);
+            }
+            return failed("请求超时");
+        } catch (BizException e) {
+            return failed(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return failed("请求超时");
+        } finally {
+            if (lock.getHoldCount()>0) {
+                lock.unlock();
+            }
         }
-        return CommonResult.failed();
+
     }
 
     @ApiOperation("获取购物车中指定商品的规格,用于重选规格")
@@ -85,7 +133,7 @@ public class OmsCartItemController {
         if (count > 0) {
             return CommonResult.success(count);
         }
-        return CommonResult.failed();
+        return failed();
     }
 
     @ApiOperation("删除购物车中的指定商品")
@@ -97,7 +145,7 @@ public class OmsCartItemController {
         if (count > 0) {
             return CommonResult.success(count);
         }
-        return CommonResult.failed();
+        return failed();
     }
 
     @ApiOperation("清空当前会员的购物车")
@@ -108,6 +156,6 @@ public class OmsCartItemController {
         if (count > 0) {
             return CommonResult.success(count);
         }
-        return CommonResult.failed();
+        return failed();
     }
 }

+ 2 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsCartItemService.java

@@ -54,4 +54,6 @@ public interface OmsCartItemService {
      * 清空购物车
      */
     int clear(Long memberId);
+
+    OmsCartItem get(Long id);
 }

+ 48 - 6
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java

@@ -20,6 +20,7 @@ import org.springframework.util.StringUtils;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -55,6 +56,11 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
         } else if (cartItem.getHidden() == 1) {
             existCartItem = null;
         }
+
+        PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(cartItem.getProductSkuId());
+        if (pmsSkuStock == null) {
+            throw new BizException("商品规格不存在");
+        }
         if (existCartItem == null) {
             PmsProduct pmsProduct = pmsProductMapper.selectByPrimaryKey(cartItem.getProductId());
 
@@ -69,10 +75,8 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             cartItem.setProductBrand(pmsProduct.getName());
             cartItem.setProductSn(pmsProduct.getProductSn());
             if (cartItem.getProductSkuId() != null) {
-                PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(cartItem.getProductSkuId());
-
-                if (pmsSkuStock == null) {
-                    throw new BizException("商品规格不存在");
+                if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < cartItem.getQuantity()) {
+                    throw new BizException("库存不足");
                 }
                 cartItem.setProductSkuCode(pmsSkuStock.getSkuCode());
                 cartItem.setProductAttr(pmsSkuStock.getSpData());
@@ -83,6 +87,9 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             cartItemMapper.insert(cartItem);
             return cartItem;
         } else {
+            if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < existCartItem.getQuantity() + cartItem.getQuantity()) {
+                throw new BizException("库存不足");
+            }
             cartItem.setModifyDate(new Date());
             existCartItem.setQuantity(existCartItem.getQuantity() + cartItem.getQuantity());
             cartItemMapper.updateByPrimaryKey(existCartItem);
@@ -111,7 +118,24 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
     public List<OmsCartItem> list(Long memberId) {
         OmsCartItemExample example = new OmsCartItemExample();
         example.createCriteria().andDeleteStatusEqualTo(0).andMemberIdEqualTo(memberId).andHiddenEqualTo(0);
-        return cartItemMapper.selectByExample(example);
+        List<OmsCartItem> omsCartItems = cartItemMapper.selectByExample(example);
+        if (CollectionUtils.isEmpty(omsCartItems)) {
+            return omsCartItems;
+        }
+        List<Long> skuIds = omsCartItems.stream().map(OmsCartItem::getProductSkuId).collect(Collectors.toList());
+        PmsSkuStockExample skuExample = new PmsSkuStockExample();
+        skuExample.createCriteria().andIdIn(skuIds);
+        List<PmsSkuStock> pmsSkuStocks = skuStockMapper.selectByExample(skuExample);
+        Map<Long, List<PmsSkuStock>> collect =
+                pmsSkuStocks.stream().collect(Collectors.groupingBy(PmsSkuStock::getId));
+        for (OmsCartItem omsCartItem : omsCartItems) {
+            List<PmsSkuStock> pmsSkuStocks1 = collect.get(omsCartItem.getProductSkuId());
+            if (!CollectionUtils.isEmpty(pmsSkuStocks1)) {
+                omsCartItem.setStock(pmsSkuStocks1.get(0).getStock());
+                omsCartItem.setLockStock(pmsSkuStocks1.get(0).getLockStock());
+            }
+        }
+        return omsCartItems;
     }
 
     @Override
@@ -138,10 +162,23 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
     public int updateQuantity(Long id, Long memberId, Integer quantity) {
         OmsCartItem cartItem = new OmsCartItem();
         cartItem.setQuantity(quantity);
+        OmsCartItem omsCartItem = cartItemMapper.selectByPrimaryKey(id);
+
+        if (omsCartItem.getProductSkuId() == null) {
+            throw new BizException("商品已售空");
+        }
+
+        PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(omsCartItem.getProductSkuId());
+
+        if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < quantity) {
+            return pmsSkuStock.getStock() - pmsSkuStock.getLockStock();
+        }
+
         OmsCartItemExample example = new OmsCartItemExample();
         example.createCriteria().andDeleteStatusEqualTo(0)
                 .andIdEqualTo(id).andMemberIdEqualTo(memberId);
-        return cartItemMapper.updateByExampleSelective(cartItem, example);
+        cartItemMapper.updateByExampleSelective(cartItem, example);
+        return pmsSkuStock.getStock() - pmsSkuStock.getLockStock();
     }
 
     @Override
@@ -179,4 +216,9 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
         example.createCriteria().andMemberIdEqualTo(memberId);
         return cartItemMapper.updateByExampleSelective(record,example);
     }
+
+    @Override
+    public OmsCartItem get(Long id) {
+        return cartItemMapper.selectByPrimaryKey(id);
+    }
 }

+ 7 - 8
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ContractTemplateController.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.admin.controller;
 import com.alibaba.cloud.commons.lang.StringUtils;
 import com.yonge.cooleshow.common.enums.ContractTemplateSourceEnum;
 import com.yonge.cooleshow.common.enums.ContractTemplateTypeEnum;
+import com.yonge.toolset.base.util.StringUtil;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -64,15 +65,14 @@ public class ContractTemplateController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('contractTemplate/add')")
 	public HttpResponseResult<Object> add(@RequestBody ContractTemplate contractTemplate) {
 		contractTemplate.setSource(ContractTemplateSourceEnum.PLATFORM.getCode());
+		if(StringUtil.isEmpty(contractTemplate.getType())){
+			contractTemplate.setType(ContractTemplateTypeEnum.BUY_ORDER.getCode());
+		}
 
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(sysUser == null || sysUser.getId() == null){
         	return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        
-        if(StringUtils.isBlank(contractTemplate.getType())){
-        	contractTemplate.setType("BUY_ORDER");
-        }
 
 		contractTemplate.setStatus(false);
 		contractTemplate.setModifyBy(sysUser.getId());
@@ -84,10 +84,9 @@ public class ContractTemplateController extends BaseController {
 	@PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 	@PreAuthorize("@pcs.hasPermissions('contractTemplate/update')")
 	public HttpResponseResult<Object> update(@RequestBody ContractTemplate contractTemplate) {
-        
-        if(StringUtils.isBlank(contractTemplate.getType())){
-        	contractTemplate.setType("BUY_ORDER");
-        }
+		if(StringUtil.isEmpty(contractTemplate.getType())){
+			contractTemplate.setType(ContractTemplateTypeEnum.BUY_ORDER.getCode());
+		}
 		contractTemplateService.update(contractTemplate);
 		return succeed();
 	}

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ContractTemplateDao.java

@@ -13,6 +13,8 @@ public interface ContractTemplateDao extends BaseDAO<Integer, ContractTemplate>
 
     List<ContractTemplateDto> queryPageList(Map<String, Object> params);
 
+    Integer queryMaxVersion(@Param("contractSource") String contractSource, @Param("type") String type);
+
     ContractTemplate queryLatestContractTemplate(@Param("contractSource") String contractSource, @Param("type") String type);
 
     int disableContract(@Param("type") String type);

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

@@ -19,7 +19,7 @@ public class SysMessage extends BaseEntity {
 	@ApiModelProperty("消息配置表id")
 	private Long messageConfigId;
 
-	@ApiModelProperty("TEACHER_AUTH:老师认证,MUSICIAN_AUTH:音乐人认证,PRACTICE:陪练课,LIVE:直播课,VIDEO:视频课,MUSIC_SHEET:乐谱," +
+	@ApiModelProperty("TEACHER_AUTH:达人认证,MUSICIAN_AUTH:音乐人认证,PRACTICE:陪练课,LIVE:直播课,VIDEO:视频课,MUSIC_SHEET:乐谱," +
 			"COURSE:课程,INCOME:收入,HOMEWORK:作业,EVALUATE:评价,GROUP_CHAT:群聊,VIP:会员,NOTICE:公告")
 	private String subType;
 	

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

@@ -78,7 +78,7 @@ public class TeacherAuthEntryRecord implements Serializable {
 	@TableField(value = "teacher_certificate_")
     private String teacherCertificate;
 
-    @ApiModelProperty("老师认证审核状态 UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
+    @ApiModelProperty("达人认证审核状态 UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
 	@TableField(value = "teacher_auth_status_")
     private AuthStatusEnum teacherAuthStatus;
     /** 

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

@@ -33,7 +33,7 @@ public class TeacherAuthMusicianRecord implements Serializable {
 	@TableField(value = "user_id_")
     private Long userId;
 
-    @ApiModelProperty("老师认证审核状态 UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
+    @ApiModelProperty("达人认证审核状态 UNPAALY、未申请 DOING、审核中 PASS、通过 UNPASS、不通过")
 	@TableField(value = "teacher_auth_status_")
     private AuthStatusEnum teacherAuthStatus;
     /** 

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

@@ -10,7 +10,7 @@ import com.yonge.toolset.base.enums.BaseEnum;
  * @date 2022-05-09
  */
 public enum MessageIconTypeEnum implements BaseEnum<String, MessageIconTypeEnum> {
-    TEACHER_AUTH("老师认证"),
+    TEACHER_AUTH("达人认证"),
     MUSICIAN_AUTH("音乐人认证"),
     PRACTICE("陪练课"),
     LIVE("直播课"),

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

@@ -26,11 +26,11 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     TEACHER_REVIEW_HOMEWORK("老师点评作业"),
     STUDENT_SUBMIT_HOMEWORK("学员提交作业"),
 
-    TEACHER_AUTH_PASS("老师认证通过"),
-    SMS_TEACHER_AUTH_PASS("老师认证通过(短信)"),
+    TEACHER_AUTH_PASS("达人认证通过"),
+    SMS_TEACHER_AUTH_PASS("达人认证通过(短信)"),
 
-    TEACHER_AUTH_FAIL("老师认证失败"),
-    SMS_TEACHER_AUTH_FAIL("老师认证失败(短信)"),
+    TEACHER_AUTH_FAIL("达人认证失败"),
+    SMS_TEACHER_AUTH_FAIL("达人认证失败(短信)"),
 
     MUSICIAN_AUTH_PASS("音乐人认证通过"),
     SMS_MUSICIAN_AUTH_PASS("音乐人认证通过(短信)"),

+ 2 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ContractTemplateService.java

@@ -25,13 +25,7 @@ public interface ContractTemplateService extends BaseService<Integer, ContractTe
 	boolean enableContract(Integer id, Long userId);
 
 	/**
-	 * 更新协议版本
-	 * @return
-	 */
-	boolean updateContractVersion();
-	
-	/**
-	 * 查询最新协议模板
+	 * 查询最新启用的协议模板
 	 * @param contractType
 	 * @return
 	 */
@@ -39,6 +33,6 @@ public interface ContractTemplateService extends BaseService<Integer, ContractTe
 	
 	boolean createContractTemplate(ContractTemplate contractTemplate);
 	
-	boolean updateContractTempalte(ContractTemplate contractTemplate);
+	//boolean updateContractTempalte(ContractTemplate contractTemplate);
 
 }

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

@@ -76,7 +76,6 @@ public class ContractTemplateServiceImpl extends BaseServiceImpl<Integer, Contra
                 if (contractTemplate.getStatus()) {
                     return true;
                 }
-                contractTemplate.setVersion(contractTemplate.getVersion() == null ? 1 : contractTemplate.getVersion() + 1);
                 //关闭类型下的所有协议,只启用当前这个协议
                 contractTemplateDao.disableContract(contractTemplate.getType());
 
@@ -95,12 +94,6 @@ public class ContractTemplateServiceImpl extends BaseServiceImpl<Integer, Contra
     }
 
     @Override
-    public boolean updateContractVersion() {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    @Override
     public ContractTemplate queryLatestContractTemplate(ContractTemplateTypeEnum contractType) {
         String code = contractType.getSource().getCode();
         ContractTemplate ContractTemplate = contractTemplateDao.queryLatestContractTemplate(
@@ -114,12 +107,13 @@ public class ContractTemplateServiceImpl extends BaseServiceImpl<Integer, Contra
         RLock lock = redissonClient.getLock(LOCK_NAME);
         try {
             if (lock.tryLock(10, 10, TimeUnit.SECONDS)) {
-                ContractTemplate latestContractTemplate = contractTemplateDao.queryLatestContractTemplate(contractTemplate.getSource(), contractTemplate.getType());
-                if(null == latestContractTemplate || null == latestContractTemplate.getVersion()){
+                Integer maxVersion = contractTemplateDao.queryMaxVersion(contractTemplate.getSource(), contractTemplate.getType());
+                if(null == maxVersion){
                     contractTemplate.setVersion(1);
                 }else{
-                    contractTemplate.setVersion(latestContractTemplate.getVersion() + 1);
+                    contractTemplate.setVersion(maxVersion + 1);
                 }
+
                 Date date = new Date();
                 contractTemplate.setCreateTime(date);
                 contractTemplate.setUpdateTime(date);
@@ -135,7 +129,7 @@ public class ContractTemplateServiceImpl extends BaseServiceImpl<Integer, Contra
         return false;
     }
 
-    @Override
+    /*@Override
     @Transactional
     public boolean updateContractTempalte(ContractTemplate contractTemplate) {
         RLock lock = redissonClient.getLock(LOCK_NAME);
@@ -159,6 +153,6 @@ public class ContractTemplateServiceImpl extends BaseServiceImpl<Integer, Contra
             lock.unlock();
         }
         return false;
-    }
+    }*/
 
 }

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

@@ -2252,6 +2252,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             payment.setCourseId(courseId);
             payment.setCourseGroupId(groupId);
             payment.setCourseType(CourseScheduleEnum.PIANO_ROOM_CLASS.getCode());
+            payment.setCreatedTime(new Date());
+            payment.setUpdatedTime(new Date());
             payments.add(payment);
         }
 

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

@@ -80,7 +80,7 @@ public class SysUserContractRecordServiceImpl extends ServiceImpl<SysUserContrac
         if (null == contractRecord) {
             ContractTemplate contractTemplate = contractTemplateService.queryLatestContractTemplate(contractType);
             if (null == contractTemplate) {
-                return HttpResponseResult.failed(HttpStatus.FORBIDDEN, "未找到协议");
+                return HttpResponseResult.failed("未找到协议");
             }
             contractRecord = new SysUserContractRecord();
             Long contractNo = idGeneratorService.generatorId("contractNo");

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

@@ -265,6 +265,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             }
         } else {
             teacher.setUpdateTime(new Date());
+            teacher = getTeacherDetil(teacher, teacherSubmitReq);
             baseMapper.updateById(teacher);
 
             if (null == teacher.getEntryAuthDate() || null == teacher.getMusicianDate()) {

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/HomeUserToDoNum.java

@@ -9,7 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
  */
 @ApiModel(value = "HomeUserToDoNum", description = "后台首页待办事项统计查询对象")
 public class HomeUserToDoNum {
-    @ApiModelProperty("待审核老师认证数 ")
+    @ApiModelProperty("待审核达人认证数 ")
     private Integer entryNum;
     @ApiModelProperty("待审核音乐认证人数 ")
     private Integer musicianNum;

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/contracts/latest_contract_template.ftl

@@ -103,7 +103,9 @@
                 </#if>-->
             </div>
         </div>
+<#--
         <div>(本协议中“乙方“指学员及家长;”乙方学员“指购买甲方产品或服务的学员;”乙方家长“仅指乙方学员的法定监护人。)</div>
+-->
 
         <#--<p class="underline bold">重要须知:在注册或购买使用甲方提供的产品、服务之前,请您务必审慎阅读、充分理解本使用协议各条款内容, 特别是免除或者限制甲方责任的条款、对您权利进行限制的条款、约定争议解决方式和司法管辖的条款等。 限制、免责条款或者其他涉及您重大权益的条款可能以加粗、加下划线等形式提示您重点注意。您注册或购买使用甲方提供的产品和服务,均视为您同意本使用协议,以及同意接受本使用协议的约束。</p>
         <p class="underline bold">如无特别说明 ,下列术语在本协议中的定义为:管乐迷平台(下称“本平台”),即管乐迷APP;(下称“本平台”)指由甲方提供的器乐教学全流程辅助系统,包括媒体资料,教师点评,课前、课中、课后管理等服务;乐器练习云教练 (下称“本系统”),指由甲方提供和维护的器乐辅助练习系统;具体以该系统实际提供为准。该系统将根据实际需要进行调整和增减,乙方使用平台时需遵守本服务协议。</p>-->

+ 5 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ContractTemplateMapper.xml

@@ -162,6 +162,11 @@
 		</where>
 	</select>
 
+	<select id="queryMaxVersion" resultType="java.lang.Integer">
+		SELECT max(a.version_) FROM contract_template a
+		where a.source_ = #{contractSource} and a.type_ = #{type}
+	</select>
+
 	<select id="queryLatestContractTemplate" resultMap="BaseResultMap">
 		SELECT a.* FROM (
 			select

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

@@ -122,6 +122,7 @@
                        left join user_order_detail as d on d.order_no_ = x.order_no_
               where x.user_id_ = #{param.studentId}) as y on b.id_ = y.course_group_id_
         <where>
+            u.del_flag_ = 0
             <if test="param.teacherId != null">
                 and b.teacher_id_ = #{param.teacherId}
             </if>

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

@@ -591,7 +591,7 @@
         FROM course_group g
         LEFT JOIN sys_user u ON g.teacher_id_=u.id_
         LEFT JOIN subject s ON g.subject_id_=s.id_
-        WHERE type_='LIVE' and g.status_ = 'APPLY' and #{appAuditVersion} = g.audit_version_
+        WHERE u.del_flag_ = 0 and type_='LIVE' and g.status_ = 'APPLY' and #{appAuditVersion} = g.audit_version_
         ORDER BY courseStartTime DESC LIMIT 4
     </select>
     <select id="selectVideo" resultType="com.yonge.cooleshow.biz.dal.vo.StudentHomePage$Video">
@@ -613,7 +613,7 @@
         LEFT JOIN sys_user u ON g.teacher_id_=u.id_
         LEFT JOIN `subject` s ON g.lesson_subject_=s.id_
         LEFT JOIN (SELECT video_lesson_group_id_ ,COUNT(1) AS count_ FROM video_lesson_purchase_record WHERE order_status_='PAID' GROUP BY video_lesson_group_id_) r ON g.id_= r.video_lesson_group_id_
-        WHERE g.audit_status_='PASS' and #{appAuditVersion} = g.audit_version_
+        WHERE u.del_flag_ = 0 and g.audit_status_='PASS' and #{appAuditVersion} = g.audit_version_
         ORDER BY g.create_time_ DESC LIMIT 4
     </select>
     <select id="selectRecentCourses" resultType="com.yonge.cooleshow.biz.dal.vo.StudentHomePage$RecentCourses">

+ 12 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml

@@ -4,11 +4,19 @@
 <mapper namespace="com.yonge.cooleshow.biz.dal.dao.HomeDao">
 	<select id="getUserToDoNum" resultType="com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum">
 		select
-			(select count(1) from teacher_auth_entry_record where teacher_auth_status_ = 'DOING') as entryNum,
-			(select count(1) from teacher_auth_musician_record where teacher_auth_status_ = 'DOING') as musicianNum,
-        	(select count(1) from music_sheet where del_flag_ = 0 and audit_status_ = 'DOING') as musicNum,
+			(select count(1) from teacher_auth_entry_record a
+				left join sys_user u on a.user_id_ = u.id_
+			 	where u.del_flag_ =0 and a.teacher_auth_status_ = 'DOING') as entryNum,
+			(select count(1) from teacher_auth_musician_record a
+				left join sys_user u on a.user_id_ = u.id_
+			 	where u.del_flag_ =0 and a.teacher_auth_status_ = 'DOING') as musicianNum,
+        	(select count(1) from music_sheet a
+				left join sys_user u on a.user_id_ = u.id_
+			 	where u.del_flag_ =0 and a.del_flag_ = 0 and a.audit_status_ = 'DOING') as musicNum,
         	(select count(1) from video_lesson_auth_record where audit_status_ = 'DOING') as videoCourseNum,
-			(select count(1) from teacher_style_video where del_flag_ = 0 and auth_status_ = 'DOING') as styleNum
+			(select count(1) from teacher_style_video a
+				left join sys_user u on a.user_id_ = u.id_
+			 	where u.del_flag_ =0 and a.del_flag_ = 0 and a.auth_status_ = 'DOING') as styleNum
         from dual
 	</select>
 

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

@@ -451,7 +451,7 @@
         ,ms.play_speed_ as playSpeed
         ,ms.music_price_ as musicPrice
         ,ms.create_time_ as createTime
-        ,if(msar.audit_state_ is null,'DOING',msar.audit_state_) as auditStatus
+        ,if(msar.audit_state_ is null,ms.audit_status_,msar.audit_state_) as auditStatus
         ,su2.username_ as auditName
         from music_sheet ms
         left join sys_user su on su.id_ = ms.create_by_
@@ -459,7 +459,8 @@
         left join sys_user su2 on msar.verify_user_id_ = su2.id_
         <where>
             su.del_flag_ = 0 and
-            ms.source_type_  = 'TEACHER'
+            ms.source_type_  = 'TEACHER' and
+            msar.id_ is not null
             <if test="param.idAndName != null and param.idAndName != ''">
                 and (su.id_ like concat('%',#{param.idAndName} ,'%')
                 or su.username_ like concat('%',#{param.idAndName},'%')

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

@@ -98,8 +98,9 @@
             <if test="null != param.search and '' != param.search">
                 AND (
                     t.user_id_ LIKE CONCAT('%', #{param.search}, '%') or
+                    u.phone_ LIKE CONCAT('%', #{param.search}, '%') or
                     u.username_ LIKE CONCAT('%', #{param.search}, '%') or
-                    u.phone_ LIKE CONCAT('%', #{param.search}, '%')
+                    u.real_name_ LIKE CONCAT('%', #{param.search}, '%')
                 )
             </if>
             <if test="null != param.username and '' != param.username">
@@ -121,7 +122,7 @@
                 )
             </if>
             <if test="null != param.transNo and '' != param.transNo">
-                AND t.trans_no_ LIKE CONCAT('%', #{transNo}, '%')
+                AND t.trans_no_ LIKE CONCAT('%', #{param.transNo}, '%')
             </if>
             <if test="param.startTime !=null">
                 <![CDATA[AND t.create_time_ >= #{param.startTime} ]]>

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

@@ -248,6 +248,7 @@
 		LEFT JOIN sys_user u ON g.teacher_id_=u.id_
 		LEFT JOIN `subject` s ON g.lesson_subject_ = s.id_
 		<where>
+		    u.del_flag_ = 0
 			<if test="null != param.search and '' != param.search">
 				AND (
 				u.username_ LIKE CONCAT('%', #{param.search}, '%') OR

+ 1 - 0
toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/util/DistributedLock.java

@@ -195,4 +195,5 @@ public class DistributedLock {
             unlock(lock);
         }
     }
+
 }