4 Коміти 294d31e856 ... 5e489f7871

Автор SHA1 Опис Дата
  yangdamao 5e489f7871 submit 10 місяців тому
  yangdamao 16f2b3d4d8 Merge branch 'dev' 10 місяців тому
  yangdamao 7e322cc84b submit 10 місяців тому
  yangdamao b797bd92ef submit 10 місяців тому
15 змінених файлів з 484 додано та 11 видалено
  1. 39 0
      run-prod.sh
  2. 13 5
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  3. 33 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/SynchronizationController.java
  4. 11 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java
  5. 32 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  6. 23 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/SynchUserVo.java
  7. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  8. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  9. 32 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/UserStudyConditionBo.java
  10. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java
  11. 5 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  12. 44 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  13. 53 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/UserStudyConditionVo.java
  14. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java
  15. 189 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml

+ 39 - 0
run-prod.sh

@@ -1,3 +1,42 @@
+#!/usr/bin/env bash
+# 定义应用组名
+group_name='zhongzheng'
+# 定义应用名称
+app_name='zhongzheng-saas-api'
+# 定义应用版本
+app_version='1.0-SNAPSHOT'
+# 定义应用环境
+profile_active='prod'
+echo '----copy jar----'
+docker stop ${app_name}
+echo '----stop container----'
+docker rm ${app_name}
+echo '----rm container----'
+docker rmi ${group_name}/${app_name}:${app_version}
+echo '----rm image----'
+# 打包编译docker镜像
+docker build -f /mydata/maven/build/Dockerfile -t ${group_name}/${app_name}:${app_version} .
+echo '----build image----'
+docker run -p 5055:5055 --name ${app_name} \
+--restart=always \
+-e 'spring.profiles.active'=${profile_active} \
+-e TZ="Asia/Shanghai" \
+-m 10240m \
+--cpus=3 \
+--log-opt max-size=50m \
+--log-opt max-file=3 \
+-v /etc/localtime:/etc/localtime \
+-v /usr/share/fonts:/usr/share/fonts \
+-v /data/logs/prod_api:/logs \
+-v /mydata/app/${app_name}/logs:/var/logs \
+-d ${group_name}/${app_name}:${app_version}
+echo '----start container----'
+
+echo "开始等待20秒..."
+# 1-10秒内随机
+sleep 5
+echo "等待后继续"
+
 #!/usr/bin/env bash
 # 定义应用组名
 group_admin_name='zhongzheng'

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

@@ -63,10 +63,7 @@ import com.zhongzheng.modules.grade.vo.ClassBusinessVo;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserVo;
 import com.zhongzheng.modules.grade.vo.ClassPeriodStudentVo;
 import com.zhongzheng.modules.grade.vo.SyncGoodsExport;
-import com.zhongzheng.modules.order.bo.CommonGradeBo;
-import com.zhongzheng.modules.order.bo.CommonOrderBo;
-import com.zhongzheng.modules.order.bo.CommonOrderInfoBo;
-import com.zhongzheng.modules.order.bo.TopOldOrderRefundBo;
+import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.service.IOrderGoodsRefundService;
@@ -75,6 +72,7 @@ import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.CommonGradeVo;
 import com.zhongzheng.modules.order.vo.CommonOrderInfoVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
+import com.zhongzheng.modules.order.vo.UserStudyConditionVo;
 import com.zhongzheng.modules.sdk.service.IZsBankService;
 import com.zhongzheng.modules.system.bo.SysTenantAdminBo;
 import com.zhongzheng.modules.system.bo.SysTenantAdminOldBo;
