he2802 2 anni fa
parent
commit
96e6a86a25
31 ha cambiato i file con 422 aggiunte e 68 eliminazioni
  1. 54 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  2. 6 0
      zhongzheng-admin-saas/src/main/resources/application-dev.yml
  3. 7 1
      zhongzheng-admin-saas/src/main/resources/application-pre.yml
  4. 7 1
      zhongzheng-admin-saas/src/main/resources/application-prod.yml
  5. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  6. 13 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  7. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  8. 7 1
      zhongzheng-admin/src/main/resources/application-dev.yml
  9. 7 1
      zhongzheng-admin/src/main/resources/application-pre.yml
  10. 6 0
      zhongzheng-admin/src/main/resources/application-prod.yml
  11. 1 0
      zhongzheng-admin/src/main/resources/application-trial.yml
  12. 6 0
      zhongzheng-api/src/main/resources/application-dev.yml
  13. 7 1
      zhongzheng-api/src/main/resources/application-pre.yml
  14. 7 1
      zhongzheng-api/src/main/resources/application-prod.yml
  15. 1 1
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/TopSysUser.java
  16. 8 2
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/aspectj/LogAspect.java
  17. 16 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseFileServiceImpl.java
  18. 2 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java
  19. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IUserPeriodService.java
  20. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  21. 23 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/SyncUserChapterExport.java
  22. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/domain/TopNuoMplatformLog.java
  23. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/ITopNuoMplatformLogService.java
  24. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/NuonuoService.java
  25. 22 7
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/NuonuoServiceImpl.java
  26. 128 29
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/TopNuoMplatformLogServiceImpl.java
  27. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopCourseEducationTypeVo.java
  28. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/user/domain/TopSysUserPost.java
  29. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/user/domain/TopSysUserRole.java
  30. 23 14
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/user/service/impl/TopSysUserServiceImpl.java
  31. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionActivityMapper.xml

