he2802 3 жил өмнө
parent
commit
f2f2e1a346
16 өөрчлөгдсөн 526 нэмэгдсэн , 16 устгасан
  1. 11 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  2. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserEditBo.java
  3. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserQueryBo.java
  4. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/OpenQdyAccountBo.java
  5. 20 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/StudyAccountStatusQueryBo.java
  6. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/ClassGrade.java
  7. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeService.java
  8. 154 11
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java
  9. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  10. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeStudentVo.java
  11. 71 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/CertInfoListItem.java
  12. 33 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/PersonRoot.java
  13. 29 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/ProductRoot.java
  14. 103 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/ProductsItem.java
  15. 37 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/TrainInfosItem.java
  16. 8 3
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

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

@@ -543,4 +543,15 @@ public class ClassGradeController extends BaseController {
         map.remove("list");
         return AjaxResult.success(map);*/
     }
+
+    /**
+     * 数据批量同步到官方系统
+     */
+    @ApiOperation("数据批量同步到官方系统")
+    @PreAuthorize("@ss.hasPermi('grade:grade:edit')")
+    @Log(title = "数据批量同步到官方系统", businessType = BusinessType.UPDATE)
+    @PostMapping("/OpenQdyAccount")
+    public AjaxResult<Void> OpenQdyAccount(@RequestBody OpenQdyAccountBo bo) {
+        return toAjax(iClassGradeService.OpenQdyAccount(bo) ? 1 : 0);
+    }
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserEditBo.java

