Browse Source

Merge remote-tracking branch 'origin/master'

hgw 3 years ago
parent
commit
816f584e2a

+ 1 - 0
audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java

@@ -126,6 +126,7 @@ public class AudioCompareHandler implements MessageHandler {
 			channelContext.setHandlerSwitch(false);
 
 			channelContext.getSongMusicXmlMap().put(musicXmlBasicInfo.getExamSongId(), musicXmlBasicInfo);
+
 			channelContext.init(musicXmlBasicInfo.getPlatform(), musicXmlBasicInfo.getHeardLevel(), musicXmlBasicInfo.getSubjectId(),
 					musicXmlBasicInfo.getBeatLength(), audioFormat.getSampleRate(), bufferSize / 2);
 			channelContext.setUser(user);

+ 10 - 6
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java

@@ -91,14 +91,17 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
             if (StringUtils.isNotBlank(deviceNum)) {
                 sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum);
             }
-
-            if (!userInfo.getSysUser().getUserType().contains(clientId)
-                    || (StringUtils.isNotEmpty(loginUserType) && !userInfo.getSysUser().getUserType().contains(loginUserType))) {
-                if (isRegister == false || StringUtils.equals("SYSTEM", clientId)) {
+            if (!userInfo.getSysUser().getUserType().contains(clientId)) {
+                if(StringUtils.equals("SYSTEM", clientId)){
                     throw new LockedException("用户不存在");
-                } else {
-                    user.setUpdateTime(new Date());
+                }
+                if(isRegister == false
+                        && (StringUtils.isEmpty(loginUserType) || !(userInfo.getSysUser().getUserType().contains(loginUserType)))){
+                    throw new LockedException("用户不存在");
+                }
 
+                if(isRegister == true){
+                    user.setUpdateTime(new Date());
                     if (StringUtils.equalsIgnoreCase(loginUserType, "TEACHER")) {
                         user.setUserType(user.getUserType() + "," + loginUserType);
                         sysUserService.saveTeacher(user);
@@ -116,6 +119,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
                     }
                     sysUserService.update(user);
                 }
+
             }
         }
 

+ 1 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/service/DefaultUserDetailsService.java

@@ -39,7 +39,7 @@ public class DefaultUserDetailsService implements UserDetailsService {
             return null;
         }
 
-        SysUserInfo userInfo = null;
+        SysUserInfo userInfo;
 
         if (StringUtils.startsWith(username, SecurityConstants.PHONE_PRINCIPAL_PREFIX)) {
             userInfo = sysUserService.queryUserInfoByPhone(StringUtils.substringAfter(username, SecurityConstants.PHONE_PRINCIPAL_PREFIX));

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

@@ -5,8 +5,7 @@ import com.yonge.toolset.base.enums.BaseEnum;
 
 public enum ContractTemplateTypeEnum implements BaseEnum<String, ContractTemplateTypeEnum> {
     REGISTER(ContractTemplateSourceEnum.PLATFORM, "注册"),
-    COURSES(ContractTemplateSourceEnum.PLATFORM, "课程购买"),
-    PRODUCT(ContractTemplateSourceEnum.PLATFORM, "产品"),
+    BUY_ORDER(ContractTemplateSourceEnum.PLATFORM, "平台购买商品"),
     WITHDRAW(ContractTemplateSourceEnum.LINGXINPAY, "用户结算");
 
     @EnumValue

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysUserContractRecordService.java

@@ -2,6 +2,7 @@ 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.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.SysUserContractRecordDao;
 import com.yonge.cooleshow.biz.dal.dto.search.SysUserContractRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
@@ -45,5 +46,7 @@ public interface SysUserContractRecordService extends IService<SysUserContractRe
      * @return
      */
     SysUserContractRecord queryLatestContract(Long userId, SysUserType userType, ContractTemplateTypeEnum contractType);
+
+    HttpResponseResult<Boolean> sign(ContractTemplateTypeEnum contractType, SysUserType userType, SysUser user);
 }
 

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

@@ -2,16 +2,24 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.SysUserContractRecordDao;
 import com.yonge.cooleshow.biz.dal.dto.search.SysUserContractRecordSearch;
+import com.yonge.cooleshow.biz.dal.entity.ContractTemplate;
 import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord;
+import com.yonge.cooleshow.biz.dal.enums.DealStatusEnum;
+import com.yonge.cooleshow.biz.dal.sdk.WithdrawSdk;
+import com.yonge.cooleshow.biz.dal.service.ContractService;
 import com.yonge.cooleshow.biz.dal.service.ContractTemplateService;
 import com.yonge.cooleshow.biz.dal.service.SysUserContractRecordService;
 import com.yonge.cooleshow.biz.dal.vo.SysUserContractRecordVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.ContractTemplateSourceEnum;
 import com.yonge.cooleshow.common.enums.ContractTemplateTypeEnum;
 import com.yonge.cooleshow.common.enums.SysUserType;
+import com.yonge.cooleshow.common.service.IdGeneratorService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
 import org.slf4j.Logger;
@@ -30,6 +38,12 @@ public class SysUserContractRecordServiceImpl extends ServiceImpl<SysUserContrac
 
     @Autowired
     private ContractTemplateService contractTemplateService;
+    @Autowired
+    private WithdrawSdk withdrawSdk;
+    @Autowired
+    private IdGeneratorService idGeneratorService;
+    @Autowired
+    private ContractService contractService;
 
     @Override
     public SysUserContractRecordDao getDao() {
@@ -56,5 +70,44 @@ public class SysUserContractRecordServiceImpl extends ServiceImpl<SysUserContrac
         return getDao().queryLatestContract(userId, userType.getCode(), contractType.getSource().getCode(), contractType.getCode());
     }
 
+    @Override
+    public HttpResponseResult<Boolean> sign(ContractTemplateTypeEnum contractType, SysUserType userType, SysUser user) {
+        //是否签署标识,签署了才入库
+        boolean flag = false;
+        SysUserContractRecord contractRecord = queryLatestContract(user.getId(), userType, contractType);
+
+        //未签署协议
+        if (null == contractRecord) {
+            ContractTemplate contractTemplate = contractTemplateService.queryLatestContractTemplate(contractType);
+            if (null == contractTemplate) {
+                return HttpResponseResult.failed(HttpStatus.FORBIDDEN, "未找到协议");
+            }
+            contractRecord = new SysUserContractRecord();
+            Long contractNo = idGeneratorService.generatorId("contractNo");
+            contractRecord.setContractNo(contractNo.toString());
+            contractRecord.setUserId(user.getId());
+            contractRecord.setContractId(contractTemplate.getId());
+            contractRecord.setUserType(userType.getCode());
+
+            if (ContractTemplateSourceEnum.LINGXINPAY.getCode().equals(contractTemplate.getSource())
+                    && ContractTemplateTypeEnum.WITHDRAW.getCode().equals(contractTemplate.getType())) {
+                //签署结算协议
+                contractRecord.setStatus(DealStatusEnum.DOING.getCode());
+                flag = withdrawSdk.signContract(user.getRealName(), user.getIdCardNo(), user.getPhone(), contractNo.toString());
+            } else {
+                HttpResponseResult<String> stringHttpResponseResult = contractService.transferProduceContract(contractRecord.getUserId(), userType, contractType);
+                if (stringHttpResponseResult.getStatus()) {
+                    contractRecord.setUrl(stringHttpResponseResult.getData());
+                    contractRecord.setStatus(DealStatusEnum.SUCCESS.getCode());
+                    flag = true;
+                }
+            }
+            if (flag) {
+                save(contractRecord);
+            }
+        }
+        return HttpResponseResult.succeed(true);
+    }
+
 }
 

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

@@ -3,13 +3,19 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.service.SysUserContractRecordService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.UserOrderService;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.ContractTemplateTypeEnum;
+import com.yonge.cooleshow.common.enums.SysUserType;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.result.BaseResult;
@@ -30,9 +36,11 @@ import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
 import com.yonge.cooleshow.biz.dal.dao.UserOrderPaymentDao;
 import com.yonge.cooleshow.biz.dal.service.UserOrderPaymentService;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 
 
 @Service
@@ -47,6 +55,13 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
     private PaymentProperties paymentProperties;
     @Autowired
     private PaymentClient paymentClient;
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysUserContractRecordService sysUserContractRecordService;
+    @Autowired
+    private SysUserService userService;
 
     @Override
     public UserOrderPayment detailByOrderNo(String orderNo, PayChannelEnum payChannel, TradeStatusEnum status) {
@@ -263,8 +278,21 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
                 || detail.getStatus().equals(OrderStatusEnum.PAYING)) {
             userOrderService.orderSuccess(detail, data);
         }
+
+        //处理支付完成签署协议
+        SysUserType userType = SysUserType.STUDENT;
+        if (ClientEnum.TEACHER.getCode().equals(orderPayment.getPaymentClient())) {
+            userType = SysUserType.TEACHER;
+        }
+        Boolean aBoolean = sysUserContractRecordService.checkContractSign(detail.getUserId(), userType, ContractTemplateTypeEnum.BUY_ORDER);
+        if (!aBoolean) {
+            SysUser userById = userService.findUserById(detail.getUserId());
+            SysUserType finalUserType = userType;
+            CompletableFuture.runAsync(() -> sysUserContractRecordService.sign(ContractTemplateTypeEnum.BUY_ORDER, finalUserType, userById));
+        }
     }
 
