Jelajahi Sumber

Merge remote-tracking branch 'origin/feature/0721-tenant' into feature/0721-tenant

yuanliang 1 tahun lalu
induk
melakukan
44a4356fdb

+ 4 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/SysUserFeignService.java

@@ -54,6 +54,10 @@ public interface SysUserFeignService {
 										   @RequestParam("clientId")String clientId,
 										   @RequestParam("clientSecret")String clientSecret);
 
+	@PostMapping(value = "user/getTenantByClient")
+	@ApiOperation(value = "获取机构编号")
+	HttpResponseResult<Long> getTenantByClient(@RequestParam("userId")Long userId,@RequestParam("clientId")String clientId);
+
 	@GetMapping(value = "exit")
 	@ApiOperation(value = "退出登录")
 	HttpResponseResult<String> logout();

+ 4 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -68,6 +68,10 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 		return HttpResponseResult.failed("请求失败");
 	}
 
+	public HttpResponseResult<Long> getTenantByClient(Long userId,String clientId){
+		return HttpResponseResult.succeed(-1L);
+	}
+
 	@Override
 	public HttpResponseResult<String> logout() {
 		return HttpResponseResult.failed("请求失败");

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

@@ -408,7 +408,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
     @Override
     public Long getTenantByClient(Long userId, String clientId) {
         // 查询用户机构信息,若没有则返回-1
-        return Optional.ofNullable(sysUserDao.getTenantByClient(userId, clientId)).orElse(-1L);
+        return Optional.ofNullable(sysUserDao.getTenantByClient(userId, clientId.toUpperCase())).orElse(-1L);
     }
 
     /**

+ 5 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -135,6 +135,11 @@ public class UserController extends BaseController {
         return sysUserService.get(userId);
     }
 
+    @PostMapping(value = "/getTenantByClient", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+    public HttpResponseResult<Long> getTenantByClient(Long userId,String clientId) {
+        return HttpResponseResult.succeed(sysUserService.getTenantByClient(userId,clientId));
+    }
+
     @PostMapping(value = "/updateSysUser", consumes = MediaType.APPLICATION_JSON_VALUE)
     public HttpResponseResult<Boolean> updateSysUser(@RequestBody SysUser user) {
         user.setUpdateTime(new Date());

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

@@ -16,6 +16,8 @@ public interface SysUserService{
 
     SysUser findUserById(Long userId);
 
+    Long getTenantByClient(Long userId,String clientId);
+
     /**
      * 实名 + 注册协议
      *

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

@@ -70,6 +70,8 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 
 	@Override
 	public long insert(SysMusicCompareRecord bean) {
+		Long tenant = sysUserService.getTenantByClient(bean.getUserId(), bean.getClientId());
+		bean.setTenantId(tenant);
 		// 保存评测记录
 		long record = super.insert(bean);
 
@@ -239,7 +241,8 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 	@Override
 	@Transactional
 	public void saveMusicCompareData(SysMusicCompareRecord sysMusicCompareRecord) {
-
+		Long tenant = sysUserService.getTenantByClient(sysMusicCompareRecord.getUserId(), sysMusicCompareRecord.getClientId());
+		sysMusicCompareRecord.setTenantId(tenant);
 		int record = sysMusicCompareRecordDao.update(sysMusicCompareRecord);
 
 		if (record > 0) {

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

@@ -61,6 +61,11 @@ public class SysUserServiceImpl implements SysUserService {
     }
 
     @Override
+    public Long getTenantByClient(Long userId, String clientId) {
+        return sysUserFeignService.getTenantByClient(userId,clientId).getData();
+    }
+
+    @Override
     public IdcardInfoExtractor updateUserCard(RealnameAuthReq realNameAuthDto, SysUser sysUser,ClientEnum client) {
         IdcardValidator idcardValidator = new IdcardValidator();
         //验证身份证号合法性

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

@@ -71,6 +71,9 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
     @Autowired
     private TeacherService teacherService;
 
+    @Autowired
+    private MusicSheetService musicSheetService;
+
 
     /**
      * 查询详情
@@ -150,6 +153,22 @@ public class TenantAlbumServiceImpl extends ServiceImpl<TenantAlbumMapper, Tenan
     @Override
     public void orderCreate(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo) {
         log.info("订单创建前检测");
+
+        //检查曲目数量
+        //机构专辑曲目数
+        List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getTenantAlbumId, orderGoodsInfo.getBizId())
+                .eq(TenantAlbumMusic::getDelFlag,false).list();
+        List<Long> musicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+        if(CollectionUtils.isNotEmpty(musicSheetIds)){
+            Integer count = musicSheetService.lambdaQuery().in(MusicSheet::getId, musicSheetIds)
+                    .eq(MusicSheet::getState, true)
+                    .eq(MusicSheet::getDelFlag, false).count();
+            if(count < 1){
+                throw new BizException("当前教程不可购买");
+            }
+        }else {
+            throw new BizException("当前教程不可购买");
+        }
         if (orderGoodsInfo == null) {
             log.error("订单创建前检测,订单商品信息为空");
             throw new BizException("订单商品信息为空");

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

@@ -413,7 +413,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         for (UserOrderVo record : records) {
             if (record.getPaymentVersion().equals(EPaymentVersion.V2)) {
                 // 查询用户下单配置
-                String ret = redisCacheService.getUserOrderConfig(record.getUserId().toString(), record.getOrderType().name());
+                String ret = redisCacheService.getUserOrderConfig(record.getUserId().toString(), record.getOrderNo());
                 if (!StringUtils.isEmpty(ret) ) {
                     UserPaymentOrderWrapper.PaymentOrderReqConfig config = UserPaymentOrderWrapper.PaymentOrderReqConfig
                             .from(ret);
@@ -688,19 +688,20 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         UserOrderVo userOrderVo = baseMapper.getPendingOrder(query);
         if (null != userOrderVo) {
             userOrderVo.setOrderDetailList(orderDetailService.getOrderDetilListByOrderNo(userOrderVo.getOrderNo()));
-        }
 
-        // 查询用户下单配置
-        String ret = redisCacheService.getUserOrderConfig(query.getUserId().toString(), query.getGoodType());
-        if (!StringUtils.isEmpty(ret) && userOrderVo != null) {
-            UserPaymentOrderWrapper.PaymentOrderReqConfig config = UserPaymentOrderWrapper.PaymentOrderReqConfig
-                    .from(ret);
-            UserPaymentOrderWrapper.PaymentConfig build = UserPaymentOrderWrapper.PaymentConfig.builder()
-                    .orderNo(userOrderVo.getOrderNo())
-                    .paymentConfig(config)
-                    .paymentType(userOrderVo.getPaymentVendor())
-                    .build();
-            userOrderVo.setPaymentConfig(build);
+
+            // 查询用户下单配置
+            String ret = redisCacheService.getUserOrderConfig(query.getUserId().toString(), userOrderVo.getOrderNo());
+            if (!StringUtils.isEmpty(ret)) {
+                UserPaymentOrderWrapper.PaymentOrderReqConfig config = UserPaymentOrderWrapper.PaymentOrderReqConfig
+                        .from(ret);
+                UserPaymentOrderWrapper.PaymentConfig build = UserPaymentOrderWrapper.PaymentConfig.builder()
+                        .orderNo(userOrderVo.getOrderNo())
+                        .paymentConfig(config)
+                        .paymentType(userOrderVo.getPaymentVendor())
+                        .build();
+                userOrderVo.setPaymentConfig(build);
+            }
         }
         return HttpResponseResult.succeed(userOrderVo);
     }

+ 17 - 27
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java

@@ -640,18 +640,21 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
             .build();
 
         // 缓存用户下单配置
-        redisCacheService.saveUserOrderConfig(String.valueOf(orderReq.getUserId()), orderReq.getOrderType().getCode(), reqConfig.jsonString());
+        redisCacheService.saveUserOrderConfig(String.valueOf(orderReq.getUserId()), reqConfig.getMerOrderNo(), reqConfig.jsonString());
+
+        UserPaymentOrderWrapper.PaymentConfig build = UserPaymentOrderWrapper.PaymentConfig.builder()
+                .orderNo(orderReq.getOrderNo())
+                .paymentConfig(reqConfig)
+                .status(EPaymentStatus.WAIT_PAY.getCode())
+                .paymentType(paymentServiceContext.getPaymentService(orderReq.getPaymentVendor()).venderName())
+                .build();
 
         // 若订单无需支付,直接完成订单,VIP购买
         if (BigDecimal.ZERO.compareTo(orderReq.getPaymentCashAmount()) == 0) {
             executePaymentSuccess(orderReq, null);
+            build.setStatus(PAID.getCode());
         }
-
-        return UserPaymentOrderWrapper.PaymentConfig.builder()
-            .orderNo(orderReq.getOrderNo())
-            .paymentConfig(reqConfig)
-            .paymentType(paymentServiceContext.getPaymentService(orderReq.getPaymentVendor()).venderName())
-            .build();
+        return build;
     }
 
     /**
@@ -772,7 +775,7 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
             if (StringUtils.isNotBlank(userPaymentOrder.getTransNo())) {
 
                 // 获取缓存配置信息
-                String paymentConfig = redisCacheService.getUserPaymentConfig(reqConfig.getUserId(), userPaymentOrder.getOrderType().getCode());
+                String paymentConfig = redisCacheService.getUserPaymentConfig(reqConfig.getUserId(), userPaymentOrder.getOrderNo());
                 if (StringUtils.isBlank(paymentConfig)) {
 
                     // 支付配置已失效,待支付订单状态调整为已关闭,提醒用户重新购买
@@ -830,6 +833,8 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
                 .build();
             userPaymentOrderService.updateById(update);
 
+            // 缓存用户下单配置
+            redisCacheService.saveUserOrderConfig(String.valueOf(reqConfig.getUserId()), reqConfig.getMerOrderNo(), config.jsonString());
             // 缓存用户支付配置信息
             redisCacheService.saveUserPaymentConfig(reqConfig.getUserId(), userPaymentOrder.getOrderType().getCode(),
                 JSON.toJSONString(paymentReq));
@@ -964,23 +969,6 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
         if (payTypeReq.getClientType().equals(ClientEnum.TENANT)) {
             resp.setPaymentVersion(EPaymentVersion.V2);
         }
-        //检查曲目数量
-        if(payTypeReq.getGoodType() == GoodTypeEnum.TENANT_ALBUM){
-            //机构专辑曲目数
-            List<TenantAlbumMusic> tenantAlbumMusiclist = tenantAlbumMusicService.lambdaQuery().eq(TenantAlbumMusic::getTenantAlbumId, payTypeReq.getBizId())
-                    .eq(TenantAlbumMusic::getDelFlag,false).list();
-            List<Long> musicSheetIds = tenantAlbumMusiclist.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
-            if(CollectionUtils.isNotEmpty(musicSheetIds)){
-                Integer count = musicSheetService.lambdaQuery().in(MusicSheet::getId, musicSheetIds)
-                        .eq(MusicSheet::getState, true)
-                        .eq(MusicSheet::getDelFlag, false).count();
-                if(count < 1){
-                    throw new BizException("当前教程不可购买");
-                }
-            }else {
-                throw new BizException("当前教程不可购买");
-            }
-        }
         // 检测商品是属于老师,老师是否设置的结算给机构
 
         switch (payTypeReq.getGoodType()) {
@@ -1049,8 +1037,10 @@ public class UserPaymentCoreServiceImpl implements UserPaymentCoreService {
             if (Objects.isNull(teacher)) {
                 throw new BizException("推荐人信息不存在");
             }
-            if (teacher.getTenantId() != null && teacher.getTenantId() > 0 && ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) {
-                resp.setPaymentVersion(EPaymentVersion.V2);
+            if (!payTypeReq.getClientType().equals(ClientEnum.TEACHER)) {
+                if (teacher.getTenantId() != null && teacher.getTenantId() > 0 && ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) {
+                    resp.setPaymentVersion(EPaymentVersion.V2);
+                }
             }
         }
         

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/UserPaymentOrderWrapper.java

@@ -528,6 +528,9 @@ public class UserPaymentOrderWrapper {
         @ApiModelProperty("支付类型: adapay, wxpay")
         private String paymentType;
 
+        @ApiModelProperty("支付状态")
+        private String status;
+
         @ApiModelProperty("支付配置参数: 透传")
         private PaymentOrderReqConfig paymentConfig;
     }

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

@@ -70,7 +70,7 @@
               and  t.tenant_album_id_ = #{albumId}
             </if>
         </where>
-
+        order by t.sort_number_ asc
 
     </select>