From 41b9950b03bafeb5fa90770794faf9baeacade6b Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 11 十一月 2024 16:15:43 +0800
Subject: [PATCH] 代码提交

---
 xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java               |    2 
 xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java                                      |    6 
 xinquan-auth/src/main/java/com/xinquan/auth/form/AppLoginBody.java                                            |    2 
 xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/AppUser.java                       |    3 
 xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java    |  143 ++++++----
 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java                       |    2 
 xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java                                   |    7 
 xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/domain/dto/AppUserDTO.java                    |    2 
 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java              |  554 ++++++++++++++++++++++++++++-------------
 xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppCaptchaBody.java                 |    2 
 xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java     |    2 
 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/inner/InnerAppUserController.java      |    4 
 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java    |    9 
 xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java |   40 +-
 xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppWXLoginBody.java                 |    2 
 15 files changed, 510 insertions(+), 270 deletions(-)

diff --git a/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/AppUser.java b/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/AppUser.java
index 57117ff..a59d837 100644
--- a/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/AppUser.java
+++ b/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/domain/AppUser.java
@@ -109,6 +109,9 @@
     @ApiModelProperty(value = "微信名称")
     @TableField("wxName")
     private String wxName;
+    @ApiModelProperty(value = "设备码")
+    @TableField("device")
+    private String device;
 
     @ApiModelProperty(value = "会员到期时间")
     @TableField(value = "vip_expire_time",updateStrategy = FieldStrategy.IGNORED)
diff --git a/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppCaptchaBody.java b/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppCaptchaBody.java
index 43609fe..bdd7109 100644
--- a/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppCaptchaBody.java
+++ b/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppCaptchaBody.java
@@ -27,4 +27,6 @@
     private String email;
     @ApiModelProperty(value = "姓名", required = false)
     private String name;
+    @ApiModelProperty(value = "设备码", required = false)
+    private String device;
 }
diff --git a/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppWXLoginBody.java b/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppWXLoginBody.java
index f58479d..5ae2720 100644
--- a/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppWXLoginBody.java
+++ b/xinquan-api/xinquan-api-system/src/main/java/com/xinquan/system/api/model/AppWXLoginBody.java
@@ -41,5 +41,7 @@
      */
     @ApiModelProperty(value = "用户性别 1男2女3保密")
     private Integer sex;
+    @ApiModelProperty(value = "设备码")
+    private String device;
 
 }
diff --git a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/domain/dto/AppUserDTO.java b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/domain/dto/AppUserDTO.java
index db5d2cf..6966d53 100644
--- a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/domain/dto/AppUserDTO.java
+++ b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/domain/dto/AppUserDTO.java
@@ -82,6 +82,8 @@
 
     @ApiModelProperty(value = "冻结原因")
     private String freezingReason;
+    @ApiModelProperty(value = "设备码")
+    private String device;
 
     @ApiModelProperty(value = "冻结操作人")
     private String freezingOperator;
diff --git a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java
index dd470ad..c45d6cd 100644
--- a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java
+++ b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/factory/RemoteAppUserFallbackFactory.java
@@ -181,7 +181,7 @@
             }
 
             @Override