+
     /***
      * 处理回调-支付失败
      * @author liweifan

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

@@ -9,8 +9,7 @@
             su.avatar_ AS avatar,
             su.phone_ AS phone,
             (SELECT group_concat(name_) FROM `subject` WHERE find_in_set(id_,s.subject_id_)) AS subjectName,
-    --         IFNULL(TIMESTAMPDIFF(DAY,b.last_end_class_,NOW()),TIMESTAMPDIFF(DAY,b.created_time_,NOW())) AS lastEndClass
-            TIMESTAMPDIFF(DAY,b.last_end_class_,NOW()) AS lastEndClass
+            DATEDIFF(NOW(),b.last_end_class_) AS lastEndClass
         FROM user_binding_teacher b
         LEFT JOIN sys_user su ON b.student_id_=su.id_
         LEFT JOIN student s ON b.student_id_=s.user_id_

+ 3 - 41
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/SysUserContractRecordController.java

@@ -46,10 +46,7 @@ public class SysUserContractRecordController extends BaseController {
     private SysUserContractRecordService sysUserContractRecordService;
     @Autowired
     private ContractService contractService;
-    @Autowired
-    private WithdrawSdk withdrawSdk;
-    @Autowired
-    private IdGeneratorService idGeneratorService;
+
 
     @ApiOperation("判断用户是否签署协议")
     @GetMapping(value = "/checkContractSign", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@@ -75,42 +72,7 @@ public class SysUserContractRecordController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        //是否签署标识,签署了才入库
-        boolean flag = false;
-        SysUserContractRecord contractRecord = sysUserContractRecordService.queryLatestContract(user.getId(), SysUserType.STUDENT, contractType);
-
-        //未签署协议
-        if (null == contractRecord) {
-            ContractTemplate contractTemplate = contractTemplateService.queryLatestContractTemplate(contractType);
-            if (null == contractTemplate) {
-                return failed(HttpStatus.FORBIDDEN, "未找到协议");
-            }
-            contractRecord = new SysUserContractRecord();
-            Long contractNo = idGeneratorService.generatorId("contractNo");
-            contractRecord.setContractNo(contractNo.toString());
-            contractRecord.setUserId(user.getId());
-            contractRecord.setContractId(contractTemplate.getId());
-            //注意 老师端默认用户为student
-            contractRecord.setUserType(SysUserType.STUDENT.getCode());
-
-            if (ContractTemplateSourceEnum.LINGXINPAY.getCode().equals(contractTemplate.getSource())
-                    && ContractTemplateTypeEnum.WITHDRAW.getCode().equals(contractTemplate.getType())) {
-                //签署结算协议
-                contractRecord.setStatus(DealStatusEnum.DOING.getCode());
-                flag = withdrawSdk.signContract(user.getRealName(), user.getIdCardNo(), user.getPhone(), contractNo.toString());
-            } else {
-                HttpResponseResult<String> stringHttpResponseResult = contractService.transferProduceContract(contractRecord.getUserId(), SysUserType.STUDENT, contractType);
-                if (stringHttpResponseResult.getStatus()) {
-                    contractRecord.setUrl(stringHttpResponseResult.getData());
-                    contractRecord.setStatus(DealStatusEnum.SUCCESS.getCode());
-                    flag = true;
-                }
-            }
-            if (flag) {
-                sysUserContractRecordService.save(contractRecord);
-            }
-        }
-        return HttpResponseResult.succeed(true);
+        return sysUserContractRecordService.sign(contractType, SysUserType.STUDENT, user);
     }
 
     @ApiOperation("查看协议")
@@ -121,7 +83,7 @@ public class SysUserContractRecordController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return contractService.queryProductContract(user.getId(),SysUserType.STUDENT,contractType);
+        return contractService.queryProductContract(user.getId(), SysUserType.STUDENT, contractType);
     }
 
 }

+ 1 - 40
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/SysUserContractRecordController.java

@@ -43,10 +43,6 @@ public class SysUserContractRecordController extends BaseController {
     private SysUserContractRecordService sysUserContractRecordService;
     @Autowired
     private ContractService contractService;
-    @Autowired
-    private WithdrawSdk withdrawSdk;
-    @Autowired
-    private IdGeneratorService idGeneratorService;
 
     @ApiOperation("判断用户是否签署协议")
     @GetMapping(value = "/checkContractSign", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@@ -83,42 +79,7 @@ public class SysUserContractRecordController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        //是否签署标识,签署了才入库
-        boolean flag = false;
-        SysUserContractRecord contractRecord = sysUserContractRecordService.queryLatestContract(user.getId(), SysUserType.TEACHER, contractType);
-
-        //未签署协议
-        if (null == contractRecord) {
-            ContractTemplate contractTemplate = contractTemplateService.queryLatestContractTemplate(contractType);
-            if (null == contractTemplate) {
-                return failed(HttpStatus.FORBIDDEN, "未找到协议");
-            }
-            contractRecord = new SysUserContractRecord();
-            Long contractNo = idGeneratorService.generatorId("contractNo");
-            contractRecord.setContractNo(contractNo.toString());
-            contractRecord.setUserId(user.getId());
-            contractRecord.setContractId(contractTemplate.getId());
-            //注意 老师端默认用户为teacher
-            contractRecord.setUserType(SysUserType.TEACHER.getCode());
-
-            if (ContractTemplateSourceEnum.LINGXINPAY.getCode().equals(contractTemplate.getSource())
-                    && ContractTemplateTypeEnum.WITHDRAW.getCode().equals(contractTemplate.getType())) {
-                //签署结算协议
-                contractRecord.setStatus(DealStatusEnum.DOING.getCode());
-                flag = withdrawSdk.signContract(user.getRealName(), user.getIdCardNo(), user.getPhone(), contractNo.toString());
-            } else {
-                HttpResponseResult<String> stringHttpResponseResult = contractService.transferProduceContract(contractRecord.getUserId(), SysUserType.TEACHER, contractType);
-                if (stringHttpResponseResult.getStatus()) {
-                    contractRecord.setUrl(stringHttpResponseResult.getData());
-                    contractRecord.setStatus(DealStatusEnum.SUCCESS.getCode());
-                    flag = true;
-                }
-            }
-            if (flag) {
-                sysUserContractRecordService.save(contractRecord);
-            }
-        }
-        return HttpResponseResult.succeed(true);
+        return sysUserContractRecordService.sign(contractType, SysUserType.TEACHER, user);
     }