he2802 1 år sedan
förälder
incheckning
9796ae3f61
32 ändrade filer med 434 tillägg och 32 borttagningar
  1. 77 0
      run-prod.sh
  2. 16 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java
  3. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamServiceImpl.java
  4. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/vo/ShoppingCartVo.java
  5. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsAddBo.java
  6. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsEditBo.java
  7. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java
  8. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsVo.java
  9. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/SpecAttrPriceVo.java
  10. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeQueryBo.java
  11. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/MailOrderBo.java
  12. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/MailOrderHandleBo.java
  13. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderAddBo.java
  14. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java
  15. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderHandleQueryBo.java
  16. 11 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/Order.java
  17. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java
  18. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderHandleMapper.java
  19. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  20. 67 6
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  21. 6 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderHandleServiceImpl.java
  22. 30 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  23. 30 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/MailOrderVo.java
  24. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderGoodsVo.java
  25. 34 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderHandleOverVo.java
  26. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/tencentcloud/service/impl/FaceOcrServiceImpl.java
  27. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/base/ShoppingCartMapper.xml
  28. 1 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  29. 26 19
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml
  30. 25 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml
  31. 7 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderHandleMapper.xml
  32. 3 3
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

+ 77 - 0
run-prod.sh

@@ -1,4 +1,41 @@
+#!/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
 # 定义应用组名
@@ -34,3 +71,43 @@ docker run \
 -v /data/nginx/conf.d:/data/nginx/conf.d \
 -d ${group_admin_name}/${app_admin_name}:${app_admin_version}
 echo '----start container admin----'
+
+echo "开始等待20秒..."
+# 1-10秒内随机
+sleep 5
+echo "等待后继续"
+
+#!/usr/bin/env bash
+# 定义应用组名
+group_admin_name='zhongzheng'
+# 定义应用名称
+app_admin_name='zhongzheng-saas-admin-top'
+# 定义应用版本
+app_admin_version='1.0-SNAPSHOT'
+# 定义应用环境
+profile_active='prod'
+echo '----copy jar admin top----'
+docker stop ${app_admin_name}
+echo '----stop container admin top----'
+docker rm ${app_admin_name}
+echo '----rm container admin top----'
+docker rmi ${group_admin_name}/${app_admin_name}:${app_admin_version}
+echo '----rm image admin top----'
+# 打包编译docker镜像
+docker build -f /mydata/maven/build/Dockerfile-saas -t ${group_admin_name}/${app_admin_name}:${app_admin_version} .
+echo '----build image admin top----'
+docker run \
+-p 7077:7077 \
+--name ${app_admin_name} \
+--restart=always \
+--log-opt max-size=50m \
+--log-opt max-file=3 \
+-e 'spring.profiles.active'=${profile_active} \
+-e TZ="Asia/Shanghai" \
+-v /etc/localtime:/etc/localtime \
+-v /usr/share/fonts:/usr/share/fonts \
+-v /data/logs/prod_admin_top:/logs \
+-v /mydata/app/${app_admin_name}/logs:/var/logs \
+-v /data/nginx/conf.d:/data/nginx/conf.d \
+-d ${group_admin_name}/${app_admin_name}:${app_admin_version}
+echo '----start container admin top----'

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

@@ -18,6 +18,7 @@ import com.zhongzheng.modules.goods.vo.QuestionOpenImportVo;
 import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
+import com.zhongzheng.modules.order.vo.MailOrderVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
 import com.zhongzheng.modules.order.vo.OrderVo;
@@ -229,4 +230,19 @@ public class OrderController extends BaseController {
         return toAjax(iSysTenantService.updateByEditBo(editBo)?1:0);
     }
 