-            public R<AppLoginUser> appleLogin(String appleId, String source) {
+            public R<AppLoginUser> appleLogin(String appleId, String device, String source) {
                 return R.fail("APP用户苹果登录失败。");
             }
 
diff --git a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java
index 11ba9de..ff98188 100644
--- a/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java
+++ b/xinquan-api/xinquan-api-user/src/main/java/com/xinquan/user/api/feign/RemoteAppUserService.java
@@ -147,7 +147,7 @@
      * @return
      */
     @PostMapping("/inner/app-user/appleLogin")
-    R<AppLoginUser> appleLogin(@RequestParam("appleId") String appleId,
+    R<AppLoginUser> appleLogin(@RequestParam("appleId") String appleId,@RequestParam("appleId") String device,
             @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
     /**
diff --git a/xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java b/xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java
index 054a409..a33e4b7 100644
--- a/xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java
+++ b/xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java
@@ -191,11 +191,14 @@
     @PostMapping("/app/appleLogin")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "appleId", value = "苹果ID", required = true, dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "device", value = "设备码", required = true, dataType = "String", paramType = "query"),
     }
     )
     public R<AppLoginUser> appleLogin(
-            @RequestParam(value = "appleId", required = true) String appleId) {
-        AppLoginUser appLoginUser = sysLoginService.appleLogin(appleId);
+            @RequestParam(value = "appleId", required = true) String appleId,
+            @RequestParam(value = "device", required = true) String device
+    ) {
+        AppLoginUser appLoginUser = sysLoginService.appleLogin(appleId,device);
         return R.ok(tokenService.createToken4AppLoginUser(appLoginUser));
     }
 
diff --git a/xinquan-auth/src/main/java/com/xinquan/auth/form/AppLoginBody.java b/xinquan-auth/src/main/java/com/xinquan/auth/form/AppLoginBody.java
index f0fd889..54725e9 100644
--- a/xinquan-auth/src/main/java/com/xinquan/auth/form/AppLoginBody.java
+++ b/xinquan-auth/src/main/java/com/xinquan/auth/form/AppLoginBody.java
@@ -30,5 +30,7 @@
     @ApiModelProperty(value = "用户密码", required = true)
     @NotBlank(message = "密码不能为空")
     private String password;
+    @ApiModelProperty(value = "设备码", required = false)
+    private String device;
 
 }
diff --git a/xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java b/xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java
index 27d3e2a..6975618 100644
--- a/xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java
+++ b/xinquan-auth/src/main/java/com/xinquan/auth/service/SysLoginService.java
@@ -322,7 +322,7 @@
         }
         // 查询用户信息
         AppUser appUser = remoteAppUserService.getUserByCondition(
-                AppUserDTO.builder().cellPhone(body.getCellPhone()).build(),
+                AppUserDTO.builder().cellPhone(body.getCellPhone()).device(body.getDevice()).build(),
                 SecurityConstants.INNER).getData();
         if (StringUtils.isNull(appUser)) {
             recordLogService.recordLogininfor(body.getCellPhone(), Constants.LOGIN_FAIL,
@@ -403,8 +403,8 @@
      * @param appleId 苹果id
      * @return
      */
-    public AppLoginUser appleLogin(String appleId) {
-        R<AppLoginUser> userResult = remoteAppUserService.appleLogin(appleId,
+    public AppLoginUser appleLogin(String appleId,String device) {
+        R<AppLoginUser> userResult = remoteAppUserService.appleLogin(appleId,device,
                 SecurityConstants.INNER);
         if (R.FAIL == userResult.getCode()) {
             throw new ServiceException(userResult.getMsg());
diff --git a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java
index b3f2b0d..17f2a46 100644
--- a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java
+++ b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java
@@ -45,6 +45,7 @@
 import io.swagger.annotations.ApiOperation;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -737,8 +738,11 @@
             List<AppUser> data3 = remoteAppUserService.getUserByCourseId(id).getData();
             cours.setCount(data3.size());
         }
-        clientCourseVO.setList2(courses);
 
+        clientCourseVO.setList2(courses);
+        if (byId.getChargeType() == 1){
+            byId.setGeneralPrice(new BigDecimal("0"));
+        }
         return R.ok(clientCourseVO);
     }
     /**
@@ -802,6 +806,9 @@
             cours.setCount(data1.size());
         }
         clientCourseVO.setList2(courses);
+        if (byId.getChargeType() == 1){
+            byId.setGeneralPrice(new BigDecimal("0"));
+        }
         return R.ok(clientCourseVO);
     }
 
@@ -1043,20 +1050,24 @@
             for (Long l : data1) {
                 CourseChapter byId1 = courseChapterService.getById(l);
                 Course byId = courseService.getById(byId1.getCourseId());
-                CourseVO courseVO = new CourseVO();
-                BeanUtils.copyProperties(byId, courseVO);
-                List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, byId1.getCourseId()).list();
-                int a = 0;
-                int b = 0;
-                for (CourseChapter courseChapter : list1) {
-                    a+= courseChapter.getVirtualLearnedNum();
-                    Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData();
-                    b+=data2;
+                if (byId!=null){
+                    CourseVO courseVO = new CourseVO();
+                    BeanUtils.copyProperties(byId, courseVO);
+                    List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, byId1.getCourseId()).list();
+                    int a = 0;
+                    int b = 0;
+                    for (CourseChapter courseChapter : list1) {
+                        a+= courseChapter.getVirtualLearnedNum();
+                        Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData();
+                        b+=data2;
+                    }
+                    courseVO.setCount(a+b);
+                    courseVO.setRealLearnedNum(a+b);
+                    courseVO.setVirtualLearnedNum(0);
+                    courseVO.setId(byId.getId());
+                    courseVO.setCoverUrl(byId.getCoverUrl());
+                    courseVOS.add(courseVO);
                 }
-                courseVO.setCount(a+b);
-                courseVO.setRealLearnedNum(a+b);
-                courseVO.setVirtualLearnedNum(0);
-                courseVOS.add(courseVO);
             }
             studyPageVO.setCourseList(courseVOS);
             return R.ok(studyPageVO);
@@ -1082,7 +1093,6 @@
                 studyPageVO.setFreeCourseList(courses);
             }
             studyPageVO.setCourseList(courseVOS);
-
             return R.ok(studyPageVO);
         }
 
diff --git a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java
index 1a32c50..a9c22a3 100644
--- a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java
+++ b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java
@@ -179,11 +179,13 @@
             if (order.getAppUserId().equals(userId) && order.getGiveUserId() == null){
                 OrderCourseVO orderCourseVO = new OrderCourseVO();
                 BeanUtils.copyProperties(order, orderCourseVO);
+                orderCourseVO.setBusinessId(order.getBusinessId());
                 res.add(orderCourseVO);
             }
             if (order.getGiveUserId()!=null&&order.getGiveUserId().equals(userId)){
                 OrderCourseVO orderCourseVO = new OrderCourseVO();
                 BeanUtils.copyProperties(order, orderCourseVO);
+                orderCourseVO.setBusinessId(order.getBusinessId());
                 res.add(orderCourseVO);
             }
         }
@@ -203,6 +205,7 @@
                     break;
                 case 2:
                     OrderCourseVO data = remoteCourseService.getCourseByIdAny(orderCourseVO).getData();
+                    Course data4 = remoteCourseService.getCourseById(data.getBusinessId()).getData();
                     if (data==null)continue;
                     BeanUtils.copyProperties(data, orderCourseVO);
                     List<CourseChapter> data2 = remoteCourseService.getChapterByCourseId(orderCourseVO.getBusinessId() + "").getData();
@@ -212,6 +215,11 @@
                     }
                     Integer data3 = remoteCourseService.getCountByCourseId(orderCourseVO.getBusinessId() + "").getData();
                     orderCourseVO.setCount(data3+temp);
+                    if (data4!=null){
+                        orderCourseVO.setCourseTitle(data4.getCourseTitle());
+                        orderCourseVO.setCoverUrl(data4.getCoverUrl());
+                        orderCourseVO.setBusinessId(data4.getId());
+                    }
                     break;
             }
         }
@@ -726,6 +734,9 @@
                     .eq(OrderPaymentRecord::getPayOrderNo, string).ne(OrderPaymentRecord::getPaymentStatus, 2).one();
             if (two!=null){
                 Order one = orderService.getById(two.getOrderId());
+                if (one.getPaymentStatus()==2){
+                    return;
+                }
                 one.setPaymentStatus(2);
                 one.setPaymentTime(LocalDateTime.now());
                 OrderPaymentRecord one2 = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, one.getId())
@@ -737,33 +748,45 @@
                 // 实际支付金额
                 BigDecimal realPayAmount = one.getRealPayAmount();
                 // 判断订单所属用户是否有上级 是否需要做分佣处理
-                AppUser data3 = remoteAppUserService.getAppUserById(one.getAppUserId() + "").getData();
-                if (data3.getInviteUserId()!=null){
-                    // 分佣给上级 先远程查询分佣比例
-                    CommissionRule data1 = sysUserClient.getCommission().getData();
-                    if (data1!=null){
-                        if (data1.getProportion()!=null){
-                            BigDecimal bigDecimal = realPayAmount.multiply(data1.getProportion())
-                                    .setScale(2, BigDecimal.ROUND_HALF_DOWN);
-                            // 上级获取的分佣金额
-                            AppUser appUserById = remoteAppUserService.getAppUserById(data3.getInviteUserId() + "").getData();
-                            // 更新用户余额
-                            remoteAppUserService.updateAppUser(
-                                    AppUserDTO.builder().balance(
-                                                    appUserById.getBalance().add(bigDecimal))
-                                            .build(), SecurityConstants.INNER);
-                            // 新增分佣流水明细
-                            AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord();
-                            appUserWalletRecord.setAppUserId(data3.getInviteUserId());
-                            appUserWalletRecord.setChangeType(1);
-                            appUserWalletRecord.setReason("分佣收益");
-                            appUserWalletRecord.setAmount(bigDecimal);
-                            appUserWalletRecord.setChildAppUserId(one.getAppUserId());
-                            appUserWalletRecord.setOrderId(one.getId());
-                            remoteAppUserService.addBalanceRecord(appUserWalletRecord);
-                            one.setCommissionAmount(bigDecimal);
-                            one.setCommissionId(data3.getInviteUserId());
-                            orderService.updateById(one);
+                AppUser data9 = remoteAppUserService.getAppUserById(one.getAppUserId() + "").getData();
+                if (one.getGiveUserId()!=null){
+                    remoteAppUserService.addNotice(one.getGiveUserId() + "", one.getBusinessId() + "",
+                            one.getAppUserId() + "", one.getTotalAmount() + "");
+                }
+
+                if (data9.getInviteUserId()!=null) {
+
+                    if (one.getOrderFrom() == 1 || one.getOrderFrom() == 2 || one.getOrderFrom() == 3) {
+                        // 查询实际支付价格 不包含余额抵扣价格
+                        OrderPaymentRecord one1 = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, one.getId())
+                                .ne(OrderPaymentRecord::getPaymentType, 4).one();
+                        // 分佣给上级 先远程查询分佣比例
+                        CommissionRule data1 = sysUserClient.getCommission().getData();
+                        if (data1 != null) {
+                            if (data1.getProportion() != null) {
+
+                                BigDecimal bigDecimal = one1.getPayAmount().multiply(data1.getProportion()).divide(new BigDecimal("100"))
+                                        .setScale(2, BigDecimal.ROUND_HALF_DOWN);
+                                // 上级获取的分佣金额
+                                AppUser appUserById = remoteAppUserService.getAppUserById(data9.getInviteUserId() + "").getData();
+                                // 更新用户余额
+//                            remoteAppUserService.updateAppUser(
+//                                    AppUserDTO.builder().balance(
+//                                                    appUserById.getBalance().add(bigDecimal))
+//                                            .build(), SecurityConstants.INNER);
+                                // 新增分佣流水明细
+                                AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord();
+                                appUserWalletRecord.setAppUserId(data9.getInviteUserId());
+                                appUserWalletRecord.setChangeType(1);
+                                appUserWalletRecord.setReason("分佣收益");
+                                appUserWalletRecord.setAmount(bigDecimal);
+                                appUserWalletRecord.setChildAppUserId(one.getAppUserId());
+                                appUserWalletRecord.setOrderId(one.getId());
+                                remoteAppUserService.addBalanceRecord(appUserWalletRecord);
+                                one.setCommissionAmount(bigDecimal);
+                                one.setCommissionId(data9.getInviteUserId());
+                                orderService.updateById(one);
+                            }
                         }
                     }
                 }
@@ -772,7 +795,7 @@
                     OrderPaymentRecord one1 = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, one.getId())
                             .eq(OrderPaymentRecord::getPaymentType, 4).one();
                     AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord();
-                    appUserWalletRecord.setAppUserId(data3.getInviteUserId());
+                    appUserWalletRecord.setAppUserId(data9.getInviteUserId());
                     String reason=null;
                     switch (one.getOrderFrom()){
                         case 1:
@@ -797,35 +820,6 @@
                             // 会员
                             reason = "购买【"+one.getBuyContent()+"】";
                             appUserWalletRecord.setChangeType(2);
-                            if (data3.getInviteUserId()!=null){
-                                // 分佣给上级 先远程查询分佣比例
-                                CommissionRule data4 = sysUserClient.getCommission().getData();
-                                if (data4!=null){
-                                    if (data4.getProportion()!=null){
-                                        BigDecimal bigDecimal = realPayAmount.multiply(data4.getProportion())
-                                                .divide(new BigDecimal(100),2, BigDecimal.ROUND_DOWN);
-                                        // 上级获取的分佣金额
-                                        AppUser appUserById = remoteAppUserService.getAppUserById(data3.getInviteUserId() + "").getData();
-                                        // 更新用户余额
-                                        remoteAppUserService.updateAppUser(
-                                                AppUserDTO.builder().balance(
-                                                                appUserById.getBalance().add(bigDecimal))
-                                                        .build(), SecurityConstants.INNER);
-                                        // 新增分佣流水明细
-                                        AppUserWalletRecord appUserWalletRecord1 = new AppUserWalletRecord();
-                                        appUserWalletRecord1.setAppUserId(data3.getInviteUserId());
-                                        appUserWalletRecord1.setChangeType(1);
-                                        appUserWalletRecord1.setReason("分佣收益");
-                                        appUserWalletRecord1.setAmount(bigDecimal);
-                                        appUserWalletRecord1.setChildAppUserId(one.getAppUserId());
-                                        appUserWalletRecord1.setOrderId(one.getId());
-                                        remoteAppUserService.addBalanceRecord(appUserWalletRecord1);
-                                        one.setCommissionAmount(bigDecimal);
-                                        one.setCommissionId(data3.getInviteUserId());
-                                        orderService.updateById(one);
-                                    }
-                                }
-                            }
                             break;
                         case 4:
                             // 充值
@@ -838,6 +832,41 @@
                     appUserWalletRecord.setChildAppUserId(one.getAppUserId());
                     appUserWalletRecord.setOrderId(one.getId());
                     remoteAppUserService.addBalanceRecord(appUserWalletRecord);
+                }else{
+                    switch (one.getOrderFrom()){
+                        case 2:
+                            Course data2 = remoteCourseService.getCourseById(one.getBusinessId()).getData();
+                            // 增加用户与课程的关系表
+                            if (one.getGiveUserId()!=null){
+                                remoteAppUserService.addAppUserCourse(one.getBusinessId(),one.getGiveUserId(),one.getId(),1);
+                            }else{
+                                // 自己购买
+                                remoteAppUserService.addAppUserCourse(one.getBusinessId(),one.getAppUserId(),one.getId(),2);
+                            }
+                            break;
+                        case 3:
+                            // 会员
+                            if (one.getBuyContent().contains("月")){
+
+                                remoteAppUserService.addVipExpireTime(one.getAppUserId(),1);
+                            }else if (one.getBuyContent().contains("季")){
+                                remoteAppUserService.addVipExpireTime(one.getAppUserId(),2);
+                            }else if (one.getBuyContent().contains("年")){
+                                remoteAppUserService.addVipExpireTime(one.getAppUserId(),3);
+                            }
+                            break;
+                        case 4:
+                            remoteAppUserService.addBalance(one.getAppUserId(),one.getRealPayAmount());
+                            AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord();
+                            appUserWalletRecord.setAppUserId(one.getAppUserId());
+                            appUserWalletRecord.setChangeType(1);
+                            appUserWalletRecord.setReason("充值");
+                            appUserWalletRecord.setAmount(one.getRealPayAmount());
+                            appUserWalletRecord.setChildAppUserId(one.getAppUserId());
+                            appUserWalletRecord.setOrderId(one.getId());
+                            remoteAppUserService.addBalanceRecord(appUserWalletRecord);
+                            break;
+                    }
                 }
                 PrintWriter out = response.getWriter();
                 out.write("succeeded");
diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java
index e5f804e..a0c711e 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java
@@ -1330,7 +1330,7 @@
             consecutiveDays++;
             currentDate = currentDate.minusDays(1);
         }
-        appUserInfoVO.setToday(consecutiveDays);
+        appUserInfoVO.setContinuity(consecutiveDays);
         AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)
                 .eq(AppUserTree::getSowAgain,2)
                 .one();
@@ -1408,7 +1408,6 @@
             currentDate = currentDate.minusDays(1);
         }
         appUser.setContinuity(consecutiveDays);
-        appUser.setToday(consecutiveDays);
         // 根据等级查询疗愈名称和图标
         UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData();
         appUser.setLevelName(data.getLevelName());
@@ -1610,11 +1609,7 @@
     @PostMapping("/saveUserAnswers")
     @ApiOperation(value = "保存计划引导页用户的答案", tags = {"用户端-计划引导相关接口"})
     public R<?> saveUserAnswers(@Validated @RequestBody UserAnswerDTO dto) {
-        LoginUser loginUser = tokenService.getLoginUser();
-        if (loginUser==null){
-            return R.tokenError("登录失效");
-        }
-        Long userId = loginUser.getUserid();
+
         appUserService.saveUserAnswers(dto);
         return R.ok();
     }
diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/inner/InnerAppUserController.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/inner/InnerAppUserController.java
index 55cd72b..20101be 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/inner/InnerAppUserController.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/inner/InnerAppUserController.java
@@ -75,8 +75,8 @@
      */
     @InnerAuth
     @PostMapping("/appleLogin")
-    R<AppLoginUser> appleLogin(@RequestParam("appleId") String appleId) {
-        return R.ok(appUserService.appleLogin(appleId));
+    R<AppLoginUser> appleLogin(@RequestParam("appleId") String appleId,@RequestParam("device") String device) {
+        return R.ok(appUserService.appleLogin(appleId,device));
     }
 
     /**
diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java
index dbff9fb..8504c4e 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/AppUserService.java
@@ -56,7 +56,7 @@
      * @param source
      * @return
      */
-    AppLoginUser appleLogin(String appleId);
+    AppLoginUser appleLogin(String appleId,String device);
 
     /**
      * 验证码登录
diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
index dca7cd9..1f52b20 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/service/impl/AppUserServiceImpl.java
@@ -2,8 +2,8 @@
 
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.crypto.SecureUtil;
-import com.alibaba.nacos.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xinquan.common.core.constant.Constants;
@@ -44,6 +44,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 
 /**
  * <p>
@@ -70,20 +71,37 @@
      */
     @Override
     public Optional<AppUser> getUserByCondition(AppUserDTO dto) {
+        String device = dto.getDevice();
+        if (StringUtils.hasLength(dto.getDevice())) {
+            Optional<AppUser> one = this.lambdaQuery()
+                    .eq(AppUser::getDevice, device)
+                    .isNull(AppUser::getCellPhone).oneOpt();
+            if (one.isPresent()) {
+                initUserTree(one.get().getId());
+                this.updateById(one.get());
+                return one;
+            } else {
+
+               return this.lambdaQuery()
+                        .eq(Objects.nonNull(dto.getId()), AppUser::getId, dto.getId())
+                        .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getAppleId()), AppUser::getAppleId, dto.getAppleId())
+                        .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getCellPhone()), AppUser::getCellPhone,
+                                dto.getCellPhone())
+                        .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getWxOpenId()), AppUser::getWxOpenId,
+                                dto.getWxOpenId())
+                        .ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT.getCode()).oneOpt();
+            }
+        }
         return this.lambdaQuery()
                 .eq(Objects.nonNull(dto.getId()), AppUser::getId, dto.getId())