@@ -76,5 +76,5 @@ public class ClassGradeUserEditBo {
 
     /** 失败原因 */
     @ApiModelProperty("失败原因")
-    private Long reason;
+    private String reason;
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserQueryBo.java

@@ -243,4 +243,12 @@ public class ClassGradeUserQueryBo extends BaseEntity {
 	 */
 	@ApiModelProperty("商品名称")
 	private String goodsName;
+
+	/**
+	 * 有接口标识(0无配置 1有接口 2无接口)
+	 */
+	@ApiModelProperty("有接口标识")
+	private Long hasInterface;
+
+
 }

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/OpenQdyAccountBo.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.grade.bo;
+
+import com.zhongzheng.modules.grade.vo.ClassGradeStudentVo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 官方账号开通对象 class_grade_user
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("官方账号开通对象")
+public class OpenQdyAccountBo {
+
+
+	/** 验证码 */
+	@ApiModelProperty("验证码")
+	private String yzm;
+
+	/** 密码 */
+	@ApiModelProperty("密码")
+	private String password;
+
+	/** 年限 */
+	@ApiModelProperty("年限")
+	private String trainYear;
+
+
+	/** 学员对象 */
+	@ApiModelProperty("学员对象")
+	private List<StudyAccountStatusQueryBo> studyAccountStatusQueryBos;
+
+
+}

+ 20 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/StudyAccountStatusQueryBo.java

@@ -37,4 +37,24 @@ public class StudyAccountStatusQueryBo extends BaseEntity {
 	@ApiModelProperty("业务层次ID")
 	private Long educationTypeId;
 
+	/** ID */
+	@ApiModelProperty("ID")
+	private Long id;
+
+	/**
+	 * 学员姓名
+	 */
+	@ApiModelProperty("学员姓名")
+	private String realname;
+
+	/**
+	 * 学员身份证
+	 */
+	@ApiModelProperty("学员身份证")
+	private String idCard;
+
+	/** 手机号码 */
+	@ApiModelProperty("手机号码")
+	private String telphone;
+
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/ClassGrade.java

@@ -64,8 +64,10 @@ private static final long serialVersionUID=1L;
     /** 班主任ID */
     private Long sysUserId;
 
-    /** 官方信息推送接口 */
+    /** 官方账号开通(有接口) */
     private Long interfacePushId;
+    /** 官方账号开通(无接口) */
+    private Long noInterfacePushId;
     /** 备注 */
     private String remark;
     /** 官方账号开通 */

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeService.java

@@ -75,4 +75,5 @@ public interface IClassGradeService extends IService<ClassGrade> {
 
 	Integer getConsoleGradeUserPeriodNum(ConsoleQueryBo bo);
 
+	boolean OpenQdyAccount(OpenQdyAccountBo bo);
 }

+ 154 - 11
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java

@@ -3,20 +3,21 @@ package com.zhongzheng.modules.grade.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
-import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.json.JSONObject;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.exception.user.UserPasswordNotMatchException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
-import com.zhongzheng.modules.alisms.service.IAliSmsService;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
 import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
 import com.zhongzheng.modules.course.bo.CourseEducationTypeQueryBo;
 import com.zhongzheng.modules.course.bo.CourseProjectTypeQueryBo;
 import com.zhongzheng.modules.course.service.ICourseBusinessService;
-import com.zhongzheng.modules.course.service.ICourseEducationTierService;
 import com.zhongzheng.modules.course.service.ICourseEducationTypeService;
 import com.zhongzheng.modules.course.service.ICourseProjectTypeService;
 import com.zhongzheng.modules.course.vo.*;
@@ -28,20 +29,16 @@ import com.zhongzheng.modules.grade.domain.ClassGradeSys;
 import com.zhongzheng.modules.grade.service.IClassGradeGoodsService;
 import com.zhongzheng.modules.grade.service.IClassGradeSysService;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
-import com.zhongzheng.modules.grade.vo.ClassGradeStudentVo;
-import com.zhongzheng.modules.grade.vo.ClassGradeUserListVo;
-import com.zhongzheng.modules.grade.vo.ClassGradeUserVo;
+import com.zhongzheng.modules.grade.vo.*;
 import com.zhongzheng.modules.inform.bo.InformUserAddBo;
 import com.zhongzheng.modules.inform.service.IInformRemindService;
 import com.zhongzheng.modules.inform.service.IInformUserService;
 import com.zhongzheng.modules.inform.vo.InformRemindBusinessVo;
 import com.zhongzheng.modules.inform.vo.InformRemindVo;
 import com.zhongzheng.modules.order.mapper.OrderMapper;
-import com.zhongzheng.modules.system.domain.SysConfig;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserUpdateQueryBo;
-import com.zhongzheng.modules.user.domain.SchoolProject;
-import com.zhongzheng.modules.user.domain.UserUpdate;
+import com.zhongzheng.modules.user.domain.*;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.user.service.IUserUpdateService;
@@ -56,11 +53,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.Page;
 import com.zhongzheng.modules.grade.domain.ClassGrade;
 import com.zhongzheng.modules.grade.mapper.ClassGradeMapper;
-import com.zhongzheng.modules.grade.vo.ClassGradeVo;
 import com.zhongzheng.modules.grade.service.IClassGradeService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.net.HttpCookie;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -363,6 +360,20 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
 
     @Override
     public List<ClassGradeStudentVo> listGrade(ClassGradeUserQueryBo bo) {
+        //身份证去重
+        if (Validator.isNotEmpty(bo.getIdCard()) && Validator.isNotEmpty(bo.getIdCards())) {
+            String idCard = bo.getIdCard();
+            List<String> idCards = bo.getIdCards();
+            Set<String> set = new HashSet<>();
+            for (String id : idCards) {
+                set.add(id);
+            }
+            set.add(idCard);
+            if (Validator.isNotEmpty(set)) {
+                bo.setIdCards(new ArrayList<>(set));
+            }
+            bo.setIdCard(null);
+        }
         //查找班级学员
         List<ClassGradeStudentVo> classGradeStudentVos = baseMapper.listGrade(bo);
         //得到每个学员的课程学习记录
@@ -481,6 +492,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
     public List<ClassGradeVo> getConsoleGradeList(ConsoleQueryBo bo) {
         return baseMapper.getConsoleGradeList(bo);
     }
+
     @Override
     public List<ClassGradeVo> selectByBusinessId(Long businessId) {
         return baseMapper.selectByBusinessId(businessId);
@@ -506,6 +518,137 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
         return baseMapper.getConsoleGradeUserPeriodNum(bo);
     }
 
+    @Override
+    public boolean OpenQdyAccount(OpenQdyAccountBo bo) {
+        int falseCount = 0;
+        // post 请求 传递json参数
+        String postLoginRequestUrl = "https://zjzyk.etledu.com/Account/GetLoginInfo";
+        // 参数
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("userCode", "gdxiangyue");
+        jsonObject.put("passWord", bo.getPassword());
+        jsonObject.put("typeId", "2");
+        jsonObject.put("yzm", bo.getYzm());
+        jsonObject.put("phoneNum", "15602322262");
+
+        // 设置请求头
+        Map<String, String> loginHead = new HashMap<>();
+        loginHead.put("Content-Type", "application/json;charset=UTF-8");
+        // 纯请求  要结果的话 最后加 .body()
+        HttpResponse loginHttpResponse = HttpRequest.post(postLoginRequestUrl) // url
+                .headerMap(loginHead, false) // 请求头设置
+                .body(jsonObject.toString()) // json参数
+                .timeout(5 * 60 * 1000) // 超时
+                .execute();
+
+        if (loginHttpResponse.body().contains("{\"\"success\"\":true")) {
+            HttpCookie cookie = loginHttpResponse.getCookie("jqb_cookies");
+            List<StudyAccountStatusQueryBo> studyAccountStatusList = bo.getStudyAccountStatusQueryBos();
+            if (Validator.isNotEmpty(studyAccountStatusList)) {
+                List<Long> ids = new ArrayList<>();
+                for (StudyAccountStatusQueryBo studyAccountStatusQueryBo : studyAccountStatusList) {
+                    //查询学员url
+                    String getInfoRequestUrl = "https://zjzyk.etledu.com/Student/GetCertInfos";
+                    JSONObject getJsonObject = new JSONObject();
+                    getJsonObject.put("personalId", studyAccountStatusQueryBo.getIdCard());
+                    // 设置请求头
+                    Map<String, String> getInfoHead = new HashMap<>();
+                    getInfoHead.put("Content-Type", "application/json;charset=UTF-8");
+                    getInfoHead.put("Cookie", cookie.toString());
+                    // 纯请求  要结果的话 最后加 .body()
+                    HttpResponse getInfoHttpResponse = HttpRequest.post(getInfoRequestUrl) // url
+                            .headerMap(getInfoHead, false) // 请求头设置
+                            .body(getJsonObject.toString()) // json参数
+                            .timeout(5 * 60 * 1000) // 超时
+                            .execute();
+                    if (getInfoHttpResponse.body().contains("{\"\"success\"\":true")) {
+                        PersonRoot personRoot = com.alibaba.fastjson.JSONObject.parseObject(getInfoHttpResponse.toString(), PersonRoot.class);
+                        CertInfoListItem certInfoListItem = personRoot.getCertInfoList().get(0);
+                        TrainInfosItem trainInfosItem = certInfoListItem.getTrainInfos().get(0);
+                        cookie = getInfoHttpResponse.getCookie("jqb_cookies");
+                        //查询继教产品url
+                        String getProductUrl = "https://zjzyk.etledu.com/Student/GetProducts";
+                        JSONObject getProductObject = new JSONObject();
+                        getProductObject.put("workTypeCode", certInfoListItem.getWorkTypeCode());
+                        getProductObject.put("period", "0");
+                        getProductObject.put("trainYear", bo.getTrainYear());
+                        // 设置请求头
+                        Map<String, String> getProductHead = new HashMap<>();
+                        getProductHead.put("Content-Type", "application/json;charset=UTF-8");
+                        getProductHead.put("Cookie", cookie.toString());
+                        // 纯请求  要结果的话 最后加 .body()
+                        HttpResponse getProductHttpResponse = HttpRequest.post(getProductUrl) // url
+                                .headerMap(getProductHead, false) // 请求头设置
+                                .body(getJsonObject.toString()) // json参数
+                                .timeout(5 * 60 * 1000) // 超时
+                                .execute();
+                        if (getProductHttpResponse.body().contains("{\"\"success\"\":true")) {
+                            ProductRoot productRoot = com.alibaba.fastjson.JSONObject.parseObject(getProductHttpResponse.toString(), ProductRoot.class);
+                            if (Validator.isEmpty(productRoot)) {
+                                throw new CustomException("未获取到相关继教商品信息");
+                            }
+                            ProductsItem productsItem = productRoot.getProducts().get(0);
+                            cookie = getProductHttpResponse.getCookie("jqb_cookies");
+                            //学员开通url
+                            String postOpenRequestUrl = "https://zjzyk.etledu.com/Student/SubmitProject";
+                            JSONObject sumitJsonObject = new JSONObject();
+                            sumitJsonObject.put("CertNumber", studyAccountStatusQueryBo.getIdCard());
+                            sumitJsonObject.put("CertState", certInfoListItem.getCertState());
+                            sumitJsonObject.put("CertTime", certInfoListItem.getCertTime());
+                            sumitJsonObject.put("Name", studyAccountStatusQueryBo.getRealname());
+                            sumitJsonObject.put("phoneNum", studyAccountStatusQueryBo.getTelphone());
+                            sumitJsonObject.put("PersonalId", certInfoListItem.getPersonalId());
+                            sumitJsonObject.put("ProvinceCode", certInfoListItem.getProvinceCode());
+                            sumitJsonObject.put("ProvinceName", certInfoListItem.getProvinceName());
+                            sumitJsonObject.put("WorkTypeCode", certInfoListItem.getWorkTypeCode());
+                            sumitJsonObject.put("WorkTypeName", certInfoListItem.getWorkTypeName());
+                            sumitJsonObject.put("productId", productsItem.getId());
+                            sumitJsonObject.put("trainPeriodDate", trainInfosItem.getTrainPeriodTime());
+                            sumitJsonObject.put("period", 0);
+                            sumitJsonObject.put("IsBuyBook", 1);
+                            sumitJsonObject.put("GetMethod", 1);
+                            // 设置请求头
+                            Map<String, String> sumitHead = new HashMap<>();
+                            sumitHead.put("Content-Type", "application/json;charset=UTF-8");
+                            sumitHead.put("Cookie", cookie.toString());
+                            // 纯请求  要结果的话 最后加 .body()
+                            HttpResponse sumitHttpResponse = HttpRequest.post(postOpenRequestUrl) // url
+                                    .headerMap(sumitHead, false) // 请求头设置
+                                    .body(sumitJsonObject.toString()) // json参数
+                                    .timeout(5 * 60 * 1000) // 超时
+                                    .execute();
+                            //.body(); // 请求
+                            com.alibaba.fastjson.JSONObject.parseObject(sumitHttpResponse.toString(), ClassGradeUserQueryBo.class);
+                            //开通成功同步修改本地库learnStatus状态
+                            if (sumitHttpResponse.body().contains("{\"\"success\"\":true")) {
+                                ids.add(studyAccountStatusQueryBo.getId());
+                            } else {
+                                falseCount++;
+                            }
+                        } else {
+                            throw new CustomException("获取相关继教商品信息失败");
+                        }
+                    } else {
+                        throw new CustomException("根据身份证未获取相关数据失败");
+                    }
+                }
+                Long[] id = new Long[]{};
+                id = ids.toArray(id);
+                ClassGradeUserEditBo classGradeUserEditBo = new ClassGradeUserEditBo();
+                classGradeUserEditBo.setId(id);
+                classGradeUserEditBo.setLearnStatus(1);
+                iClassGradeUserService.updateByEditBo(classGradeUserEditBo);
+            } else {
+                throw new UserPasswordNotMatchException();
+            }
+            if (falseCount > 0) {
+                throw new CustomException(falseCount + "个开通失败");
+            }
+        }
+
+        return true;
+    }
+
     /**
      * 实体类转化成视图对象
      *

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

@@ -842,6 +842,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             if (bo.getLearnStatus() != null) {
                 update.setLearnStatus(bo.getLearnStatus());
             }
+            if (bo.getReason() != null) {
+                update.setReason(bo.getReason());
+            }
             this.updateById(update);
         }
 

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeStudentVo.java

@@ -187,4 +187,9 @@ public class ClassGradeStudentVo {
 	@Excel(name = "专业名称")
 	@ApiModelProperty("专业名称")
 	private String categoryName;
+
+	/** 失败原因 */
+	@Excel(name = "失败原因")
+	@ApiModelProperty("失败原因")
+	private String reason;
 }

+ 71 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/CertInfoListItem.java

@@ -0,0 +1,71 @@
+package com.zhongzheng.modules.user.domain;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 学员信息对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("学员信息对象")
+public class CertInfoListItem implements Comparable<CertInfoListItem> {
+	private static final long serialVersionUID = 1L;
+
+	@Excel(name = "用户名称")
+	@ApiModelProperty("用户名称")
+	private String name;
+
+	@Excel(name = "用户ID")
+	@ApiModelProperty("用户ID")
+	private String personalId;
+
+	@Excel(name = "省份")
+	@ApiModelProperty("省份")
+	private String provinceName;
+
+	@Excel(name = "工作类型")
+	@ApiModelProperty("工作类型")
+	private String workTypeName;
+
+	@Excel(name = "身份证号码")
+	@ApiModelProperty("身份证号码")
+	private String certNumber;
+
+	@Excel(name = "工作类型编号")
+	@ApiModelProperty("工作类型编号")
+	private String workTypeCode;
+
+	@Excel(name = "证件类型")
+	@ApiModelProperty("证件类型")
+	private Long certState;
+
+	@Excel(name = "省份编号")
+	@ApiModelProperty("省份编号")
+	private String provinceCode;
+
+	@Excel(name = "证件时间")
+	@ApiModelProperty("证件时间")
+	private String certTime;
+
+	@Excel(name = "当前时间")
+	@ApiModelProperty("当前时间")
+	private String currentTime;
+
+	@Excel(name = "继教信息")
+	@ApiModelProperty("继教信息")
+	private List<TrainInfosItem> trainInfos;
+
+
+	@Override
+	public int compareTo(CertInfoListItem o) {
+		return 0;
+	}
+}

+ 33 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/PersonRoot.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.user.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 官方账号开通查询接受对象 class_grade_user
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("官方账号开通查询接受对象")
+public class PersonRoot {
+
+
+	/** 成功标志 */
+	@ApiModelProperty("成功标志")
+	private Boolean success;
+
+	/** 返回信息 */
+	@ApiModelProperty("返回信息")
+	private String msg;
+
+	/** 用户信息 */
+	@ApiModelProperty("用户信息")
+	private List<CertInfoListItem> certInfoList;
+
+
+}

+ 29 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/ProductRoot.java

@@ -0,0 +1,29 @@
+package com.zhongzheng.modules.user.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 继教商品查询接受对象 class_grade_user
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("继教商品查询接受对象")
+public class ProductRoot {
+
+
+	/** 成功标志 */
+	@ApiModelProperty("成功标志")
+	private Boolean success;
+
+	/** 商品信息 */
+	@ApiModelProperty("商品信息")
+	private List<ProductsItem> products;
+
+
+}

+ 103 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/ProductsItem.java

@@ -0,0 +1,103 @@
+package com.zhongzheng.modules.user.domain;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 商品信息对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("商品信息对象")
+public class ProductsItem implements Comparable<ProductsItem> {
+	private static final long serialVersionUID = 1L;
+
+	@Excel(name = "id")
+	@ApiModelProperty("id")
+	private Integer id;
+
+	@Excel(name = "商品名称")
+	@ApiModelProperty("商品名称")
+	private String productName;
+
+	@Excel(name = "培训目标id")
+	@ApiModelProperty("培训目标id")
+	private Integer trainTargetId;
+
+	@Excel(name = "培训目标内容id")
+	@ApiModelProperty("培训目标内容id")
+	private Integer trainTargetDetailId;
+
+	@Excel(name = "价格")
+	@ApiModelProperty("价格")
+	private BigDecimal price;
+
+	@Excel(name = "已付金额")
+	@ApiModelProperty("已付金额")
+	private BigDecimal userPrice;
+
+	@Excel(name = "城市编号")
+	@ApiModelProperty("城市编号")
+	private String cityCode;
+
+	@Excel(name = "城市名")
+	@ApiModelProperty("城市名")
+	private String cityName;
+
+	@Excel(name = "专业学时")
+	@ApiModelProperty("专业学时")
+	private Integer professionalHour;
+
+	@Excel(name = "通用学时")
+	@ApiModelProperty("通用学时")
+	private Integer commonHour;
+
+	@Excel(name = "描述")
+	@ApiModelProperty("描述")
+	private String description;
+
+	@Excel(name = "头像")
+	@ApiModelProperty("头像")
+	private String imageUrl;
+
+	@Excel(name = "是否删除")
+	@ApiModelProperty("是否删除")
+	private String isDelete;
+
+	@Excel(name = "学习类型")
+	@ApiModelProperty("学习类型")
+	private Integer learnType;
+
+	@Excel(name = "区域名称")
+	@ApiModelProperty("区域名称")
+	private String areaName;
+
+	@Excel(name = "组织机构代码")
+	@ApiModelProperty("组织机构代码")
+	private String organizationcode;
+
+	@Excel(name = "组织机构名称")
+	@ApiModelProperty("组织机构名称")
+	private String organizationName;
+
+	@Excel(name = "省份编号")
+	@ApiModelProperty("省份编号")
+	private String provinceCode;
+
+	@Excel(name = "省份名称")
+	@ApiModelProperty("省份名称")
+	private String provinceName;
+
+
+	@Override
+	public int compareTo(ProductsItem o) {
+		return 0;
+	}
+}

+ 37 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/TrainInfosItem.java

@@ -0,0 +1,37 @@
+package com.zhongzheng.modules.user.domain;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 培训信息对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("培训信息对象")
+public class TrainInfosItem implements Comparable<TrainInfosItem> {
+	private static final long serialVersionUID = 1L;
+
+	@Excel(name = "培训开始时间")
+	@ApiModelProperty("培训开始时间")
+	private String trainStartTime;
+
+	@Excel(name = "培训时长")
+	@ApiModelProperty("培训时长")
+	private String trainPeriodTime;
+
+	@Excel(name = "培训年限")
+	@ApiModelProperty("培训年限")
+	private Integer TrainYear;
+
+
+	@Override
+	public int compareTo(TrainInfosItem o) {
+		return 0;
+	}
+}

+ 8 - 3
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -157,6 +157,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="goodsName" column="goods_name"/>
         <result property="orderSn" column="order_sn"/>
         <result property="categoryName" column="category_name"/>
+        <result property="reason" column="reason"/>
     </resultMap>
 
 
@@ -355,7 +356,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         og.order_sn,
         m.category_name,
         g.major_id,
-        u.province
+        u.province,
+        cgu.reason
         FROM
         class_grade_user cgu
         LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id
@@ -426,10 +428,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="majorId != null and majorId != ''">
             AND m.id = #{majorId}
         </if>
-        <if test="interfaceAccountId != null and interfaceAccountId != ''">
+        <if test="hasInterface != null and noInterfaceAccountId == 0">
+            AND cg.interface_account_id is null AND cg.no_interface_account_id is null
+        </if>
+        <if test="hasInterface != null and noInterfaceAccountId == 1">
             AND cg.interface_account_id is not null
         </if>
-        <if test="noInterfaceAccountId != null and noInterfaceAccountId != ''">
+        <if test="hasInterface != null and noInterfaceAccountId == 2">
             AND cg.no_interface_account_id is not null
         </if>
         order by user_info_status desc ,user_status desc ,cgu.id desc