+
+    @ApiOperation("寄件订单列表")
+    @GetMapping("/mail/list")
+    public TableDataInfo<MailOrderVo> getMailList(MailOrderBo bo) {
+        startPage();
+        List<MailOrderVo> list = iOrderGoodsService.getMailList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("寄件订单批量处理")
+    @PostMapping("/mail/handle")
+    public AjaxResult<Void> mailOrderHandle(@RequestBody MailOrderHandleBo bo) {
+        return toAjax(iOrderGoodsService.mailOrderHandle(bo)?1:0);
+    }
+
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamServiceImpl.java

@@ -185,6 +185,14 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
         if(Validator.isEmpty(bo.getExamId())){
             throw new CustomException("试卷ID缺失");
         }
+        if (ObjectUtils.isNotNull(bo.getStatus()) && bo.getStatus() == -1){
+            CheckUserExamRecordBo checkBo = new CheckUserExamRecordBo();
+            checkBo.setExamIds(Arrays.asList(bo.getExamId()));
+            if (iUserExamRecordService.checkBatchUserExamRecord(checkBo) > 0){
+                throw new CustomException("存在学员已做过的试卷,不能删除,请检查!");
+            }
+        }
+
         Exam update = BeanUtil.toBean(bo, Exam.class);
         update.setSimulateConfig(bo.getSimulateConfigJson());
         validEntityBeforeSave(update);

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/vo/ShoppingCartVo.java

@@ -72,4 +72,6 @@ public class ShoppingCartVo {
 	private List<ClassGradeVo> gradeList;
 	@ApiModelProperty("七大员继教可选年份")
 	private String sevenYear;
+	@ApiModelProperty("寄件标签:1是 0否")
+	private Integer mailSign;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsAddBo.java

@@ -219,4 +219,6 @@ public class GoodsAddBo {
     private String questionRelIds;
     @ApiModelProperty("视频标签:1保利威 2腾讯")
     private Integer viewSign;
+    @ApiModelProperty("寄件标签:1是 0否")
+    private Integer mailSign;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsEditBo.java

@@ -253,4 +253,6 @@ public class GoodsEditBo {
     private String questionRelIds;
     @ApiModelProperty("视频标签:1保利威 2腾讯")
     private Integer viewSign;
+    @ApiModelProperty("寄件标签:1是 0否")
+    private Integer mailSign;
 }

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

@@ -185,4 +185,7 @@ private static final long serialVersionUID=1L;
     private String questionRelIds;
     /** 视频标签:1保利威 2腾讯 */
     private Integer viewSign;
+    /** 寄件标签:1是 0否 */
+    @TableField(updateStrategy=FieldStrategy.IGNORED)
+    private Integer mailSign;
 }

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

@@ -404,4 +404,6 @@ public class GoodsVo {
 	/** 视频标签:1保利威 2腾讯 */
 	@ApiModelProperty("视频标签:1保利威 2腾讯")
 	private Integer viewSign;
+	@ApiModelProperty("寄件标签:1是 0否")
+	private Integer mailSign;
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/SpecAttrPriceVo.java

@@ -149,6 +149,7 @@ public class SpecAttrPriceVo implements Serializable {
     private Boolean jjShiGongYuan;
     @ApiModelProperty("是否是二建二造")
     private Boolean erJianErZao;
-
+    @ApiModelProperty("寄件标签:1是 0否")
+    private Integer mailSign;
 
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeQueryBo.java

@@ -154,4 +154,6 @@ public class ClassGradeQueryBo extends BaseEntity {
 
 	@ApiModelProperty("班级标识:1共享 2独立")
 	private Integer classSign;
+
+	private String userName;
 }

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/MailOrderBo.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2024年02月27日 15:40
+ */
+@Data
+public class MailOrderBo implements Serializable {
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    @ApiModelProperty("寄件状态:1已处理 0待处理")
+    private Integer mailStatus;
+}

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/MailOrderHandleBo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2024年02月27日 16:20
+ */
+@Data
+public class MailOrderHandleBo implements Serializable {
+    @ApiModelProperty("订单号集合")
+    private List<String> orderSnList;
+    @ApiModelProperty("寄件状态:1已处理 0待处理")
+    private Integer mailStatus;
+    @ApiModelProperty("寄件备注")
+    private String mailRemark;
+}

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderAddBo.java

@@ -115,4 +115,10 @@ public class OrderAddBo {
     private Integer orgSign;
     @ApiModelProperty("经办人订单编号")
     private String handleOrderSn;
+    @ApiModelProperty("收件人")
+    private String consignee;
+    @ApiModelProperty("手机号码")
+    private String consigneePhone;
+    @ApiModelProperty("手机地址")
+    private String consigneeSite;
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java

@@ -103,4 +103,12 @@ public class OrderGoodsAddBo {
     private Long relevanceId;
     @ApiModelProperty("预约订单商品ID")
     private Long subOrderGoodsId;
+    @ApiModelProperty("寄件标签:1是 0否")
+    private Integer mailSign;
+    @ApiModelProperty("收件人")
+    private String consignee;
+    @ApiModelProperty("手机号码")
+    private String consigneePhone;
+    @ApiModelProperty("手机地址")
+    private String consigneeSite;
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderHandleQueryBo.java

@@ -81,5 +81,6 @@ public class OrderHandleQueryBo extends BaseEntity {
 	@ApiModelProperty("结束时间")
 	private Long endTime;
 
-
+	@ApiModelProperty("超时关闭时间")
+	private Long overTime;
 }

+ 11 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/Order.java

@@ -191,4 +191,15 @@ private static final long serialVersionUID=1L;
     private Integer orgSign;
 
     private String handleOrderSn;
+
+    private String consignee;
+    private String consigneePhone;
+    private String consigneeSite;
+    /** 寄件状态:0未寄件 1已寄件 */
+    private Integer mailStatus;
+
+    /** 寄件备注 */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String mailRemark;
+
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.course.vo.CourseLiveVo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.vo.GoodsSectionListVo;
+import com.zhongzheng.modules.order.bo.MailOrderBo;
 import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
 import com.zhongzheng.modules.order.bo.OrderQueryBo;
 import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.order.vo.MailOrderVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQuery;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
@@ -76,4 +78,6 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
 
     @InterceptorIgnore(tenantLine = "true")
     OrderGoods getByIdNoTenant(Long orderGoodsId);
+
+    List<MailOrderVo> getMailList(MailOrderBo bo);
 }

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

@@ -1,9 +1,11 @@
 package com.zhongzheng.modules.order.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.order.bo.OrderHandleQueryBo;
 import com.zhongzheng.modules.order.domain.OrderHandle;
 import com.zhongzheng.modules.order.vo.OrderHandleGoodsVo;
+import com.zhongzheng.modules.order.vo.OrderHandleOverVo;
 import com.zhongzheng.modules.order.vo.OrderHandleVo;
 
 import java.util.List;
@@ -20,4 +22,7 @@ public interface OrderHandleMapper extends BaseMapper<OrderHandle> {
 
     List<OrderHandleGoodsVo> selectOrderGoodsList(OrderHandleQueryBo bo);
 
+    @InterceptorIgnore(tenantLine = "true")
+    List<OrderHandleOverVo> selectOverTimeOrderList(OrderHandleQueryBo bo);
+
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java

@@ -10,6 +10,7 @@ import com.zhongzheng.modules.goods.vo.GoodsSectionListVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.order.vo.MailOrderVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderUserGoodsVo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQuery;
@@ -132,4 +133,8 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
     OrderGoods getByIdNoTenant(Long orderGoodsId);
 
     GoodsVo getCourseViewSign(Long orderGoodsId);
+
+    List<MailOrderVo> getMailList(MailOrderBo bo);
+
+    boolean mailOrderHandle(MailOrderHandleBo bo);
 }

+ 67 - 6
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -25,14 +25,10 @@ import com.zhongzheng.modules.base.service.IProfileTpService;
 import com.zhongzheng.modules.base.service.IShoppingCartService;
 import com.zhongzheng.modules.base.service.IUserProfileService;
 import com.zhongzheng.modules.base.vo.ProfileTpVo;
-import com.zhongzheng.modules.course.domain.Course;
-import com.zhongzheng.modules.course.domain.CourseBusiness;
-import com.zhongzheng.modules.course.domain.CourseMenu;
+import com.zhongzheng.modules.course.domain.*;
 import com.zhongzheng.modules.course.mapper.CourseMapper;
 import com.zhongzheng.modules.course.mapper.CourseMenuMapper;
-import com.zhongzheng.modules.course.service.ICourseChapterSectionService;
-import com.zhongzheng.modules.course.service.ICourseMenuService;
-import com.zhongzheng.modules.course.service.ICourseSectionService;
+import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.CourseLiveVo;
 import com.zhongzheng.modules.course.vo.CourseVo;
 import com.zhongzheng.modules.exam.bo.ExamApplySiteTimeTwoAddBo;
@@ -73,6 +69,7 @@ import com.zhongzheng.modules.order.mapper.OrderGoodsMapper;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderInputService;
 import com.zhongzheng.modules.order.service.IOrderService;
+import com.zhongzheng.modules.order.vo.MailOrderVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
 import com.zhongzheng.modules.order.vo.OrderUserGoodsVo;
@@ -80,6 +77,7 @@ import com.zhongzheng.modules.polyv.bo.PolyvLiveQueryBo;
 import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysTenantService;
+import com.zhongzheng.modules.tencentcloud.service.IFaceOcrService;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQuery;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
@@ -197,6 +195,15 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
     @Autowired
     private ISysTenantService iSysTenantService;
 
+    @Autowired
+    private ICourseEducationTypeService iCourseEducationTypeService;
+    @Autowired
+    private ICourseProjectTypeService iCourseProjectTypeService;
+    @Autowired
+    private ICourseBusinessService iCourseBusinessService;
+    @Autowired
+    private IMajorService iMajorService;
+
 
 
     @Override
@@ -889,6 +896,60 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return BeanUtil.toBean(goods,GoodsVo.class);
     }
 
+    @Override
+    public List<MailOrderVo> getMailList(MailOrderBo bo) {
+        List<MailOrderVo> mailOrderVos = baseMapper.getMailList(bo);
+        if (CollectionUtils.isEmpty(mailOrderVos)){
+            return new ArrayList<>();
+        }
+        mailOrderVos.forEach(item -> {
+            List<OrderGoods> list = list(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderSn, item.getOrderSn()));
+            if (CollectionUtils.isNotEmpty(list)){
+                Map<Long, List<OrderGoods>> map = list.stream().collect(Collectors.groupingBy(OrderGoods::getGoodsId));
+                Integer mailNum = 0;
+                List<String> mailTail = new ArrayList<>();
+                for (Long goodsId : map.keySet()) {
+                    Goods goods = iGoodsService.getById(goodsId);
+                    if (ObjectUtils.isNull(goods.getMailSign()) || goods.getMailSign() != 1){
+                        //非寄件商品
+                        continue;
+                    }
+                    int size = map.get(goodsId).size();
+                    mailNum += size;
+                    CourseEducationType educationType = iCourseEducationTypeService.getById(goods.getEducationTypeId());
+                    CourseProjectType projectType = iCourseProjectTypeService.getById(goods.getProjectId());
+                    CourseBusiness business = iCourseBusinessService.getById(goods.getBusinessId());
+                    String format = String.format("%s/%s%s", educationType.getEducationName(), business.getBusinessName(), projectType.getProjectName());
+                    if (ObjectUtils.isNotNull(goods.getMajorId())){
+                        Major major = iMajorService.getById(goods.getMajorId());
+                        format = format +"/"+ major.getCategoryName();
+                    }
+                    format = format + String.format("(%s套教材)",size);
+                    mailTail.add(format);
+                }
+                item.setMailDetail(mailTail);
+                item.setMailNum(mailNum);
+            }
+        });
+        return mailOrderVos;
+    }
+
+    @Override
+    public boolean mailOrderHandle(MailOrderHandleBo bo) {
+        List<Order> list = iOrderService.list(new LambdaQueryWrapper<Order>().in(Order::getOrderSn, bo.getOrderSnList()));
+        if (CollectionUtils.isEmpty(list)){
+            throw new CustomException("订单信息错误");
+        }
+        list.forEach(item -> {
+            if (ObjectUtils.isNotNull(bo.getMailStatus())){
+                item.setMailStatus(bo.getMailStatus());
+            }else if (ObjectUtils.isNotNull(bo.getMailRemark())){
+                item.setMailRemark(bo.getMailRemark());
+            }
+        });
+        return iOrderService.updateBatchById(list);
+    }
+
     private boolean checkUnique(Long GoodsId,Long UserId) {
         ShoppingCart info = iShoppingCartService.getOne(new LambdaQueryWrapper<ShoppingCart>()
                 .eq(ShoppingCart::getUserId,UserId).eq(ShoppingCart::getGoodsId,GoodsId).last("limit 1"));

+ 6 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderHandleServiceImpl.java

@@ -21,6 +21,7 @@ import com.zhongzheng.modules.order.domain.*;
 import com.zhongzheng.modules.order.mapper.OrderHandleMapper;
 import com.zhongzheng.modules.order.service.*;
 import com.zhongzheng.modules.order.vo.OrderHandleGoodsVo;
+import com.zhongzheng.modules.order.vo.OrderHandleOverVo;
 import com.zhongzheng.modules.order.vo.OrderHandleStatisticsVo;
 import com.zhongzheng.modules.order.vo.OrderHandleVo;
 import com.zhongzheng.modules.system.domain.SysTenant;
@@ -412,8 +413,11 @@ public class OrderHandleServiceImpl extends ServiceImpl<OrderHandleMapper, Order
 
     @Override
     public Boolean overTimeCloseOrder() {
-        List<OrderHandle> list = this.list(new LambdaQueryWrapper<OrderHandle>().eq(OrderHandle::getPayStatus, 0).lt(OrderHandle::getOverTime,DateUtils.getNowTime()));
-        for(OrderHandle orderHandle : list){
+        OrderHandleQueryBo bo = new OrderHandleQueryBo();
+        bo.setOverTime(DateUtils.getNowTime());
+        List<OrderHandleOverVo> list = this.baseMapper.selectOverTimeOrderList(bo);
+        for(OrderHandleOverVo orderHandle : list){
+            ServletUtils.getRequestAttributes().getResponse().setHeader("TenantId", orderHandle.getTenantId());
             OrderHandleAddBo addBo = new OrderHandleAddBo();
             addBo.setHandleOrderSn(orderHandle.getHandleOrderSn());
             closeOrder(addBo);

+ 30 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -1338,7 +1338,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
             }
+
+            if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){
+                //寄件商品
+                add.setOrderType(5);
+                add.setConsignee(g.getConsignee());
+                add.setConsigneePhone(g.getConsigneePhone());
+                add.setConsigneeSite(g.getConsigneeSite());
+            }
+
             body = "云课程-" + goods.getGoodsName();
+
             OrderGoods orderGoods = BeanUtil.toBean(g, OrderGoods.class);
             orderGoods.setOrderSn(out_trade_no);
             orderGoods.setGoodsYear(goods.getYear().toString());
@@ -1758,7 +1768,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
             }
+
+            if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){
+                //寄件商品
+                add.setOrderType(5);
+                add.setConsignee(g.getConsignee());
+                add.setConsigneePhone(g.getConsigneePhone());
+                add.setConsigneeSite(g.getConsigneeSite());
+            }
+
             body = "云课程-" + goods.getGoodsName();
+
             OrderGoods orderGoods = BeanUtil.toBean(g, OrderGoods.class);
             orderGoods.setOrderSn(out_trade_no);
             if (g.getGoodsInputData() != null) {
@@ -1965,7 +1985,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     throw new CustomException(goods.getGoodsName() + ",请勿重复购买相同年份的商品");
                 }
             }
+
+            if (ObjectUtils.isNotNull(g.getMailSign()) && g.getMailSign() == 1){
+                //寄件商品
+                add.setOrderType(5);
+                add.setConsignee(g.getConsignee());
+                add.setConsigneePhone(g.getConsigneePhone());
+                add.setConsigneeSite(g.getConsigneeSite());
+            }
+
             body = "云课程-" + goods.getGoodsName();
+
             OrderGoods orderGoods = BeanUtil.toBean(g, OrderGoods.class);
             orderGoods.setOrderSn(out_trade_no);
             if (g.getGoodsInputData() != null) {

+ 30 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/MailOrderVo.java

@@ -0,0 +1,30 @@
+package com.zhongzheng.modules.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2024年02月27日 15:40
+ */
+@Data
+public class MailOrderVo implements Serializable {
+
+    private String OrderSn;
+
+    private Integer mailStatus;
+
+    @ApiModelProperty("收件人")
+    private String consignee;
+    @ApiModelProperty("手机号码")
+    private String consigneePhone;
+    @ApiModelProperty("手机地址")
+    private String consigneeSite;
+
+    private Integer mailNum;
+    private List<String> mailDetail;
+    private String mailRemark;
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderGoodsVo.java

@@ -372,4 +372,7 @@ public class OrderGoodsVo {
 	@Excel(name = "复制状态 1自学 2复制")
 	@ApiModelProperty("复制状态 1自学 2复制")
 	private Integer sevenClassCopy;
+
+	@ApiModelProperty("寄件标签:1是 0否")
+	private Integer mailSign;
 }

+ 34 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderHandleOverVo.java

@@ -0,0 +1,34 @@
+package com.zhongzheng.modules.order.vo;
+
+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 hjl
+ * @date 2024-01-19
+ */
+@Data
+@ApiModel("经办录单视图对象")
+public class OrderHandleOverVo {
+	private static final long serialVersionUID = 1L;
+
+
+
+	/** 录单订单编号 */
+	@Excel(name = "录单订单编号")
+	@ApiModelProperty("录单订单编号")
+	private String handleOrderSn;
+
+
+	@ApiModelProperty("机构ID")
+	private String tenantId;
+
+
+}

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/tencentcloud/service/impl/FaceOcrServiceImpl.java

@@ -115,6 +115,10 @@ public class FaceOcrServiceImpl implements IFaceOcrService {
             IaiClient iaiClient = new IaiClient(cred,"ap-guangzhou");
             DetectFaceRequest faceRequest = new DetectFaceRequest();
             faceRequest.setImage(bo.getImageA()); //学习拍照
+            faceRequest.setNeedFaceAttributes(1L);
+            faceRequest.setNeedQualityDetection(1L);
+            faceRequest.setMinFaceSize(40L);
+            faceRequest.setMaxFaceNum(1L);
             DetectFaceResponse response = iaiClient.DetectFace(faceRequest);
             faceRequest.setNeedFaceAttributes(1L);
             faceRequest.setNeedQualityDetection(1L);

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/base/ShoppingCartMapper.xml

@@ -32,6 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="distributionCode" column="distribution_code"/>
         <result property="choiceStatus" column="choice_status"/>
         <result property="sevenYear" column="seven_year"/>
+        <result property="mailSign" column="mail_sign"/>
     </resultMap>
 
     <select id="selectList" parameterType="com.zhongzheng.modules.base.bo.ShoppingCartQueryBo"  resultMap="ShoppingCartVoResult">
@@ -49,6 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             g.project_id,
             g.class_hours,
             g.seven_year,
+            g.mail_sign,
             ot.type AS template_type,
             cet.education_name,
             cpt.project_name,

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -106,6 +106,7 @@
         <result property="externalLink" column="external_link"/>
         <result property="externalLinkStatus" column="external_link_status"/>
         <result property="sevenYear" column="seven_year"/>
+        <result property="mailSign" column="mail_sign"/>
 
         <result property="supplyName" column="supply_name"/>
         <result property="educationName" column="education_name"/>

+ 26 - 19
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -1161,15 +1161,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             SELECT
             COUNT(*)
             FROM
-            class_grade_user cgu
-            LEFT JOIN `user` u ON cgu.user_id = u.user_id
-            WHERE
-            g.grade_id = cgu.grade_id
-            AND u.realname  like concat('%', #{searchKey}, '%')
-            ) >0 or (
-            SELECT
-            COUNT(*)
-            FROM
             class_grade_goods s
             LEFT JOIN goods d ON s.goods_id = d.goods_id
             WHERE
@@ -1177,6 +1168,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND d.goods_name  like concat('%', #{searchKey}, '%')
             ) >0)
         </if>
+        <if test="userName != null and userName !='' ">
+            AND (
+            SELECT
+            COUNT(*)
+            FROM
+            class_grade_user cgu
+            LEFT JOIN `user` u ON cgu.user_id = u.user_id
+            WHERE
+            g.grade_id = cgu.grade_id
+            AND u.realname  like concat('%', #{userName}, '%')
+            ) >0
+        </if>
         <if test="classStatus != null  ">
             AND g.class_status =  #{classStatus}
         </if>
@@ -1220,7 +1223,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE
         FIND_IN_SET( id, d.subject_ids )) subject_names
         FROM
-        ( SELECT any_value ( grade_id ) AS grade_id FROM class_grade WHERE `status` != - 1 AND seven_code IS NOT NULL GROUP BY seven_code ) a
+        ( SELECT any_value ( g.grade_id ) AS grade_id FROM class_grade g WHERE g.`status` != - 1 AND g.seven_code IS NOT NULL
+        <if test="userName != null and userName !='' ">
+            AND (
+            SELECT
+            COUNT(*)
+            FROM
+            class_grade_user cgu
+            LEFT JOIN `user` u ON cgu.user_id = u.user_id
+            WHERE
+            g.grade_id = cgu.grade_id
+            AND u.realname  like concat('%', #{userName}, '%')
+            ) >0
+        </if>
+        GROUP BY seven_code ) a
         LEFT JOIN class_grade g ON a.grade_id = g.grade_id
         LEFT JOIN class_grade_goods cgg ON cgg.grade_id = g.grade_id
         LEFT JOIN goods d ON cgg.goods_id = d.goods_id
@@ -1238,15 +1254,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             SELECT
             COUNT(*)
             FROM
-            class_grade_user cgu
-            LEFT JOIN `user` u ON cgu.user_id = u.user_id
-            WHERE
-            g.grade_id = cgu.grade_id
-            AND u.realname  like concat('%', #{searchKey}, '%')
-            ) >0 or (
-            SELECT
-            COUNT(*)
-            FROM
             class_grade_goods s
             LEFT JOIN goods d ON s.goods_id = d.goods_id
             WHERE

+ 25 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -119,6 +119,7 @@
         <result property="orderYear" column="order_year"/>
         <result property="sevenClassCopy" column="seven_class_copy"/>
         <result property="studyStatus" column="study_status"/>
+        <result property="mailSign" column="mail_sign"/>
     </resultMap>
 
     <select id="selectListBybo" parameterType="com.zhongzheng.modules.order.bo.OrderGoodsQueryBo"
@@ -129,6 +130,7 @@
         g.goods_name,
         g.goods_type,
         g.cover_url,
+        g.mail_sign,
         cet.education_name,
         cpt.project_name,
         cb.business_name
@@ -939,4 +941,27 @@
         WHERE
             order_goods_id = #{orderGoodsId}
     </select>
+
+    <select id="getMailList" parameterType="com.zhongzheng.modules.order.bo.MailOrderBo" resultType="com.zhongzheng.modules.order.vo.MailOrderVo">
+        SELECT
+            order_sn,
+            mail_status,
+            consignee,
+            consignee_phone,
+            consignee_site,
+            mail_remark
+        FROM
+            `order`
+        WHERE
+            `status` = 1
+          AND order_type = 5
+            <if test="orderSn != null and orderSn != ''">
+                AND order_sn = #{orderSn}
+            </if>
+            <if test="mailStatus != null">
+                AND mail_status = #{mailStatus}
+            </if>
+          order by create_time DESC
+    </select>
+
 </mapper>

+ 7 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderHandleMapper.xml

@@ -173,4 +173,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 AND og.refund_status = #{refundStatus}
             </if>
     </select>
+
+    <select id="selectOverTimeOrderList" parameterType="com.zhongzheng.modules.order.bo.OrderHandleQueryBo" resultType="com.zhongzheng.modules.order.vo.OrderHandleOverVo">
+        SELECT oh.*
+        FROM
+        order_handle oh
+        where 1=1 and oh.pay_status = 0 and  #{overTime} > oh.over_time
+    </select>
 </mapper>

+ 3 - 3
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

@@ -1141,7 +1141,7 @@
         SELECT
         too.order_id as order_id,
         too.check_time as timeStr,
-        too.order_received - too.order_refunded as money
+        too.order_price as money
         FROM
         top_old_order too
         WHERE
@@ -2460,7 +2460,7 @@
         too.order_sn as order_sn,
         too.order_id as order_id,
         too.check_time as timeStr,
-        too.order_received - too.order_refunded as money,
+        too.order_price as money,
         too.create_username,
         st.tenant_name
         FROM
@@ -2559,7 +2559,7 @@
         LIMIT 1
         )
         ) AS `business_name`,
-        too.order_received - too.order_refunded AS money,
+        too.order_price AS money,
         too.check_time as timeStr,
         too.create_username,
         st.tenant_name