Ver código fonte

1.云教练添加状态 操作人 操作时间 取消原因 2.添加取消接口

yuanliang 1 ano atrás
pai
commit
7610a975c0

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -9,6 +9,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -118,4 +119,8 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
     List<Map<Integer,BigDecimal>> sumPersonalCloudAmount(@Param("month") String month,
                                                          @Param("firstDay") String firstDayOfMonth,
                                                          @Param("lastDay") String lastDayOfMonth);
+
+    int cancelInactiveCloudTeacher(@Param("idList") List<Long> idList, @Param("cancelReason") String cancelReason,
+                                   @Param("operator") Integer operator, @Param("operateTime") Date operateTime,
+                                   @Param("tenantId") Integer tenantId);
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherCancel.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 取消云教练
+ */
+@ApiModel("取消云教练")
+@Data
+public class CloudTeacherCancel {
+
+    @ApiModelProperty("取消未激活的云教练,多个用逗号隔开")
+    private String ids;
+
+    @ApiModelProperty("取消原因")
+    private String cancelReason;
+
+}

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java

@@ -73,7 +73,16 @@ public class CloudTeacherOrder {
 
     @ApiModelProperty(value = "乐团编号")
     private String musicGroupId;
-    
+
+    @ApiModelProperty(value = "操作人")
+    private Long operator;
+
+    @ApiModelProperty(value = "操作时间")
+    private Long operateTime;
+
+    @ApiModelProperty(value = "取消原因")
+    private Long cancelReason;
+
     private StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 
     private Integer tenantId = TenantContextHolder.getTenantId();

+ 45 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherStudent.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.enums.PeriodEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * Description
@@ -58,6 +59,18 @@ public class CloudTeacherStudent {
     @ApiModelProperty(value = "数量")
     private Integer time;
 
+    @ApiModelProperty(value = "操作人")
+    private Integer operator;
+
+    @ApiModelProperty(value = "操作人名称")
+    private String operatorName;
+
+    @ApiModelProperty(value = "操作时间")
+    private Date operateTime;
+
+    @ApiModelProperty(value = "取消原因")
+    private String cancelReason;
+
     // ------------------------------------------------------------------------------------------
 
     public String getTransNo() {
@@ -180,4 +193,36 @@ public class CloudTeacherStudent {
     public void setAmount(BigDecimal amount) {
         this.amount = amount;
     }
+
+    public Integer getOperator() {
+        return operator;
+    }
+
+    public void setOperator(Integer operator) {
+        this.operator = operator;
+    }
+
+    public Date getOperateTime() {
+        return operateTime;
+    }
+
+    public void setOperateTime(Date operateTime) {
+        this.operateTime = operateTime;
+    }
+
+    public String getOperatorName() {
+        return operatorName;
+    }
+
+    public void setOperatorName(String operatorName) {
+        this.operatorName = operatorName;
+    }
+
+    public String getCancelReason() {
+        return cancelReason;
+    }
+
+    public void setCancelReason(String cancelReason) {
+        this.cancelReason = cancelReason;
+    }
 }

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudTeacherOrderQueryInfo.java

@@ -13,8 +13,8 @@ public class CloudTeacherOrderQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "乐团Id")
 	private String musicGroupId;
 
-	@ApiModelProperty(value = "交易状态(0-待生效 1-生效中 2-已生效 3-已退)")
-	private Integer status;
+	@ApiModelProperty(value = "交易状态(0-待生效 1-生效中 2-已生效 3-已退 4-已取消,多个状态用逗号隔开)")
+	private String status;
 
 	@ApiModelProperty(value = "学生编号")
 	private Integer studentId;
@@ -54,11 +54,11 @@ public class CloudTeacherOrderQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "结束时间")
 	private Date endTime;
 
-	public Integer getStatus() {
+	public String getStatus() {
 		return status;
 	}
 
-	public void setStatus(Integer status) {
+	public void setStatus(String status) {
 		this.status = status;
 	}
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java

@@ -120,4 +120,6 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
     void save(CloudTeacherOrder cloudTeacherOrder,Boolean autoActivationFlag);
 
     CloudTeacherOrder queryByOrderId(Long orderId);
+
+    Boolean cancelInactive(CloudTeacherCancel cloudTeacherCancel,Integer tenantId);
 }

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -3,11 +3,15 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
 import com.ym.mec.biz.dal.dto.Mapper;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
@@ -16,6 +20,7 @@ import com.ym.mec.biz.dal.enums.TenantOrderRecordEnum;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.service.IdGeneratorService;
@@ -24,6 +29,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import jodd.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,6 +65,12 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     @Autowired
     private SysConfigDao sysConfigDao;
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private EmployeeDao employeeDao;
+
     @Override
     public BaseDAO<Long, CloudTeacherOrder> getDAO() {
         return cloudTeacherOrderDao;
@@ -115,7 +127,18 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             return pageInfo;
         }
         assert dataList != null;
+
+        Map<Integer, SimpleUserDto> empMapById = new HashMap<>();
+        List<Integer> operatorIdList = dataList.stream().map(CloudTeacherStudent::getOperator)
+                .distinct().collect(Collectors.toList());
+        if (!operatorIdList.isEmpty()) {
+            List<SimpleUserDto> byIds = employeeDao.findByIds(operatorIdList);
+            byIds.forEach(next -> empMapById.put(next.getUserId(), next));
+        }
         for (CloudTeacherStudent cst : dataList) {
+            if (cst.getOperator() != null) {
+                cst.setOperatorName(empMapById.getOrDefault(cst.getOperator(), new SimpleUserDto()).getUserName());
+            }
             TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>().eq("tenant_id_", cst.getTenantId()));
             if (tenantConfig == null) {
                 throw new Exception("未找到组织Id " + cst.getTenantId().toString() + "在 TenantConfig 表");
@@ -353,4 +376,25 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     public String queryActiveOrderPage(Integer userId, Integer activeRemark, String remark) {
         return cloudTeacherOrderDao.queryActiveOrderPage(userId, activeRemark, remark);
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Boolean cancelInactive(CloudTeacherCancel cloudTeacherCancel,Integer tenantId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("登录失效,请重新登录");
+        }
+        String ids = cloudTeacherCancel.getIds();
+        if (StringUtils.isEmpty(ids)) {
+            throw new BizException("未指定删除云教练");
+        }
+
+        List<Long> idList = Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList());
+        int cancelNum = cloudTeacherOrderDao.cancelInactiveCloudTeacher(idList, cloudTeacherCancel.getCancelReason(),
+                sysUser.getId(), new Date(), tenantId);
+        if (cancelNum != idList.size()) {
+            throw new BizException("数据已更新,请刷新后重试");
+        }
+        return true;
+    }
 }

+ 15 - 2
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -331,6 +331,9 @@
                cto.tenant_id_ as tenantId,
                u.username_ as name,
                u.phone_ as phone
+               ,cto.operator_ as operator
+               ,cto.operate_time_ as operateTime
+               ,cto.cancel_reason_ as cancelReason
         from cloud_teacher_order cto
         left join student s on cto.student_id_ = s.user_id_
         left join sys_user u on cto.student_id_ = u.id_
@@ -339,7 +342,7 @@
             left join student_registration sr ON cto.student_id_ = sr.user_id_
         </if>
         <where>
-            cto.status_ = #{status} AND cto.tenant_id_ = #{tenantId}
+            FIND_IN_SET(cto.status_,#{status}) AND cto.tenant_id_ = #{tenantId}
             <if test="organIds != null and organIds != ''">
                 AND FIND_IN_SET(u.organ_id_ , #{organIds})
             </if>
@@ -366,7 +369,7 @@
             left join student_registration sr ON cto.student_id_ = sr.user_id_
         </if>
         <where>
-            cto.status_ = #{status} AND cto.tenant_id_ = #{tenantId}
+            FIND_IN_SET(cto.status_,#{status}) AND cto.tenant_id_ = #{tenantId}
             <if test="organIds != null and organIds != ''">
                 AND FIND_IN_SET(u.organ_id_ , #{organIds})
             </if>
@@ -520,4 +523,14 @@
           AND cto.settlement_report_flag_ = 0 AND cto.status_ = 2
         group by cto.organ_id_
     </select>
+
+    <update id="cancelInactiveCloudTeacher">
+        update cloud_teacher_order
+        set operator_ = #{operator}, status_=4 ,cancel_reason_=#{cancelReason},operate_time_=#{operateTime}
+        where id_ in
+        <foreach collection="idList" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        and status_ = 1 and tenant_id_ = #{tenantId}
+    </update>
 </mapper>

+ 14 - 2
mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.entity.CloudTeacherCancel;
 import com.ym.mec.biz.dal.entity.CloudTeacherStudent;
 import com.ym.mec.biz.dal.page.CloudTeacherAddQueryInfo;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
@@ -11,6 +12,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -49,7 +51,9 @@ public class CloudTeacherOrderController extends BaseController {
         Integer tenantId = TenantContextHolder.getTenantId();
         cloudTeacherOrderQueryInfo.setTenantId(tenantId);
         String organIds = organizationService.getEmployeeOrgan("");
-        cloudTeacherOrderQueryInfo.setStatus(1);
+        if (StringUtils.isEmpty(cloudTeacherOrderQueryInfo.getStatus())) {
+            cloudTeacherOrderQueryInfo.setStatus("1,4");
+        }
         cloudTeacherOrderQueryInfo.setOrganIds(organIds); // 1,2,34,
         return succeed(cloudTeacherOrderService.queryInactive(cloudTeacherOrderQueryInfo));
     }
@@ -60,7 +64,7 @@ public class CloudTeacherOrderController extends BaseController {
     public HttpResponseResult<PageInfo<CloudTeacherStudent>> queryActive(@RequestBody CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
         Integer tenantId = TenantContextHolder.getTenantId();
         cloudTeacherOrderQueryInfo.setTenantId(tenantId);
-        cloudTeacherOrderQueryInfo.setStatus(2);
+        cloudTeacherOrderQueryInfo.setStatus("2");
         return succeed(cloudTeacherOrderService.queryInactive(cloudTeacherOrderQueryInfo));
     }
 
@@ -86,4 +90,12 @@ public class CloudTeacherOrderController extends BaseController {
     public HttpResponseResult<Boolean> payCheck(@RequestParam String orderNo) {
         return succeed(cloudTeacherOrderService.payCheck(orderNo));
     }
+
+    @ApiOperation(value = "取消未激活的团练宝用户")
+    @PostMapping("/cancelInactive")
+    @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/cancelInactive')")
+    public HttpResponseResult<Boolean> cancelInactive(@RequestBody CloudTeacherCancel cloudTeacherCancel) {
+        Integer tenantId = TenantContextHolder.getTenantId();
+        return succeed(cloudTeacherOrderService.cancelInactive(cloudTeacherCancel,tenantId));
+    }
 }