-                .eq(StringUtils.isNotBlank(dto.getAppleId()), AppUser::getAppleId, dto.getAppleId())
-                .eq(StringUtils.isNotBlank(dto.getCellPhone()), AppUser::getCellPhone,
+                .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getAppleId()), AppUser::getAppleId, dto.getAppleId())
+                .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getCellPhone()), AppUser::getCellPhone,
                         dto.getCellPhone())
-                .eq(StringUtils.isNotBlank(dto.getWxOpenId()), AppUser::getWxOpenId,
+                .eq(com.alibaba.nacos.common.utils.StringUtils.isNotBlank(dto.getWxOpenId()), AppUser::getWxOpenId,
                         dto.getWxOpenId())
                 .ne(AppUser::getUserStatus, AppUserStatusEnum.LOGOUT.getCode()).oneOpt();
     }
 
-    public static void main(String[] args) {
-        String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
-        System.err.println(randomCode);
-    }
     /**
      * app用户注册
      * @param appUserDTO
@@ -113,8 +131,8 @@
         AppLoginUser appLoginUser = new AppLoginUser();
         Optional<AppUser> optionalAppUser = this.getUserByCondition(
                 AppUserDTO.builder().wxOpenId(body.getWxOpenId()).build());
-        AppUser appUser;
-        SysUser sysUser;
+        AppUser appUser = new AppUser();
+        SysUser sysUser = new SysUser();
         // 存在账户,查询关联系统用户
         if (optionalAppUser.isPresent()) {
             appUser = optionalAppUser.get();
@@ -129,44 +147,93 @@
                 appLoginUser.setCellPhone(appUser.getCellPhone());
             }
         } else {
-            // 不存在账户,创建账户
-            // 注册用户信息
-            sysUser = new SysUser();
-            sysUser.setNickName(body.getNickname());
-            sysUser.setAvatar(body.getHeadImgUrl());
-            sysUser.setUserName(body.getNickname());
-            sysUser.setUserType("01"); // app用户
-            R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
-                    SecurityConstants.INNER);
-            if (registerResult.getCode() == Constants.FAIL) {
-                throw new ServiceException(registerResult.getMsg());
+            if (org.springframework.util.StringUtils.hasLength(body.getDevice())){
+                AppUser one = this.getOne(new LambdaQueryWrapper<>(AppUser.class)
+                        .eq(AppUser::getDevice, body.getDevice())
+                        .isNull(AppUser::getCellPhone));
+                if (one!=null){
+                    initUserTree(appUser.getId());
+                    appUser = one;
+                }else{
+                    // 不存在账户,创建账户
+                    // 注册用户信息
+                    sysUser = new SysUser();
+                    sysUser.setNickName(body.getNickname());
+                    sysUser.setAvatar(body.getHeadImgUrl());
+                    sysUser.setUserName(body.getNickname());
+                    sysUser.setUserType("01"); // app用户
+                    R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
+                            SecurityConstants.INNER);
+                    if (registerResult.getCode() == Constants.FAIL) {
+                        throw new ServiceException(registerResult.getMsg());
+                    }
+                    SysUser sysUserRes = registerResult.getData();
+                    appUser = new AppUser();
+                    appUser.setUserId(sysUserRes.getUserId());
+                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+                    String format = simpleDateFormat.format(new Date());
+                    // 生成四位随机数字
+                    String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+                    appUser.setCode("YH"+format+randomCode);
+                    appUser.setWxOpenId(body.getWxOpenId());
+                    String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
+                    sysUser.setNickName(nickname);
+                    appUser.setNickname(nickname);
+                    appUser.setWxName(body.getNickname());
+                    appUser.setAvatar(body.getHeadImgUrl());
+                    appUser.setGender(3);
+                    appUser.setBalance(BigDecimal.ZERO);
+                    appUser.setSanskritFlag(DisabledEnum.NO.getCode());
+                    appUser.setBalance(BigDecimal.ZERO);
+                    appUser.setIncome(BigDecimal.ZERO);
+                    appUser.setTotalEnergyValue(0);
+                    appUser.setRegisterTime(LocalDateTime.now());
+                    appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+                    appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
+                    this.save(appUser);
+                    // 初始化用户树苗
+                    initUserTree(appUser.getId());
+                }
+            }else{
+                // 不存在账户,创建账户
+                // 注册用户信息
+                sysUser = new SysUser();
+                sysUser.setNickName(body.getNickname());
+                sysUser.setAvatar(body.getHeadImgUrl());
+                sysUser.setUserName(body.getNickname());
+                sysUser.setUserType("01"); // app用户
+                R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
+                        SecurityConstants.INNER);
+                if (registerResult.getCode() == Constants.FAIL) {
+                    throw new ServiceException(registerResult.getMsg());
+                }
+                SysUser sysUserRes = registerResult.getData();
+                appUser = new AppUser();
+                appUser.setUserId(sysUserRes.getUserId());
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+                String format = simpleDateFormat.format(new Date());
+                // 生成四位随机数字
+                String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+                appUser.setCode("YH"+format+randomCode);
+                appUser.setWxOpenId(body.getWxOpenId());
+                String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
+                sysUser.setNickName(nickname);
+                appUser.setNickname(nickname);
+                appUser.setWxName(body.getNickname());
+                appUser.setAvatar(body.getHeadImgUrl());
+                appUser.setGender(3);
+                appUser.setBalance(BigDecimal.ZERO);
+                appUser.setSanskritFlag(DisabledEnum.NO.getCode());
+                appUser.setBalance(BigDecimal.ZERO);
+                appUser.setIncome(BigDecimal.ZERO);
+                appUser.setTotalEnergyValue(0);
+                appUser.setRegisterTime(LocalDateTime.now());
+                appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+                appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
+                this.save(appUser);
+                // 初始化用户树苗
+                initUserTree(appUser.getId());
             }
-            SysUser sysUserRes = registerResult.getData();
-            appUser = new AppUser();
-            appUser.setUserId(sysUserRes.getUserId());
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
-            String format = simpleDateFormat.format(new Date());
-            // 生成四位随机数字
-            String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
-            appUser.setCode("YH"+format+randomCode);
-            appUser.setWxOpenId(body.getWxOpenId());
-            String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
-            sysUser.setNickName(nickname);
-            appUser.setNickname(nickname);
-            appUser.setWxName(body.getNickname());
-            appUser.setAvatar(body.getHeadImgUrl());
-            appUser.setGender(3);
-            appUser.setBalance(BigDecimal.ZERO);
-            appUser.setSanskritFlag(DisabledEnum.NO.getCode());
-            appUser.setBalance(BigDecimal.ZERO);
-            appUser.setIncome(BigDecimal.ZERO);
-            appUser.setTotalEnergyValue(0);
-            appUser.setRegisterTime(LocalDateTime.now());
-            appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
-            appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
-            this.save(appUser);
-            // 初始化用户树苗
-            initUserTree(appUser.getId());
         }
         appLoginUser.setUserid(sysUser.getUserId());
         appLoginUser.setUsername(appUser.getNickname());
@@ -180,12 +247,12 @@
     }
 
     @Override
-    public AppLoginUser appleLogin(String appleId) {
+    public AppLoginUser appleLogin(String appleId,String device) {
         AppLoginUser appLoginUser = new AppLoginUser();
         Optional<AppUser> optionalAppUser = this.getUserByCondition(
                 AppUserDTO.builder().appleId(appleId).build());
-        SysUser sysUser;
-        AppUser appUser;
+        SysUser sysUser = new SysUser();
+        AppUser appUser = new AppUser();
         // 存在账户,查询关联系统用户
         if (optionalAppUser.isPresent()) {
             appUser = optionalAppUser.get();
@@ -193,120 +260,174 @@
                 throw new ServiceException("账号已被冻结");
             }
             sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
-            if (appUser.getCellPhone()!=null){
+            if (appUser.getCellPhone() != null) {
                 appLoginUser.setBindStatus(DisabledEnum.NO.getCode());
                 appLoginUser.setCellPhone(appUser.getCellPhone());
             }
         } else {
-            // 不存在账户,创建账户
-            // 注册用户信息
-            sysUser = new SysUser();
-            String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
-            sysUser.setNickName(nickname);
-            sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
-            sysUser.setUserName(nickname);
-            sysUser.setUserType("01"); // app用户
-            R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
-                    SecurityConstants.INNER);
-            if (registerResult.getCode() == Constants.FAIL) {
-                throw new ServiceException(registerResult.getMsg());
+            if (org.springframework.util.StringUtils.hasLength(device)) {
+                AppUser one = this.getOne(new LambdaQueryWrapper<>(AppUser.class)
+                        .eq(AppUser::getDevice, device)
+                        .isNull(AppUser::getCellPhone));
+                if (one != null) {
+                    initUserTree(one.getId());
+                    appUser.setAppleId(appleId);
+                    appUser = one;
+                    this.updateById(appUser);
+                } else {
+                    // 不存在账户,创建账户
+                    // 注册用户信息
+                    sysUser = new SysUser();
+                    String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
+                    sysUser.setNickName(nickname);
+                    sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
+                    sysUser.setUserName(nickname);
+                    sysUser.setUserType("01"); // app用户
+                    R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
+                            SecurityConstants.INNER);
+                    if (registerResult.getCode() == Constants.FAIL) {
+                        throw new ServiceException(registerResult.getMsg());
+                    }
+                    SysUser sysUserRes = registerResult.getData();
+                    appUser = new AppUser();
+                    appUser.setAppleId(appleId);
+                    appUser.setUserId(sysUserRes.getUserId());
+                    appUser.setNickname(nickname);
+                    appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
+                    appUser.setBalance(BigDecimal.ZERO);
+                    appUser.setSanskritFlag(DisabledEnum.NO.getCode());
+                    appUser.setBalance(BigDecimal.ZERO);
+                    appUser.setIncome(BigDecimal.ZERO);
+                    appUser.setTotalEnergyValue(0);
+                    appUser.setRegisterTime(LocalDateTime.now());
+                    appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+                    String format = simpleDateFormat.format(new Date());
+                    // 生成四位随机数字
+                    String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+                    appUser.setCode("YH" + format + randomCode);
+                    this.save(appUser);
+                    // 初始化用户树苗
+                    initUserTree(appUser.getId());
+                }
             }
-            SysUser sysUserRes = registerResult.getData();
-            appUser = new AppUser();
-            appUser.setAppleId(appleId);
-            appUser.setUserId(sysUserRes.getUserId());
-            appUser.setNickname(nickname);
-            appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
-            appUser.setBalance(BigDecimal.ZERO);
-            appUser.setSanskritFlag(DisabledEnum.NO.getCode());
-            appUser.setBalance(BigDecimal.ZERO);
-            appUser.setIncome(BigDecimal.ZERO);
-            appUser.setTotalEnergyValue(0);
-            appUser.setRegisterTime(LocalDateTime.now());
-            appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
-            String format = simpleDateFormat.format(new Date());
-            // 生成四位随机数字
-            String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
-            appUser.setCode("YH"+format+randomCode);
-            this.save(appUser);
-            // 初始化用户树苗
-            initUserTree(appUser.getId());
         }
-        appLoginUser.setUserid(sysUser.getUserId());
-        appLoginUser.setUsername(appUser.getNickname());
-        appLoginUser.setAppUserId(appUser.getId());
-        appLoginUser.setSysUser(sysUser);
-//        if (Objects.nonNull(sysUser.getUserName())) {
-//            appLoginUser.setBindStatus(DisabledEnum.YES.getCode());
-//            appLoginUser.setCellPhone(appUser.getCellPhone());
-//        }
-        return appLoginUser;
-    }
+            appLoginUser.setUserid(sysUser.getUserId());
+            appLoginUser.setUsername(appUser.getNickname());
+            appLoginUser.setAppUserId(appUser.getId());
+            appLoginUser.setSysUser(sysUser);
+            return appLoginUser;
+        }
 
-    /**
-     * 验证码登录
-     *
-     * @param body
-     * @return
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public AppLoginUser appCaptchaLogin(AppCaptchaBody body) {
-        AppLoginUser appLoginUser = new AppLoginUser();
-        Optional<AppUser> optionalAppUser = this.getUserByCondition(
-                AppUserDTO.builder().cellPhone(body.getCellPhone()).build());
-        AppUser appUser;
-        SysUser sysUser;
-        if (optionalAppUser.isPresent()) {
-            appUser = optionalAppUser.get();
-            sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
-        } else {
-            // 注册用户信息
-            sysUser = new SysUser();
-            String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
-            sysUser.setNickName(nickname);
-            sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
-            sysUser.setUserName(body.getCellPhone());
-            sysUser.setUserType("01"); // app用户
-            // 设置默认密码123456
-            sysUser.setPassword(SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD));
+        /**
+         * 验证码登录
+         *
+         * @param body
+         * @return
+         */
+        @Override
+        @Transactional(rollbackFor = Exception.class)
+        public AppLoginUser appCaptchaLogin (AppCaptchaBody body){
+            AppLoginUser appLoginUser = new AppLoginUser();
+            Optional<AppUser> optionalAppUser = this.getUserByCondition(
+                    AppUserDTO.builder().cellPhone(body.getCellPhone()).build());
+            AppUser appUser = new AppUser();
+            SysUser sysUser = new SysUser();
+            if (optionalAppUser.isPresent()) {
+                appUser = optionalAppUser.get();
+                sysUser = sysUserClient.getSysUser(appUser.getUserId()).getData();
+            } else {
+                if (org.springframework.util.StringUtils.hasLength(body.getDevice())) {
+                    AppUser one = this.getOne(new LambdaQueryWrapper<>(AppUser.class)
+                            .eq(AppUser::getDevice, body.getDevice())
+                            .isNull(AppUser::getCellPhone));
+                    if (one != null) {
+                        initUserTree(appUser.getId());
+                        appUser = one;
+                    } else {
+                        // 注册用户信息
+                        sysUser = new SysUser();
+                        String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
+                        sysUser.setNickName(nickname);
+                        sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
+                        sysUser.setUserName(body.getCellPhone());
+                        sysUser.setUserType("01"); // app用户
+                        // 设置默认密码123456
+                        sysUser.setPassword(SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD));
 
-            R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
-                    SecurityConstants.INNER);
-            if (registerResult.getCode() == Constants.FAIL) {
-                throw new ServiceException(registerResult.getMsg());
+                        R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
+                                SecurityConstants.INNER);
+                        if (registerResult.getCode() == Constants.FAIL) {
+                            throw new ServiceException(registerResult.getMsg());
+                        }
+                        SysUser sysUserRes = registerResult.getData();
+                        appUser = new AppUser();
+                        appUser.setUserId(sysUserRes.getUserId());
+                        appUser.setNickname(nickname);
+                        appUser.setCellPhone(body.getCellPhone());
+                        appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
+                        appUser.setBalance(BigDecimal.ZERO);
+                        appUser.setSanskritFlag(DisabledEnum.NO.getCode());
+                        appUser.setBalance(BigDecimal.ZERO);
+                        appUser.setIncome(BigDecimal.ZERO);
+                        appUser.setTotalEnergyValue(0);
+                        appUser.setRegisterTime(LocalDateTime.now());
+                        appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+                        String format = simpleDateFormat.format(new Date());
+                        // 生成四位随机数字
+                        String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+                        appUser.setCode("YH" + format + randomCode);
+                        this.save(appUser);
+                        // 初始化用户树苗
+                        initUserTree(appUser.getId());
+                    }
+                } else {
+                    // 注册用户信息
+                    sysUser = new SysUser();
+                    String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
+                    sysUser.setNickName(nickname);
+                    sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
+                    sysUser.setUserName(body.getCellPhone());
+                    sysUser.setUserType("01"); // app用户
+                    // 设置默认密码123456
+                    sysUser.setPassword(SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD));
+
+                    R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
+                            SecurityConstants.INNER);
+                    if (registerResult.getCode() == Constants.FAIL) {
+                        throw new ServiceException(registerResult.getMsg());
+                    }
+                    SysUser sysUserRes = registerResult.getData();
+                    appUser = new AppUser();
+                    appUser.setUserId(sysUserRes.getUserId());
+                    appUser.setNickname(nickname);
+                    appUser.setCellPhone(body.getCellPhone());
+                    appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
+                    appUser.setBalance(BigDecimal.ZERO);
+                    appUser.setSanskritFlag(DisabledEnum.NO.getCode());
+                    appUser.setBalance(BigDecimal.ZERO);
+                    appUser.setIncome(BigDecimal.ZERO);
+                    appUser.setTotalEnergyValue(0);
+                    appUser.setRegisterTime(LocalDateTime.now());
+                    appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+                    String format = simpleDateFormat.format(new Date());
+                    // 生成四位随机数字
+                    String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+                    appUser.setCode("YH" + format + randomCode);
+                    this.save(appUser);
+                    // 初始化用户树苗
+                    initUserTree(appUser.getId());
+                }
             }