@@ -958,7 +956,7 @@ public class CommonController extends BaseController {
 
     @ApiOperation("外部下单接口")
     @PostMapping("/common/free/order")
-    public AjaxResult<Void> commonWithoutOrder(@RequestBody CommonOrderBo bo) {
+    public AjaxResult<List<String>> commonWithoutOrder(@RequestBody CommonOrderBo bo) {
         if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             throw new CustomException("签名错误");
         }
@@ -986,4 +984,14 @@ public class CommonController extends BaseController {
         List<CommonOrderInfoVo> list = iOrderService.getCommonOrderInfo(bo);
         return AjaxResult.success(list);
     }
+
+    @ApiOperation("获取学员学习进度")
+    @PostMapping("/common/free/user/study")
+    public AjaxResult<List<UserStudyConditionVo>> getUserStudyCondition(@RequestBody UserStudyConditionBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            throw new CustomException("签名错误");
+        }
+        List<UserStudyConditionVo> list = iOrderService.getUserStudyCondition(bo);
+        return AjaxResult.success(list);
+    }
 }

+ 33 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/SynchronizationController.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.controller.common;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.modules.user.service.IUserService;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 同步旧系统数据专业接口
+ */
+@RestController
+@RequestMapping("/common/synchronization")
+public class SynchronizationController  extends BaseController {
+    private static final Logger log = LoggerFactory.getLogger(SynchronizationController.class);
+
+    @Autowired
+    private IUserService iUserService;
+
+    @ApiOperation("同步用户信息")
+    @GetMapping("user/info/{orgId}")
+    public AjaxResult synchronizationUser(@PathVariable("orgId") Integer orgId) {
+        iUserService.synchronizationUser(orgId);
+        return AjaxResult.success();
+    }
+
+}

+ 11 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -77,6 +77,17 @@ public class OrderController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询订单列表
+     */
+    @ApiOperation("查询订单列表")
+    @GetMapping("/without/list")
+    public TableDataInfo<OrderListVo> withoutOrderList(OrderQueryBo bo) {
+        startPage();
+        List<OrderListVo> list = iOrderService.withoutOrderList(bo);
+        return getDataTable(list);
+    }
+
     @ApiOperation("导出订单列表")
     @GetMapping("/exportList")
     public AjaxResult<OrderListExportVo> exportList(OrderQueryBo bo) {

+ 32 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -57,6 +58,7 @@ import com.zhongzheng.modules.course.service.IMajorService;
 import com.zhongzheng.modules.exam.service.IExamApplyService;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.SynchUserVo;
 import com.zhongzheng.modules.goods.vo.UserNewGoodsVo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
@@ -188,6 +190,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     private String OLD_GOODS;
     @Value("${record.downloadPath}")
     private String RECORD_DOWNLOAD;
+//    @Value("${oldSys.userInfo}")
+    private String OLD_USERINFO;
 
 
     @Override
@@ -2313,6 +2317,34 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                 .orderByDesc(UserVisitLog::getCreateTime));
     }
 