+ 54 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.controller.schedule;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.framework.web.service.AsyncService;
+import com.zhongzheng.framework.web.service.WxLoginService;
+import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
+import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
+import com.zhongzheng.modules.schedule.service.IScheduleService;
+import com.zhongzheng.modules.sdk.service.ITopNuoMplatformLogService;
+import com.zhongzheng.modules.user.bo.UserQueryBo;
+import com.zhongzheng.modules.user.bo.UserWxFollowQueryBo;
+import com.zhongzheng.modules.wx.bo.WxLoginBody;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 定时任务
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Api(value = "定时任务", tags = {"定时任务管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/sys/common")
+public class ScheduleController extends BaseController {
+
+    private final ITopNuoMplatformLogService iTopNuoMplatformLogService;
+
+    @ApiOperation("发票开票结果更新")
+    @GetMapping("/distributionRebate")
+    public AjaxResult distributionRebate(UserQueryBo bo){
+        iTopNuoMplatformLogService.updateByBatch();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("重开发票开票")
+    @GetMapping("/reOpenMplatform")
+    public AjaxResult reOpenMplatform(){
+        iTopNuoMplatformLogService.reOpenMplatform();
+        return AjaxResult.success();
+    }
+}

+ 6 - 0
zhongzheng-admin-saas/src/main/resources/application-dev.yml

@@ -133,6 +133,7 @@ oldStudySys:
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -146,3 +147,8 @@ distributionOldPay:
 handouts:
     savePath: http://192.168.1.7:9090/course/handouts/save
     updatePath: http://192.168.1.7:9090/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 7 - 1
zhongzheng-admin-saas/src/main/resources/application-pre.yml

@@ -133,6 +133,7 @@ oldStudySys:
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
@@ -145,4 +146,9 @@ distributionOldPay:
 
 handouts:
     savePath: https://attach.xyyxt.net/course/handouts/save
-    updatePath: https://attach.xyyxt.net/course/handouts/edit
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 7 - 1
zhongzheng-admin-saas/src/main/resources/application-prod.yml

@@ -133,6 +133,7 @@ oldStudySys:
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
@@ -145,4 +146,9 @@ distributionOldPay:
 
 handouts:
     savePath: https://attach.xyyxt.net/course/handouts/save
-    updatePath: https://attach.xyyxt.net/course/handouts/edit
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -402,7 +402,7 @@ public class CommonController extends BaseController {
         return AjaxResult.success("成功", dualAuth);
     }
 
-    @ApiOperation("decodeTel")
+    @ApiOperation("decodeTel加密")
     @GetMapping("common/free/decodeTel")
     public AjaxResult<String> decodeTel(String key) {
         return AjaxResult.success("成功", EncryptHandler.decrypt(key));

+ 13 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -20,6 +20,8 @@ import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.modules.base.bo.UserProfileQueryBo;
 import com.zhongzheng.modules.base.vo.UserProfileExportGaiVo;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.service.*;
 import com.zhongzheng.modules.grade.vo.*;
@@ -75,6 +77,8 @@ public class ClassGradeController extends BaseController {
 
     private final RedisCache redisCache;
 
+    private final IGoodsService iGoodsService;
+
     /**
      * 查询班级列表
      */
@@ -681,5 +685,14 @@ public class ClassGradeController extends BaseController {
         return AjaxResult.success(iClassGradeService.queryOfficialGradeCount(bo));
     }
 
+    @ApiOperation("导出商品的课程结构")
+    @GetMapping("/exportGoodsMenuExcel")
+    public AjaxResult<List<ClassNpUserInfoVo>> exportGoodsMenuExcel(UserPeriodEditBo bo) {
+        GoodsVo goodsVo = iGoodsService.queryById(bo.getGoodsId());
+        List<SyncUserChapterExport> list = iUserPeriodService.exportGoodsMenuExcel(bo);
+        List<SyncUserChapterExport> exportVos = list.stream().map(item -> BeanUtil.toBean(item,SyncUserChapterExport.class)).collect(Collectors.toList());
+        ExcelUtil<SyncUserChapterExport> util = new ExcelUtil<SyncUserChapterExport>(SyncUserChapterExport.class);
+        return util.exportExcel(exportVos, goodsVo.getGoodsName());
+    }
 
 }

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -403,7 +403,7 @@ public class ScheduleController extends BaseController {
         //茂名市建设培训学校 680980002459417532
         //肇庆市建筑业协会 480813706424615769
 //        List<String> tenantIds = Arrays.asList("972001468256950403", "680980002459417532", "480813706424615769");
-        List<String> tenantIds = Arrays.asList("24330002165216496");
+        List<String> tenantIds = Arrays.asList("335322347347308");
         tenantIds.forEach(tenantId -> {
             iScheduleService.synchronizationGoodsByTenantId(tenantId);
         });

+ 7 - 1
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -133,6 +133,7 @@ oldStudySys:
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -146,4 +147,9 @@ distributionOldPay:
 
 handouts:
     savePath: http://192.168.1.7:9090/course/handouts/save
-    updatePath: http://192.168.1.7:9090/course/handouts/edit
+    updatePath: http://192.168.1.7:9090/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 7 - 1
zhongzheng-admin/src/main/resources/application-pre.yml

@@ -133,6 +133,7 @@ oldStudySys:
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -145,4 +146,9 @@ distributionOldPay:
 
 handouts:
     savePath: https://attach.xyyxt.net/course/handouts/save
-    updatePath: https://attach.xyyxt.net/course/handouts/edit
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 6 - 0
zhongzheng-admin/src/main/resources/application-prod.yml

@@ -133,6 +133,7 @@ oldStudySys:
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
@@ -146,3 +147,8 @@ distributionOldPay:
 handouts:
     savePath: https://attach.xyyxt.net/course/handouts/save
     updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 1 - 0
zhongzheng-admin/src/main/resources/application-trial.yml

@@ -142,6 +142,7 @@ oldStudySys:
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http:///www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan

+ 6 - 0
zhongzheng-api/src/main/resources/application-dev.yml

@@ -136,6 +136,7 @@ oldStudySys:
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -149,3 +150,8 @@ distributionOldPay:
 handouts:
     savePath: http://192.168.1.7:9090/course/handouts/save
     updatePath: http://192.168.1.7:9090/course/handouts/edit
+
+Nuonuo:
+    host: https://sandbox.nuonuocs.cn/open/v1/services
+    APPkey: SD39149760
+    APPSecret: SD168A248B2844E0

+ 7 - 1
zhongzheng-api/src/main/resources/application-pre.yml

@@ -133,6 +133,7 @@ oldStudySys:
     classUserListPath: http://gdxypx.xy.com/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: http://gdxypx.xy.com/System/BussinessApi/OpenClass
     salePassword: http://gdxypx.xy.com/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://gdxypx.xy.com/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
@@ -145,4 +146,9 @@ distributionOldPay:
 
 handouts:
     savePath: https://attach.xyyxt.net/course/handouts/save
-    updatePath: https://attach.xyyxt.net/course/handouts/edit
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sandbox.nuonuocs.cn/open/v1/services
+    APPkey: SD39149760
+    APPSecret: SD168A248B2844E0

+ 7 - 1
zhongzheng-api/src/main/resources/application-prod.yml

@@ -145,6 +145,7 @@ oldStudySys:
     classUserListPath: https://www.xyyxt.net/System/BussinessApi/UserCourseCategoryListcno
     classOpenPath: https://www.xyyxt.net/System/BussinessApi/OpenClass
     salePassword: http://www.xyyxt.net/WitSystem/BussinessApi/GetSaleInfo
+    updateInvoicePath: http://www.xyyxt.net/system/BussinessApi/UpdateInvoiceData
 
 officialPush:
     infoPath: https://jypt.gdcic.net/organjxjy/ShangBaoMingdan
@@ -157,4 +158,9 @@ distributionOldPay:
 
 handouts:
     savePath: https://attach.xyyxt.net/course/handouts/save
-    updatePath: https://attach.xyyxt.net/course/handouts/edit
+    updatePath: https://attach.xyyxt.net/course/handouts/edit
+
+Nuonuo:
+    host: https://sdk.nuonuo.com/open/v1/services
+    APPkey: 39149760
+    APPSecret: 07168A248B2844E0

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/TopSysUser.java

@@ -148,7 +148,7 @@ public class TopSysUser implements Serializable
 
     /** 角色组 */
     @TableField(exist = false)
-    private Long[] roleIds;
+    private List<Long> roleIds;
 
     /** 角色名称 */
     @TableField(exist = false)

+ 8 - 2
zhongzheng-framework/src/main/java/com/zhongzheng/framework/aspectj/LogAspect.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.framework.aspectj;
 
+import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.useragent.UserAgent;
 import cn.hutool.http.useragent.UserAgentUtil;
@@ -149,7 +150,10 @@ public class LogAspect
             String className = joinPoint.getTarget().getClass().getName();
             String methodName = joinPoint.getSignature().getName();
             operLog.setMethod(className + "." + methodName + "()");
-            operLog.setTenantId(Long.parseLong(ServletUtils.getRequest().getHeader("TenantId")));
+            String TenantId = ServletUtils.getRequest().getHeader("TenantId");
+            if(Validator.isNotEmpty(TenantId)){
+                operLog.setTenantId(Long.parseLong(TenantId));
+            }
             // 设置请求方式
             operLog.setRequestMethod(ServletUtils.getRequest().getMethod());
             // 处理设置注解上的参数
@@ -183,7 +187,9 @@ public class LogAspect
         operLog.setOperatorType(log.operatorType().ordinal());
         // 设置浏览器
         UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
-        operLog.setBrowser(userAgent.getBrowser().getName());
+        if(Validator.isNotEmpty(userAgent)){
+            operLog.setBrowser(userAgent.getBrowser().getName());
+        }
         // 是否需要保存request,参数和值
         if (log.isSaveRequestData())
         {

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseFileServiceImpl.java

@@ -5,9 +5,11 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
+import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
@@ -19,6 +21,8 @@ import com.zhongzheng.modules.course.mapper.CourseFileMapper;
 import com.zhongzheng.modules.course.service.ICourseFileService;
 import com.zhongzheng.modules.course.service.ICourseHandoutsService;
 import com.zhongzheng.modules.course.vo.CourseFileVo;
+import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.service.IGoodsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -40,6 +44,8 @@ public class CourseFileServiceImpl extends ServiceImpl<CourseFileMapper, CourseF
 
     @Autowired
     private ICourseHandoutsService iCourseHandoutsService;
+    @Autowired
+    private IGoodsService iGoodsService;
     @Value("${handouts.savePath}")
     private String SAVE_HANDOUTS;
     @Value("${handouts.updatePath}")
@@ -119,6 +125,16 @@ public class CourseFileServiceImpl extends ServiceImpl<CourseFileMapper, CourseF
 
     @Override
     public boolean editHandouts(CourseHandoutsEditBo bo) {
+        if (ObjectUtils.isNotNull(bo.getStatus()) && (bo.getStatus() == -1 || bo.getStatus() == 0)){
+            //删除校验
+            int count = iGoodsService
+                    .count(new LambdaQueryWrapper<Goods>()
+                    .eq(Goods::getHandoutsId, bo.getHandoutsId())
+                    .eq(Goods::getStatus, 1));
+            if (count > 0){
+                throw new CustomException("已有商品关联此讲义,不能改动!");
+            }
+        }
         iCourseHandoutsService.update(new LambdaUpdateWrapper<CourseHandouts>().set(CourseHandouts::getUpdateStatus,0).eq(CourseHandouts::getHandoutsId,bo.getHandoutsId()));
         Long nowTime = DateUtils.getNowTime();
         String sign = ToolsUtils.EncoderByMd5(nowTime.toString() + "pubilc2022");

+ 2 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java

@@ -1,14 +1,12 @@
 package com.zhongzheng.modules.goods.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
+
 import java.io.Serializable;
-import java.util.Date;
 import java.math.BigDecimal;
-import com.zhongzheng.common.annotation.Excel;
 
 /**
  * 商品对象 goods
@@ -103,6 +101,7 @@ private static final long serialVersionUID=1L;
     /** 试卷试做设置 */
     private String goodsExamConfig;
 
+    @TableField(updateStrategy=FieldStrategy.IGNORED)
     private Long handoutsId;
 
     /** 补考或前培开始时间 */

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IUserPeriodService.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.grade.service;
 
 import com.zhongzheng.modules.grade.domain.UserPeriod;
+import com.zhongzheng.modules.grade.vo.SyncUserChapterExport;
 import com.zhongzheng.modules.grade.vo.SyncUserCourseStudyRec;
 import com.zhongzheng.modules.grade.vo.UserPeriodVo;
 import com.zhongzheng.modules.grade.bo.UserPeriodQueryBo;
@@ -69,4 +70,6 @@ public interface IUserPeriodService extends IService<UserPeriod> {
 	Long todayStudySectionNum(UserPeriodQueryBo bo);
 
 	boolean syncStudyLogToOld(UserPeriodEditBo bo);
+
+	List<SyncUserChapterExport> exportGoodsMenuExcel(UserPeriodEditBo bo);
 }

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java

@@ -21,11 +21,13 @@ import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.modules.base.service.ICertificateTpService;
 import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
+import com.zhongzheng.modules.course.bo.CourseChapterSectionQueryBo;
 import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.CourseEducationType;
 import com.zhongzheng.modules.course.domain.CourseProjectType;
 import com.zhongzheng.modules.course.service.*;
+import com.zhongzheng.modules.course.vo.CourseChapterSectionVo;
 import com.zhongzheng.modules.course.vo.CourseMenuVo;
 import com.zhongzheng.modules.course.vo.CourseModuleChapterVo;
 import com.zhongzheng.modules.course.vo.CourseVo;
@@ -57,6 +59,7 @@ import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.system.domain.SysOldOrg;
 import com.zhongzheng.modules.system.service.ISysOldOrgService;
+import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
 import com.zhongzheng.modules.user.domain.UserStudyRecordPhoto;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserStudyRecordPhotoService;
@@ -71,6 +74,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
+import java.text.DecimalFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -164,6 +168,9 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
     @Autowired
     private ICourseProjectTypeService iCourseProjectTypeService;
 
+    @Autowired
+    private ICourseChapterSectionService iCourseChapterSectionService;
+
     @Value("${oldStudySys.syncPath}")
     private String SYNC_PATH;
 
@@ -847,6 +854,50 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
         return true;
     }
 
+    @Override
+    public List<SyncUserChapterExport> exportGoodsMenuExcel(UserPeriodEditBo bo) {
+        List<SyncUserChapterExport> ChapterList = new ArrayList<>();
+        GoodsCourseQueryBo goodsCourseQueryBo = new GoodsCourseQueryBo();
+        goodsCourseQueryBo.setGoodsId(bo.getGoodsId());
+        List<CourseVo> courseVoList = iGoodsCourseService.selectList(goodsCourseQueryBo);
+        int NO = 1;
+        Long time = 0L;
+        for(CourseVo courseVo : courseVoList){
+            CourseMenuQueryBo menuQueryBo = new CourseMenuQueryBo();
+            menuQueryBo.setCourseId(courseVo.getCourseId());
+            List<CourseMenuVo> courseMenuVoList = iCourseMenuService.selectList(menuQueryBo);
+            for(CourseMenuVo courseMenuVo:courseMenuVoList){
+                if(courseMenuVo.getType()==1){
+                    //获取章信息
+                    List<CourseModuleChapterVo> courseModuleChapterVoList = iCourseModuleChapterService.getListById(courseMenuVo.getMenuId());
+
+                    for(CourseModuleChapterVo courseModuleChapterVo:courseModuleChapterVoList){
+                        SyncUserChapterExport chapterExport = new SyncUserChapterExport();
+                        time = 0L;
+                        chapterExport.setChapterName(courseModuleChapterVo.getName());
+                        chapterExport.setNo(NO);
+                        NO++;
+                        List<CourseChapterSectionVo> sList = iCourseChapterSectionService.getListById(courseModuleChapterVo.getChapterId());
+                        for(CourseChapterSectionVo sectionVo : sList){
+                            time+=sectionVo.getDurationTime();
+                        }
+                        int min = 0;
+                        String classHour = "0";
+                        if(time.intValue()>0){
+                            min = (int)Math.ceil(time.intValue()/60);
+                            DecimalFormat df=new DecimalFormat("0.0");//设置保留位数
+                            classHour = df.format((float)min/45);
+                        }
+                        chapterExport.setTime(min);
+                        chapterExport.setClassHour(classHour);
+                        ChapterList.add(chapterExport);
+                    };
+                }
+            };
+        }
+        return ChapterList;
+    }
+
     /**
      * 打回操作
      *

+ 23 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/SyncUserChapterExport.java

@@ -0,0 +1,23 @@
+package com.zhongzheng.modules.grade.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import lombok.Data;
+import org.apache.poi.hpsf.Decimal;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class SyncUserChapterExport {
+    private static final long serialVersionUID = 1L;
+    @Excel(name = "序号")
+    private Integer no;
+    @Excel(name = "课件名称")
+    private String ChapterName;
+    @Excel(name = "时长(分钟)")
+    private Integer time;
+    @Excel(name = "学时数量(个)")
+    private String classHour;
+
+
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/domain/TopNuoMplatformLog.java

@@ -57,4 +57,9 @@ private static final long serialVersionUID=1L;
     private String failCause;
     private String tenantId;
     private String orderNoList;
+    /** 推送老系统时间 */
+    private Long pushTime;
+    /** 推送结果 */
+    private String pushResult;
+    private Integer pushStatus;
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/ITopNuoMplatformLogService.java

@@ -52,5 +52,7 @@ public interface ITopNuoMplatformLogService extends IService<TopNuoMplatformLog>
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
-	Boolean updateByBatch(TopNuoMplatformLogEditBo bo);
+	Boolean updateByBatch();
+
+	Boolean reOpenMplatform();
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/NuonuoService.java

@@ -19,4 +19,6 @@ public interface NuonuoService {
     String openMplatform(Map<String,String> params);
 
     String queryInvoiceResult(List<String> snList);
+
+    String reOpenMplatform(Map<String,String> params);
 }

+ 22 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/NuonuoServiceImpl.java

@@ -40,11 +40,13 @@ import java.util.zip.ZipOutputStream;
 @Service
 public class NuonuoServiceImpl implements NuonuoService {
     private static final Logger LOGGER = LoggerFactory.getLogger(NuonuoServiceImpl.class);
+    @Value("${Nuonuo.APPkey}")
+    private String APPkey;
+    @Value("${Nuonuo.APPSecret}")
+    private String APPSecret;
 
-    private String APPkey = "39149760";
-
-    private String APPSecret = "07168A248B2844E0";
-
+    @Value("${Nuonuo.host}")
+    private String NuonuoHost;
 
     @Autowired
     private RedisCache redisCache;
@@ -73,11 +75,10 @@ public class NuonuoServiceImpl implements NuonuoService {
         String taxnum = ""; // 授权企业税号
         String method = "nuonuo.OpeMplatform.requestBillingNew"; // API方法名
         String token = getAccessToken(); // 访问令牌
-        String url = "https://sdk.nuonuo.com/open/v1/services"; // SDK请求地址
+        String url = NuonuoHost; // SDK请求地址
         String content = params.get("content");
         String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
         String result = sdk.sendPostSyncRequest(url, senid, APPkey, APPSecret, token, taxnum, method, content);
-        System.out.println(result);
         return result;
     }
 
@@ -91,9 +92,23 @@ public class NuonuoServiceImpl implements NuonuoService {
         params.put("serialNos",snList);
         params.put("isOfferInvoiceDetail",1);
         String content = JSONObject.toJSONString(params);
-        String url = "https://sdk.nuonuo.com/open/v1/services"; // SDK请求地址
+        String url = NuonuoHost; // SDK请求地址
+        String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
+        String result = sdk.sendPostSyncRequest(url, senid, APPkey, APPSecret, token, taxnum, method, content);
+        return result;
+    }
+
+    @Override
+    public String reOpenMplatform(Map<String, String> params) {
+        NNOpenSDK sdk = NNOpenSDK.getIntance();
+        String taxnum = ""; // 授权企业税号
+        String method = "nuonuo.OpeMplatform.reInvoice"; // API方法名
+        String token = getAccessToken(); // 访问令牌
+        String content = JSONObject.toJSONString(params);
+        String url = NuonuoHost; // SDK请求地址
         String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
         String result = sdk.sendPostSyncRequest(url, senid, APPkey, APPSecret, token, taxnum, method, content);
+        System.out.println(result);
         return result;
     }
 }

+ 128 - 29
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/TopNuoMplatformLogServiceImpl.java

@@ -3,11 +3,17 @@ package com.zhongzheng.modules.sdk.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.ToolsUtils;
+import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
+import com.zhongzheng.modules.grade.service.impl.UserPeriodServiceImpl;
+import com.zhongzheng.modules.order.domain.OrderGoodsRefund;
 import com.zhongzheng.modules.sdk.bo.TopNuoMplatformLogAddBo;
 import com.zhongzheng.modules.sdk.bo.TopNuoMplatformLogEditBo;
 import com.zhongzheng.modules.sdk.bo.TopNuoMplatformLogQueryBo;
@@ -16,13 +22,18 @@ import com.zhongzheng.modules.sdk.mapper.TopNuoMplatformLogMapper;
 import com.zhongzheng.modules.sdk.service.ITopNuoMplatformLogService;
 import com.zhongzheng.modules.sdk.service.NuonuoService;
 import com.zhongzheng.modules.sdk.vo.TopNuoMplatformLogVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.Page;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -35,8 +46,12 @@ import java.util.stream.Collectors;
 @Service
 public class TopNuoMplatformLogServiceImpl extends ServiceImpl<TopNuoMplatformLogMapper, TopNuoMplatformLog> implements ITopNuoMplatformLogService {
 
+    private static Logger log = LoggerFactory.getLogger(TopNuoMplatformLogServiceImpl.class);
+
     @Autowired
     private NuonuoService nuonuoService;
+    @Value("${oldStudySys.updateInvoicePath}")
+    private String UpdateInvoice_PATH;
 
     @Override
     public TopNuoMplatformLogVo queryById(Long id){
@@ -81,6 +96,7 @@ public class TopNuoMplatformLogServiceImpl extends ServiceImpl<TopNuoMplatformLo
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Map<String, String>  insertByAddBo(TopNuoMplatformLogAddBo bo) {
         if(Validator.isEmpty(bo.getOrderNo())||Validator.isEmpty(bo.getTenantId())||Validator.isEmpty(bo.getContent())){
             throw new CustomException("参数缺少");
@@ -98,35 +114,39 @@ public class TopNuoMplatformLogServiceImpl extends ServiceImpl<TopNuoMplatformLo
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
         if(this.save(add)){
-            Long id = add.getId();
-            Map<String,String> params = new HashMap<>();
-            params.put("content",bo.getContent());
-            String result = nuonuoService.openMplatform(params);
-            TopNuoMplatformLog update = new TopNuoMplatformLog();
-            update.setId(id);
-            update.setResult(result);
-;           JSONObject jsonObject = (JSONObject) JSONObject.parse(result);
-            String code = String.valueOf(jsonObject.get("code"));
-            String describe = String.valueOf(jsonObject.get("describe"));
-            update.setResultCode(code);
-            Map<String,String> rs = new HashMap<>();
-            if("E0000".equals(code)){
-                JSONObject resultObject = jsonObject.getJSONObject("result");
-                String invoiceSerialNum = String.valueOf(resultObject.get("invoiceSerialNum"));
-                update.setInvoiceSerialNum(invoiceSerialNum);
-                update.setStatus(1);
-                rs.put("invoiceSerialNum",invoiceSerialNum);
-                update.setUpdateTime(DateUtils.getNowTime());
-                updateById(update);
+            try{
+                Long id = add.getId();
+                Map<String,String> params = new HashMap<>();
+                params.put("content",bo.getContent());
+                String result = nuonuoService.openMplatform(params);
+                TopNuoMplatformLog update = new TopNuoMplatformLog();
+                update.setId(id);
+                update.setResult(result);
+                JSONObject jsonObject = (JSONObject) JSONObject.parse(result);
+                String code = String.valueOf(jsonObject.get("code"));
+                String describe = String.valueOf(jsonObject.get("describe"));
+                update.setResultCode(code);
+                Map<String,String> rs = new HashMap<>();
+                if("E0000".equals(code)){
+                    JSONObject resultObject = jsonObject.getJSONObject("result");
+                    String invoiceSerialNum = String.valueOf(resultObject.get("invoiceSerialNum"));
+                    update.setInvoiceSerialNum(invoiceSerialNum);
+                    update.setStatus(1);
+                    rs.put("invoiceSerialNum",invoiceSerialNum);
+                    update.setUpdateTime(DateUtils.getNowTime());
+                    updateById(update);
 
-                rs.put("code",code);
-                rs.put("describe",describe);
-                return rs;
-            }else{
-                update.setStatus(-1);
-                update.setUpdateTime(DateUtils.getNowTime());
-                updateById(update);
-                throw new CustomException(result);
+                    rs.put("code",code);
+                    rs.put("describe",describe);
+                    return rs;
+                }else{
+                    update.setStatus(-1);
+                    update.setUpdateTime(DateUtils.getNowTime());
+                    updateById(update);
+                    throw new CustomException(result);
+                }
+            }catch (Exception e){
+                throw new CustomException("开票失败");
             }
         }
         throw new CustomException("新增失败");
@@ -158,7 +178,7 @@ public class TopNuoMplatformLogServiceImpl extends ServiceImpl<TopNuoMplatformLo
     }
 
     @Override
-    public Boolean updateByBatch(TopNuoMplatformLogEditBo bo) {
+    public Boolean updateByBatch() {
         TopNuoMplatformLogQueryBo queryBo = new TopNuoMplatformLogQueryBo();
         queryBo.setStatus(1);
         List<TopNuoMplatformLogVo> list = queryList(queryBo);
@@ -168,6 +188,85 @@ public class TopNuoMplatformLogServiceImpl extends ServiceImpl<TopNuoMplatformLo
             snList.add(vo.getInvoiceSerialNum());
             if(snList.size()==10||i==(list.size()-1)){
                 String result = nuonuoService.queryInvoiceResult(snList);
+                JSONObject jsonObject = (JSONObject) JSONObject.parse(result);
+                String code = String.valueOf(jsonObject.get("code"));
+                JSONArray josnList = jsonObject.getJSONArray("result");
+                if("E0000".equals(code)){
+                    for(int j=0;j<josnList.size();j++) {
+                        LambdaUpdateWrapper<TopNuoMplatformLog> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                        JSONObject itemObject =josnList.getJSONObject(j);
+                        String serialNo = String.valueOf(itemObject.get("serialNo"));
+                        String orderNo = String.valueOf(itemObject.get("orderNo"));
+                        String status = String.valueOf(itemObject.get("status"));
+                        String pdfUrl = String.valueOf(itemObject.get("pdfUrl"));
+                        String failCause = String.valueOf(itemObject.get("failCause"));
+                        String oldStatus = "1";
+                        objectLambdaUpdateWrapper.eq(TopNuoMplatformLog::getInvoiceSerialNum, serialNo);
+                        //开单完成状态
+                        if("2".equals(status)){
+                            oldStatus = "1";
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getPdfUrl, pdfUrl);
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getStatus, 2);
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getUpdateTime,DateUtils.getNowTime());
+                        }else{
+                            //失败
+                            oldStatus = "2";
+                            pdfUrl = "";
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getStatus, Integer.parseInt(status));
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getFailCause, failCause);
+                        }
+                        Map<String, String> params = new HashMap<>();
+                        Long nowTime = DateUtils.getNowTime();
+                        String sign = ToolsUtils.EncoderByMd5(nowTime.toString()+"pubilc2022");
+                        params.put("stamp", nowTime.toString());
+                        params.put("sign", sign);
+                        params.put("status", oldStatus);
+                        params.put("orderno", orderNo);
+                        params.put("pdfurl", pdfUrl);
+                        String respone = "";
+                        log.info("发票推送系统"+params,"");
+                        try {
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getPushStatus, 1);
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getPushTime, DateUtils.getNowTime());
+                            respone = HttpUtils.postFormBody(UpdateInvoice_PATH, params);
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getPushResult, respone);
+                            if (!respone.contains("\"Status\":true")) {
+                                objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getPushStatus, -1);
+                                this.update(null, objectLambdaUpdateWrapper);
+                //                throw new CustomException("同步请求错误"+respone);
+                            }
+                        } catch (IOException e) {
+                            objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getPushStatus, -1);
+                            this.update(null, objectLambdaUpdateWrapper);
+                //            throw new CustomException("同步请求错误"+e.getMessage());
+                        }
+                        this.update(null, objectLambdaUpdateWrapper);
+                    }
+                }
+                snList.clear();
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public Boolean reOpenMplatform() {
+        TopNuoMplatformLogQueryBo queryBo = new TopNuoMplatformLogQueryBo();
+        queryBo.setStatus(22);
+        List<TopNuoMplatformLogVo> list = queryList(queryBo);
+        for(int i=0;i<list.size();i++){
+            TopNuoMplatformLogVo vo = list.get(i);
+            Map<String,String> params = new HashMap<>();
+            params.put("fpqqlsh",vo.getInvoiceSerialNum());
+            String result = nuonuoService.reOpenMplatform(params);
+            JSONObject jsonObject = (JSONObject) JSONObject.parse(result);
+            String code = String.valueOf(jsonObject.get("code"));
+            if("E0000".equals(code)){
+                LambdaUpdateWrapper<TopNuoMplatformLog> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                objectLambdaUpdateWrapper.eq(TopNuoMplatformLog::getInvoiceSerialNum, vo.getInvoiceSerialNum());
+                objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getStatus, 1);
+                objectLambdaUpdateWrapper.set(TopNuoMplatformLog::getPushTime, DateUtils.getNowTime());
+                this.update(null, objectLambdaUpdateWrapper);
             }
         }
         return null;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopCourseEducationTypeVo.java

@@ -47,6 +47,8 @@ public class TopCourseEducationTypeVo {
 	private String tireStatus;
 	@ApiModelProperty("方案名称")
 	private String schemeName;
+
 	@ApiModelProperty("业务层级列表")
 	private List<TopCourseBusinessVo> businessList;
+
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/user/domain/TopSysUserPost.java

@@ -21,7 +21,7 @@ public class TopSysUserPost implements Serializable {
 private static final long serialVersionUID=1L;
 
     /** 用户ID */
-    @TableId(value = "user_id")
+    @TableField(value = "user_id")
     private Long userId;
     /** 岗位ID */
     @TableField(value = "post_id")

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/user/domain/TopSysUserRole.java

@@ -24,7 +24,7 @@ public class TopSysUserRole implements Serializable {
 private static final long serialVersionUID=1L;
 
     /** 用户ID */
-    @TableId(value = "user_id")
+    @TableField(value = "user_id")
     private Long userId;
     /** 角色ID */
     @TableField(value = "role_id")

+ 23 - 14
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/user/service/impl/TopSysUserServiceImpl.java

@@ -5,22 +5,26 @@ import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
 import com.zhongzheng.common.annotation.DataScope;
 import com.zhongzheng.common.constant.UserConstants;
+import com.zhongzheng.common.core.domain.entity.SysRole;
 import com.zhongzheng.common.core.domain.entity.TopSysUser;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
 import com.zhongzheng.modules.top.user.bo.TopSysUserAddBo;
 import com.zhongzheng.modules.top.user.bo.TopSysUserEditBo;
 import com.zhongzheng.modules.top.user.bo.TopSysUserQueryBo;
+import com.zhongzheng.modules.top.user.domain.TopSysRole;
 import com.zhongzheng.modules.top.user.domain.TopSysUserPost;
 import com.zhongzheng.modules.top.user.domain.TopSysUserRole;
 import com.zhongzheng.modules.top.user.mapper.TopSysUserMapper;
 import com.zhongzheng.modules.top.user.mapper.TopSysUserPostMapper;
 import com.zhongzheng.modules.top.user.mapper.TopSysUserRoleMapper;
+import com.zhongzheng.modules.top.user.service.ITopSysRoleService;
 import com.zhongzheng.modules.top.user.service.ITopSysUserService;
 import com.zhongzheng.modules.top.user.vo.TopSysUserVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,6 +50,9 @@ public class TopSysUserServiceImpl extends ServiceImpl<TopSysUserMapper, TopSysU
 
     @Autowired
     private TopSysUserPostMapper topSysUserPostMapper;
+
+    @Autowired
+    private ITopSysRoleService iTopSysRoleService;
     
 
     @Override
@@ -164,21 +171,23 @@ public class TopSysUserServiceImpl extends ServiceImpl<TopSysUserMapper, TopSysU
     @DataScope(deptAlias = "d", userAlias = "u")
     public List<TopSysUser> selectUserList(TopSysUser user) {
         List<TopSysUser> sysUsers = baseMapper.selectUserList(user);
-    /*    for (TopSysUser sysUser : sysUsers) {
-            List<Long> testList = new ArrayList();
-            for (SysRole role : sysUser.getRoles()) {
-                testList.add(role.getRoleId());
-            }
-            //初始化需要得到的数组
-            Long[] array = new Long[testList.size()];
-
-            //使用for循环得到数组
-            for(int i = 0; i < testList.size();i++){
-                array[i] = testList.get(i);
+        for (TopSysUser sysUser : sysUsers) {
+
+            List<TopSysUserRole> topSysUserRoles = topSysUserRoleMapper.selectList(new LambdaQueryWrapper<TopSysUserRole>().eq(TopSysUserRole::getUserId, sysUser.getUserId()));
+            if (CollectionUtils.isNotEmpty(topSysUserRoles)){
+                List<Long> collect = topSysUserRoles.stream().map(TopSysUserRole::getRoleId).collect(Collectors.toList());
+                sysUser.setRoleIds(collect);
+                List<TopSysRole> sysRoles = iTopSysRoleService.listByIds(collect);
+                if (CollectionUtils.isNotEmpty(sysRoles)){
+                    List<SysRole> collect1 = sysRoles.stream().map(x -> BeanUtil.toBean(x, SysRole.class)).collect(Collectors.toList());
+                    sysUser.setRoles(collect1);
+                }
+            }else {
+                sysUser.setRoleIds(new ArrayList<>());
+                sysUser.setRoles(new ArrayList<>());
             }
 
-            sysUser.setRoleIds(array);
-        }*/
+        }
         return sysUsers;
     }
 
@@ -321,7 +330,7 @@ public class TopSysUserServiceImpl extends ServiceImpl<TopSysUserMapper, TopSysU
      * @param user 用户对象
      */
     public void insertUserRole(TopSysUser user) {
-        Long[] roles = user.getRoleIds();
+        List<Long> roles = user.getRoleIds();
         if (Validator.isNotNull(roles)) {
             // 删除用户与角色关联
             topSysUserRoleMapper.delete(new LambdaQueryWrapper<TopSysUserRole>().eq(TopSysUserRole::getUserId,user.getUserId()));

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/distribution/DistributionActivityMapper.xml

@@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN goods g ON dag.goods_id = g.goods_id
         WHERE
         da.`status` = 1
-        AND g.`status` = 1
+        AND g.`status` = 1 AND show_status = 1
         <if test = "distributionId != null and distributionId != ''" >
             AND da.distribution_id = #{distributionId}
         </if >