-            SysUser sysUserRes = registerResult.getData();
-            appUser = new AppUser();
-            appUser.setUserId(sysUserRes.getUserId());
-            appUser.setNickname(nickname);
-            appUser.setCellPhone(body.getCellPhone());
-            appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
-            appUser.setBalance(BigDecimal.ZERO);
-            appUser.setSanskritFlag(DisabledEnum.NO.getCode());
-            appUser.setBalance(BigDecimal.ZERO);
-            appUser.setIncome(BigDecimal.ZERO);
-            appUser.setTotalEnergyValue(0);
-            appUser.setRegisterTime(LocalDateTime.now());
-            appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
-            String format = simpleDateFormat.format(new Date());
-            // 生成四位随机数字
-            String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
-            appUser.setCode("YH"+format+randomCode);
-            this.save(appUser);
-            // 初始化用户树苗
-            initUserTree(appUser.getId());
-
+            appLoginUser.setUserid(sysUser.getUserId());
+            appLoginUser.setUsername(appUser.getNickname());
+            appLoginUser.setAppUserId(appUser.getId());
+            appLoginUser.setSysUser(sysUser);
+            appLoginUser.setCellPhone(appUser.getCellPhone());
+            return appLoginUser;
         }
-        appLoginUser.setUserid(sysUser.getUserId());
-        appLoginUser.setUsername(appUser.getNickname());
-        appLoginUser.setAppUserId(appUser.getId());
-        appLoginUser.setSysUser(sysUser);
-        appLoginUser.setCellPhone(appUser.getCellPhone());
-        return appLoginUser;
-    }
 
     /**
      * 初始化用户树苗
@@ -434,37 +555,108 @@
      */
     @Override
     public void saveUserAnswers(UserAnswerDTO dto) {
-        // 获取当前登录用户
-        Long userId = tokenService.getLoginUser().getUserid();
-        AppUser appUser = this.getById(userId);
-        List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList(
-                dto.getUserAnswerOneDTOList(), AppUserQuestion.class);
-        // 查询用户已填写的答案
-        List<AppUserQuestion> baseAppUserQuestionList = appUserQuestionService.lambdaQuery()
-                .eq(AppUserQuestion::getAppUserId, appUser.getUserId())
-                .list();
-        if (CollUtils.isNotEmpty(baseAppUserQuestionList)) {
-            // 根据类型更新答案
-            for (AppUserQuestion appUserQuestion : appUserQuestionList) {
+        if (tokenService.getLoginUser()==null){
+            // 获取当前登录用户
+            if (org.springframework.util.StringUtils.hasLength(dto.getDevice())){
+                SysUser sysUser = new SysUser();
+                AppUser appUser = new AppUser();
+                // 注册用户信息
+                sysUser = new SysUser();
+                String nickname = "用户" + IdUtil.fastSimpleUUID().substring(0, 6);
+                sysUser.setNickName(nickname);
+                sysUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg");
+                sysUser.setUserName(dto.getDevice());
+                sysUser.setUserType("01"); // app用户
+                // 设置默认密码123456
+                sysUser.setPassword(SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD));
 
-                Optional<AppUserQuestion> baseAppUserQuestionOptional = baseAppUserQuestionList.stream()
-                        .filter(baseAppUserQuestion -> baseAppUserQuestion.getType()
-                                .equals(appUserQuestion.getType())).findFirst();
-                baseAppUserQuestionOptional.ifPresent(
-                        userQuestion -> appUserQuestion.setId(userQuestion.getId()));
+                R<SysUser> registerResult = remoteUserService.registerAppUserInfo(sysUser,
+                        SecurityConstants.INNER);
+                if (registerResult.getCode() == Constants.FAIL) {
+                    throw new ServiceException(registerResult.getMsg());
+                }
+                SysUser sysUserRes = registerResult.getData();
+                appUser = new AppUser();
+                appUser.setUserId(sysUserRes.getUserId());
+                appUser.setNickname(nickname);
+                appUser.setAvatar("https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/Logo%E7%A1%AE%E8%AE%A4%E7%89%88%281%29.jpg"); // TODO 待完善默认头像
+                appUser.setBalance(BigDecimal.ZERO);
+                appUser.setSanskritFlag(DisabledEnum.NO.getCode());
+                appUser.setBalance(BigDecimal.ZERO);
+                appUser.setIncome(BigDecimal.ZERO);
+                appUser.setTotalEnergyValue(0);
+                appUser.setRegisterTime(LocalDateTime.now());
+                appUser.setLevelSettingId(TreeLevelEnum.SEED.getCode());
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+                String format = simpleDateFormat.format(new Date());
+                // 生成四位随机数字
+                String randomCode = String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
+                appUser.setCode("YH"+format+randomCode);
+                this.save(appUser);
+                    Long userId = appUser.getId();
+                    List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList(
+                            dto.getUserAnswerOneDTOList(), AppUserQuestion.class);
+                    // 查询用户已填写的答案
+                    List<AppUserQuestion> baseAppUserQuestionList = appUserQuestionService.lambdaQuery()
+                            .eq(AppUserQuestion::getAppUserId, appUser.getUserId())
+                            .list();
+                    if (CollUtils.isNotEmpty(baseAppUserQuestionList)) {
+                        // 根据类型更新答案
+                        for (AppUserQuestion appUserQuestion : appUserQuestionList) {
+
+                            Optional<AppUserQuestion> baseAppUserQuestionOptional = baseAppUserQuestionList.stream()
+                                    .filter(baseAppUserQuestion -> baseAppUserQuestion.getType()
+                                            .equals(appUserQuestion.getType())).findFirst();
+                            baseAppUserQuestionOptional.ifPresent(
+                                    userQuestion -> appUserQuestion.setId(userQuestion.getId()));
+                            appUserQuestion.setAppUserId(userId);
+                        }
+                    }
+                    for (AppUserQuestion appUserQuestion : appUserQuestionList) {
+                        appUserQuestion.setAppUserId(userId);
+                    }
+                    appUserQuestionService.saveOrUpdateBatch(appUserQuestionList);
+                    // 筛选答案为是和偶尔有的问题,为用户设置对应的标签
+                    List<AppUserQuestion> appUserQuestionYesList = appUserQuestionList.stream()
+                            .filter(appUserQuestion -> appUserQuestion.getAnswer().equals("1")
+                                    || appUserQuestion.getAnswer().equals("3")).collect(Collectors.toList());
+                    appUser.setTagId(dto.getTagIds());
+                    this.updateById(appUser);
+                }
+        }else{
+            Long userId = tokenService.getLoginUser().getUserid();
+            AppUser appUser = this.getById(userId);
+            List<AppUserQuestion> appUserQuestionList = BeanUtils.copyList(
+                    dto.getUserAnswerOneDTOList(), AppUserQuestion.class);
+            // 查询用户已填写的答案
+            List<AppUserQuestion> baseAppUserQuestionList = appUserQuestionService.lambdaQuery()
+                    .eq(AppUserQuestion::getAppUserId, appUser.getUserId())
+                    .list();
+            if (CollUtils.isNotEmpty(baseAppUserQuestionList)) {
+                // 根据类型更新答案
+                for (AppUserQuestion appUserQuestion : appUserQuestionList) {
+
+                    Optional<AppUserQuestion> baseAppUserQuestionOptional = baseAppUserQuestionList.stream()
+                            .filter(baseAppUserQuestion -> baseAppUserQuestion.getType()
+                                    .equals(appUserQuestion.getType())).findFirst();
+                    baseAppUserQuestionOptional.ifPresent(
+                            userQuestion -> appUserQuestion.setId(userQuestion.getId()));
+                    appUserQuestion.setAppUserId(userId);
+                }
+            }
+            for (AppUserQuestion appUserQuestion : appUserQuestionList) {
                 appUserQuestion.setAppUserId(userId);
             }
+            appUserQuestionService.saveOrUpdateBatch(appUserQuestionList);
+            // 筛选答案为是和偶尔有的问题,为用户设置对应的标签
+            List<AppUserQuestion> appUserQuestionYesList = appUserQuestionList.stream()
+                    .filter(appUserQuestion -> appUserQuestion.getAnswer().equals("1")
+                            || appUserQuestion.getAnswer().equals("3")).collect(Collectors.toList());
+            appUser.setTagId(dto.getTagIds());
+            this.updateById(appUser);
         }
-        for (AppUserQuestion appUserQuestion : appUserQuestionList) {
-            appUserQuestion.setAppUserId(userId);
-        }
-        appUserQuestionService.saveOrUpdateBatch(appUserQuestionList);
-        // 筛选答案为是和偶尔有的问题,为用户设置对应的标签
-        List<AppUserQuestion> appUserQuestionYesList = appUserQuestionList.stream()
-                .filter(appUserQuestion -> appUserQuestion.getAnswer().equals("1")
-                        || appUserQuestion.getAnswer().equals("3")).collect(Collectors.toList());
-        appUser.setTagId(dto.getTagIds());
-        this.updateById(appUser);
+
+
     }
 
     /**

--
Gitblit v1.7.1