+    @Override
+    public void synchronizationUser(Integer orgId) {
+        //获取旧系统用户数据信息
+        Map<String, String> params = new HashMap<>();
+        Long nowTime = DateUtils.getNowTime();
+        String sign = ToolsUtils.EncoderByMd5(orgId.toString()+nowTime);
+        params.put("stamp", nowTime.toString());
+        params.put("sign", sign);
+        String respone = "";
+        try {
+            respone = HttpUtils.postFormBody(OLD_USERINFO, params);
+            if (!respone.contains("\"Status\":true")) {
+                throw new CustomException("获取用户接口失败");
+            }
+            JSONObject jsonObject = JSONObject.parseObject(respone);
+            Object data = jsonObject.get("data");
+            if (ObjectUtils.isNotNull(data)){
+                List<SynchUserVo> synchUserVos = JSONArray.parseArray(JSONObject.toJSONString(data), SynchUserVo.class);
+                if (CollectionUtils.isEmpty(synchUserVos)){
+                    throw new CustomException("用户数据解析失败");
+                }
+                //保存用户信息
+            }
+        }catch (Exception e){
+            throw new CustomException(e.getMessage());
+        }
+    }
+
     private String getTelPhone(){
         String mobile = TelPhoneUtils.createMobile();
         int count = count(new LambdaQueryWrapper<User>().eq(User::getIdCard, EncryptHandler.encrypt(mobile)));

+ 23 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/SynchUserVo.java

@@ -0,0 +1,23 @@
+package com.zhongzheng.modules.goods.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class SynchUserVo implements Serializable {
+
+    private String companyname;
+    private String headimagesrc;
+    private String mobile;
+    private Long userid;
+    private String workyears;
+    private String idcardphotosrc2;
+    private String school;
+    private String sex;
+    private String education;
+    private String idcardphotosrc;
+    private String pwd;
+    private String idcode;
+    private String username;
+}

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

@@ -612,7 +612,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                 classGradeUser1.setFinishStatus(1);
             }
             if (Validator.isNotEmpty(classPeriodStudentVo.getClassEndTime()) && Validator.isNotEmpty(classPeriodStudentVo.getClassStartTime())) {
-                if (nowTime < classPeriodStudentVo.getClassEndTime() && nowTime > classPeriodStudentVo.getClassStartTime()) {
+                if (nowTime < (classPeriodStudentVo.getClassEndTime() + 2592000L) && nowTime > classPeriodStudentVo.getClassStartTime()) {
                     classGradeUser1.setFinishStatus(1);
                 }
             }

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

@@ -541,7 +541,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
             objectLambdaUpdateWrapper.set(ClassGradeUser::getFinishStatus, 1);
         }
         if (Validator.isNotEmpty(classPeriodStudentVo.getClassEndTime()) && Validator.isNotEmpty(classPeriodStudentVo.getClassStartTime())) {
-            if (nowTime < classPeriodStudentVo.getClassEndTime() && nowTime > classPeriodStudentVo.getClassStartTime()) {
+            if (nowTime < (classPeriodStudentVo.getClassEndTime() + 2592000L) && nowTime > classPeriodStudentVo.getClassStartTime()) {
                 objectLambdaUpdateWrapper.set(ClassGradeUser::getFinishStatus, 1);
             }
         }

+ 32 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/UserStudyConditionBo.java

@@ -0,0 +1,32 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+@Data
+public class UserStudyConditionBo implements Serializable {
+
+    @ApiModelProperty("当前时间戳")
+    @NotBlank(message = "当前时间戳不能为空")
+    private Long stamp;
+
+    @ApiModelProperty("签名")
+    @NotBlank(message = "签名不能为空")
+    private String sign;
+
+    @ApiModelProperty("商户ID")
+    private String tenantId;
+
+    private String userCard;
+
+    private String userName;
+
+    private String companyName;
+
+    private String businessName;
+
+    private String majorName;
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java

@@ -83,4 +83,9 @@ public interface OrderMapper extends BaseMapper<Order> {
     List<OfflineOrderVo> getOfflineOrderList(OfflineOrderBo bo);
 
     List<CommonOrderInfoVo> getCommonOrderInfo(CommonOrderInfoBo bo);
+
+    List<OrderListVo> selectWithoutListByBo(OrderQueryBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<UserStudyConditionVo> getUserStudyCondition(UserStudyConditionBo bo);
 }

+ 5 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -137,7 +137,7 @@ public interface IOrderService extends IService<Order> {
 
 	void handleRepetitionOrder(RepetitionOrderBo bo);
 
-    String commonWithoutOrder(CommonOrderBo bo);
+    List<String> commonWithoutOrder(CommonOrderBo bo);
 
 	List<CommonGradeVo> getCommonGrade(CommonGradeBo bo);
 
@@ -146,4 +146,8 @@ public interface IOrderService extends IService<Order> {
 	boolean checkOfflineOrder(OfflineOrderCheckBo bo);
 
     List<CommonOrderInfoVo> getCommonOrderInfo(CommonOrderInfoBo bo);
+
+	List<OrderListVo> withoutOrderList(OrderQueryBo bo);
+
+	List<UserStudyConditionVo> getUserStudyCondition(UserStudyConditionBo bo);
 }

+ 44 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -3487,7 +3487,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String commonWithoutOrder(CommonOrderBo bo) {
+    public List<String> commonWithoutOrder(CommonOrderBo bo) {
+        List<String> orderSns = new ArrayList<>();
         if (CollectionUtils.isEmpty(bo.getOrderBos())){
             throw new CustomException("开单数据为空");
         }
@@ -3555,7 +3556,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             add.setOperationType(2);
             //生成订单号
             String out_trade_no = DateUtils.getDateOrderSn();
-
+            orderSns.add(out_trade_no);
             //订单商品
             Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, goodsId));
             checkBuyGoods(goods.getGoodsId(), user.getUserId(), goods.getGoodsType());
@@ -3622,7 +3623,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             dealFreeGoods(orderGoods, add);
         }
 
-        return "";
+        return orderSns;
     }
 
     @Override
@@ -3717,6 +3718,46 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return infoVos;
     }
 
+    @Override
+    public List<OrderListVo> withoutOrderList(OrderQueryBo bo) {
+        if (Validator.isNotEmpty(bo.getOrderGoodsStatus())) {
+            if (bo.getOrderGoodsStatus() == -1) {
+                Integer[] orderStatus = new Integer[]{-2, -1};
+                bo.setOrderStatus(orderStatus);
+            } else if (bo.getOrderGoodsStatus() == 0) {
+                bo.setGoodsPayStatus(1);
+            } else if (bo.getOrderGoodsStatus() == 1) {
+                //已支付 sql实现
+            } else if (bo.getOrderGoodsStatus() == 2) {
+                bo.setRefundStatus(2);
+            }
+        }
+        List<OrderListVo> orderListVos = this.baseMapper.selectWithoutListByBo(bo);
+        for (OrderListVo vo : orderListVos) {
+            if (Validator.isNotEmpty(vo.getRebuyOrderGoodsId()) && vo.getRebuyOrderGoodsId().longValue() > 0) {
+                vo.setRebuy(this.baseMapper.getGradePeriod(vo.getRebuyOrderGoodsId(), vo.getUserId()));
+            }
+            //商品订单状态 -1关闭 0待支付 1已支付 2已退款
+            if (Validator.isEmpty(vo.getRefundStatus())) {
+                vo.setOrderGoodsStatus(-1);
+            } else if (vo.getRefundStatus() == 2) {
+                vo.setOrderGoodsStatus(2);
+            } else if (vo.getOrderStatus() < 0) {
+                vo.setOrderGoodsStatus(-1);
+            } else if (vo.getGoodsPayStatus() == 1) {
+                vo.setOrderGoodsStatus(0);
+            } else if (vo.getGoodsPayStatus() > 1) {
+                vo.setOrderGoodsStatus(1);
+            }
+        }
+        return orderListVos;
+    }
+
+    @Override
+    public List<UserStudyConditionVo> getUserStudyCondition(UserStudyConditionBo bo) {
+        return baseMapper.getUserStudyCondition(bo);
+    }
+
     /**
      * 根据身份证号码判断性别
      *

+ 53 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/UserStudyConditionVo.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.modules.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+@Data
+public class UserStudyConditionVo implements Serializable {
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("下单时间")
+    private String orderTime;
+
+    @ApiModelProperty("学员姓名")
+    private String userName;
+
+    @ApiModelProperty("身份证号码")
+    private String userCard;
+
+    @ApiModelProperty("手机号码")
+    private String userPhone;
+
+    @ApiModelProperty("公司名称")
+    private String companyName;
+
+    @ApiModelProperty("课程名称")
+    private String goodsName;
+
+    @ApiModelProperty("年份")
+    private String sevenYear;
+
+    @ApiModelProperty("业务层次")
+    private String businessName;
+
+    @ApiModelProperty("专业")
+    private String majorName;
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("班级状态")
+    private String classStatus;
+
+    @ApiModelProperty("班级结束时间")
+    private String classEndTime;
+
+    @ApiModelProperty("学习进度")
+    private String studySchedule;
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -185,4 +185,7 @@ public interface IUserService extends IService<User> {
 	void account_loginOutRecord(UserAppAccountLoginOutBo bo);
 
 	List<UserVisitLog> getControlsRecord(UserRecordQueryBo bo);
+
+    void synchronizationUser(Integer orgId);
+
 }

+ 189 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml

@@ -1041,4 +1041,193 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
     </select>
 
+    <select id="selectWithoutListByBo" parameterType="com.zhongzheng.modules.order.bo.OrderQueryBo" resultMap="OrderResultVo">
+        SELECT
+        o.*,
+        g.goods_id,
+        g.goods_name,
+        g.year,
+        g.cover_url,
+        g.code,
+        g.goods_type,
+        og.goods_price,
+        og.rebuy_order_goods_id,
+        og.order_goods_id,
+        og.goods_real_price,
+        og.offline_refund_sign,
+        u.telphone,
+        u.realname,
+        u.id_card,
+        u.company_name,
+        cet.education_name,
+        cpt.project_name,
+        cb.business_name,
+        s.school_name,
+        m.category_name,
+        og.goods_received,
+        og.refund_status,
+        og.pay_status as goods_pay_status,
+        (select cgu.period_plush from  class_grade_user cgu where cgu.grade_id = og.grade_id and cgu.order_goods_id = og.order_goods_id and cgu.user_id = o.user_id limit 1 ) period_plush,
+        (SELECT oi.invoice_status FROM order_invoice oi LEFT JOIN order_invoice_order oio ON oio.invoice_id = oi.invoice_id WHERE
+        oio.order_goods_id = og.order_goods_id AND oi.period_status != 2 limit 1) invoice_status
+        FROM
+        `order` o
+        LEFT JOIN order_goods og ON o.order_sn = og.order_sn
+        LEFT JOIN goods g ON og.goods_id = g.goods_id
+        LEFT JOIN `user` u ON o.user_id = u.user_id
+        LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+        LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
+        LEFT JOIN school s ON s.id = g.school_id
+        LEFT JOIN major m ON g.major_id = m.id
+        WHERE 1=1
+            AND o.order_type = 3
+        <if test="educationTypeId != null and educationTypeId != ''">
+            AND g.education_type_id = #{educationTypeId}
+        </if>
+        <if test="businessId != null and businessId != ''">
+            AND g.business_id = #{businessId}
+        </if>
+        <if test="schoolId != null and schoolId != ''">
+            AND g.school_id = #{schoolId}
+        </if>
+        <if test="majorId != null and majorId != ''">
+            AND g.major_id = #{majorId}
+        </if>
+        <if test="orderSn != null and orderSn != ''">
+            AND o.order_sn = #{orderSn}
+        </if>
+        <if test="orderStatus != null ">
+            AND o.order_status in
+            <foreach collection="orderStatus" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="status != null ">
+            AND o.status in
+            <foreach collection="status" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="orderGoodsStatus == 1">
+            AND og.pay_status in (2,3,4) AND og.refund_status != 2
+        </if>
+        <if test="startTime != null">
+            AND o.create_time >= #{startTime}
+        </if>
+        <if test="endTime != null">
+            AND #{endTime} >= o.create_time
+        </if>
+        <if test="payStatus != null">
+            AND o.pay_status = #{payStatus}
+        </if>
+        <if test="goodsPayStatus != null">
+            AND og.pay_status = #{goodsPayStatus}
+        </if>
+        <if test="refundStatus != null">
+            AND og.refund_status = #{refundStatus}
+        </if>
+        <if test="goodsType != null">
+            AND g.goods_type = #{goodsType}
+        </if>
+        <if test="userId != null">
+            AND u.user_id = #{userId}
+            AND og.pay_status in (2,3,4)
+        </if>
+        <if test="inputOrderSn != null">
+            AND o.input_order_sn = #{inputOrderSn}
+        </if>
+        <if test="companyName != null and companyName != ''">
+            AND u.company_name like concat('%', #{companyName}, '%')
+        </if>
+        <if test="searchKey != null and searchKey != ''">
+            AND (u.realname like concat('%', #{searchKey}, '%') or o.order_sn = #{searchKey} or AES_DECRYPT(UNHEX(u.id_card),'base20230213zzkj') = #{searchKey} or g.goods_name like concat('%', #{searchKey}, '%'))
+        </if>
+        <if test="orderGoodsIds != null ">
+            AND og.order_goods_id in
+            <foreach collection="orderGoodsIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="orderFroms != null and orderFroms.size()!=0">
+            AND o.order_from in
+            <foreach collection="orderFroms" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        ORDER BY o.order_id DESC
+    </select>
+
+    <select id="getUserStudyCondition" parameterType="com.zhongzheng.modules.order.bo.UserStudyConditionBo" resultType="com.zhongzheng.modules.order.vo.UserStudyConditionVo">
+        SELECT
+        o.order_sn,
+        FROM_UNIXTIME( og.create_time, '%Y-%m-%d %H:%i:%s' ) AS orderTime,
+        u.realname AS userName,
+        AES_DECRYPT(UNHEX(u.id_card),'base20230213zzkj') AS userCard,
+        AES_DECRYPT(UNHEX(u.telphone),'base20230213zzkj') AS userPhone,
+        u.company_name AS companyName,
+        g.goods_name AS goodsName,
+        g.seven_year AS sevenYear,
+        CONCAT(cet.education_name,cb.business_name,cpt.project_name) AS businessName,
+        m.category_name AS majorName,
+        cg.class_name AS className,
+        CASE
+        WHEN cg.class_status = 1 THEN '已开班'
+        WHEN cg.class_status = 0 THEN '未开班'
+        ELSE '其他' END AS classStatus,
+        FROM_UNIXTIME( cg.class_end_time, '%Y-%m-%d %H:%i:%s' ) AS classEndTime,
+        CONCAT((
+        ((SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr  where ubr.`status`=1 and ubr.report_status=1 and ubr.grade_id = og.grade_id and ubr.order_goods_id = og.order_goods_id and ubr.user_id = cgu.user_id and ubr.current_status = 1) +
+        (
+        SELECT
+        COUNT( DISTINCT course_id, module_id, chapter_id, section_id )
+        FROM
+        user_study_record
+        WHERE
+        current_status = 1
+        AND grade_id = og.grade_id
+        AND order_goods_id = og.order_goods_id
+        AND user_id = o.user_id
+        AND status = 1
+        AND goods_id = og.goods_id
+        ))
+        ),"/",og.course_num + og.exam_num) AS studySchedule
+        FROM
+        `order` o
+        LEFT JOIN order_goods og ON o.order_sn = og.order_sn
+        LEFT JOIN goods g ON og.goods_id = g.goods_id
+        LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+        LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
+        LEFT JOIN major m ON g.major_id = m.id
+        LEFT JOIN `user` u ON o.user_id = u.user_id
+        LEFT JOIN class_grade_user cgu ON og.order_goods_id = cgu.order_goods_id
+        LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id
+        WHERE
+        1=1
+        AND og.pay_status != 1
+        AND og.refund_status != 2
+        AND o.`status` = 1
+        AND og.`status` = 1
+        AND cgu.`status` = 1
+        <if test="tenantId != null and tenantId != ''">
+            AND o.tenant_id = #{tenantId}
+        </if>
+        <if test="userCard != null and userCard != ''">
+            AND AES_DECRYPT(UNHEX(u.id_card),'base20230213zzkj') = #{userCard}
+        </if>
+        <if test="userName != null and userName != ''">
+            AND u.realname = #{userName}
+        </if>
+        <if test="companyName != null and companyName != ''">
+            AND u.company_name = #{companyName}
+        </if>
+        <if test="businessName != null and businessName != ''">
+            AND INSTR(CONCAT(cet.education_name,cb.business_name,cpt.project_name),#{businessName})
+        </if>
+        <if test="majorName != null and majorName != ''">
+            AND m.category_name = #{majorName}
+        </if>
+    </select>
+
 </mapper>