浏览代码

Merge branch 'saas_zouxuan_2022_05_31' of http://git.dayaedu.com/yonge/mec into saas_2022_05_17_activity

zouxuan 3 年之前
父节点
当前提交
0e34fb8d0d
共有 46 个文件被更改,包括 667 次插入95 次删除
  1. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java
  2. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomDao.java
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java
  4. 47 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java
  5. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderDetail.java
  6. 23 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempBuyFreeLiveTheoryCourse.java
  7. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ImGroupQueryInfo.java
  8. 37 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/LiveRoomGoodsOrderQueryInfo.java
  9. 76 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/LiveRoomGoodsOrderVo.java
  10. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java
  11. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java
  12. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/PayService.java
  13. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderDetailService.java
  14. 5 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  15. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  16. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  17. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  18. 15 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  19. 24 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  20. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImSendGroupMessageServiceImpl.java
  21. 6 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsMapperServiceImpl.java
  22. 19 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  23. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  24. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OnlineMusicGroupServiceImpl.java
  25. 128 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  26. 7 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java
  27. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  28. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  29. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java
  30. 12 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  31. 8 8
      mec-biz/src/main/resources/config/mybatis/FinancialExpenditureMapper.xml
  32. 12 2
      mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  33. 52 0
      mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml
  34. 3 3
      mec-biz/src/main/resources/config/mybatis/ImSendGroupMessageMapper.xml
  35. 49 5
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml
  36. 3 0
      mec-biz/src/main/resources/config/mybatis/SysCouponMapper.xml
  37. 12 3
      mec-biz/src/main/resources/config/mybatis/TempBuyFreeLiveTheoryCourseMapper.xml
  38. 9 0
      mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java
  39. 4 0
      mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java
  40. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java
  41. 2 2
      mec-student/src/main/java/com/ym/mec/student/controller/ImGroupController.java
  42. 2 2
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  43. 5 5
      mec-web/src/main/java/com/ym/mec/web/controller/ImGroupController.java
  44. 7 0
      mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java
  45. 9 0
      mec-web/src/main/java/com/ym/mec/web/controller/ImSendGroupMessageController.java
  46. 2 1
      mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java

@@ -18,7 +18,8 @@ public interface ImGroupDao extends BaseDAO<String, ImGroup> {
 	 * @return
 	 */
 	List<ImGroup> queryByUserId(@Param("userId") Integer userId,
-								@Param("search") String search);
+								@Param("search") String search,
+								@Param("groupType") String groupType);
 
 	/**
 	 * 查询群成员列表

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomDao.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.common.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
@@ -41,5 +42,11 @@ public interface ImLiveBroadcastRoomDao extends BaseMapper<ImLiveBroadcastRoom>
                                                @Param("query") RoomReservationUserSearch query);
 
     String querySchoolIds(@Param("organIds") String organIds);
+
+    List<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(Map<String, Object> params);
+
+    int countLiveRoomGoodsOrderList(Map<String, Object> params);
+
+    Map sumLiveRoomGoodsOrderList(Map<String, Object> params);
 }
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java

@@ -26,6 +26,8 @@ public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPayme
      * @return
      */
     int batchAdd(@Param("studentPaymentOrderDetailList") List<StudentPaymentOrderDetail> studentPaymentOrderDetailList);
+    
+    int batchUpdate(List<StudentPaymentOrderDetail> studentPaymentOrderDetailList);
 
     /**
      * 查询注册支付的订单详情

+ 47 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java

@@ -1,8 +1,8 @@
 package com.ym.mec.biz.dal.entity;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
 import com.ym.mec.common.entity.BaseEntity;
+import com.ym.mec.common.enums.BaseEnum;
+import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
  * 对应数据库表(im_group):
@@ -31,7 +31,51 @@ public class ImGroup extends BaseEntity {
 
 	/** 乐团群 MUSIC,班级群 CLASS,训练营 TRAINING */
 	private String type;
-	
+
+	public enum GroupTypeEnum implements BaseEnum<String,GroupTypeEnum> {
+		NORMAL("NORMAL", "普通班级"), MIX("MIX", "合奏班级"), HIGH("HIGH", "提高班"),
+		VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), PRACTICE("PRACTICE", "网管课"),
+		SNAP("SNAP","临时班级"), COMM("COMM", "对外课程"), HIGH_ONLINE("HIGH_ONLINE", "网络基础训练课"),
+		MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课"),PARENT_MEETING("PARENT_MEETING","家长会"),TRAINING("TRAINING","训练营");
+
+		private String code;
+
+		private String msg;
+
+		GroupTypeEnum(String code, String msg) {
+			this.code = code;
+			this.msg = msg;
+		}
+
+		public void setCode(String code) {
+			this.code = code;
+		}
+
+		public String getMsg() {
+			return msg;
+		}
+
+		public void setMsg(String msg) {
+			this.msg = msg;
+		}
+
+		@Override
+		public String getCode() {
+			return this.code;
+		}
+	}
+
+	//群类型
+	private GroupTypeEnum groupType;
+
+	public GroupTypeEnum getGroupType() {
+		return groupType;
+	}
+
+	public void setGroupType(GroupTypeEnum groupType) {
+		this.groupType = groupType;
+	}
+
 	/**  */
 	private java.util.Date createTime;
 	

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

@@ -60,6 +60,10 @@ public class StudentPaymentOrderDetail extends BaseEntity {
 
 	//乐保是否是续费 0-否 1-是
 	private Integer isRenew;
+	
+	private String incomeItem;
+	
+	private BigDecimal income;
 
 	@ApiModelProperty(value = "子商品列表",required = false)
 	private List<Goods> childGoodsList;
@@ -208,4 +212,20 @@ public class StudentPaymentOrderDetail extends BaseEntity {
 	public void setCloudTeacherOrderDto(CloudTeacherOrderDto cloudTeacherOrderDto) {
 		this.cloudTeacherOrderDto = cloudTeacherOrderDto;
 	}
+
+	public String getIncomeItem() {
+		return incomeItem;
+	}
+
+	public void setIncomeItem(String incomeItem) {
+		this.incomeItem = incomeItem;
+	}
+
+	public BigDecimal getIncome() {
+		return income;
+	}
+
+	public void setIncome(BigDecimal income) {
+		this.income = income;
+	}
 }

+ 23 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempBuyFreeLiveTheoryCourse.java

@@ -12,6 +12,10 @@ public class TempBuyFreeLiveTheoryCourse {
 	
 	/**  */
 	private Integer userId;
+
+	private String liveId;
+
+	private Integer liveGoodsId;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -19,8 +23,26 @@ public class TempBuyFreeLiveTheoryCourse {
 	/**  */
 	private java.util.Date updateTime;
 
-	public TempBuyFreeLiveTheoryCourse(Integer userId) {
+	public TempBuyFreeLiveTheoryCourse(Integer userId,String liveId,Integer liveGoodsId) {
 		this.userId = userId;
+		this.liveId = liveId;
+		this.liveGoodsId = liveGoodsId;
+	}
+
+	public String getLiveId() {
+		return liveId;
+	}
+
+	public void setLiveId(String liveId) {
+		this.liveId = liveId;
+	}
+
+	public Integer getLiveGoodsId() {
+		return liveGoodsId;
+	}
+
+	public void setLiveGoodsId(Integer liveGoodsId) {
+		this.liveGoodsId = liveGoodsId;
 	}
 
 	public void setId(Integer id){

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ImGroupQueryInfo.java

@@ -16,6 +16,16 @@ public class ImGroupQueryInfo extends QueryInfo {
 
     private String targetIds;
 
+    private String groupType;
+
+    public String getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(String groupType) {
+        this.groupType = groupType;
+    }
+
     public String getTargetIds() {
         return targetIds;
     }

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/LiveRoomGoodsOrderQueryInfo.java

@@ -0,0 +1,37 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+import java.util.Date;
+
+public class LiveRoomGoodsOrderQueryInfo extends QueryInfo {
+    private String roomUid;
+
+    private Date startTime;
+
+    private Date endTime;
+
+    public String getRoomUid() {
+        return roomUid;
+    }
+
+    public void setRoomUid(String roomUid) {
+        this.roomUid = roomUid;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+}

+ 76 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/LiveRoomGoodsOrderVo.java

@@ -0,0 +1,76 @@
+package com.ym.mec.biz.dal.vo;
+
+import java.math.BigDecimal;
+
+public class LiveRoomGoodsOrderVo extends BaseRoomUserVo{
+
+    private String phone;
+
+    private String goodsName;
+
+    private BigDecimal actualPrice;
+
+    private BigDecimal expectPrice;
+
+    private BigDecimal balance;
+
+    private BigDecimal couponRemitFee;
+
+    private String payTime;
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getGoodsName() {
+        return goodsName;
+    }
+
+    public void setGoodsName(String goodsName) {
+        this.goodsName = goodsName;
+    }
+
+    public BigDecimal getActualPrice() {
+        return actualPrice;
+    }
+
+    public void setActualPrice(BigDecimal actualPrice) {
+        this.actualPrice = actualPrice;
+    }
+
+    public BigDecimal getExpectPrice() {
+        return expectPrice;
+    }
+
+    public void setExpectPrice(BigDecimal expectPrice) {
+        this.expectPrice = expectPrice;
+    }
+
+    public BigDecimal getBalance() {
+        return balance;
+    }
+
+    public void setBalance(BigDecimal balance) {
+        this.balance = balance;
+    }
+
+    public BigDecimal getCouponRemitFee() {
+        return couponRemitFee;
+    }
+
+    public void setCouponRemitFee(BigDecimal couponRemitFee) {
+        this.couponRemitFee = couponRemitFee;
+    }
+
+    public String getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(String payTime) {
+        this.payTime = payTime;
+    }
+}

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java

@@ -20,10 +20,10 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 	 * @param type 群类型
 	 * @return
 	 */
-	ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type);
+	ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type, ImGroup.GroupTypeEnum groupType);
 
 	//创建非课程类型的业务群组
-	String createGroup(List<String> userIdList,String groupName,String groupType);
+	String createGroup(List<String> userIdList,String groupName,String type, ImGroup.GroupTypeEnum groupType);
 
 	/**
 	 * 解散群组
@@ -38,7 +38,7 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 	 * @param search
 	 * @return
 	 */
-	List<ImGroup> queryByUserId(Integer userId, String search);
+	List<ImGroup> queryByUserId(Integer userId, String search,String groupType);
 
 	/**
 	 * 查询群成员列表
@@ -70,4 +70,6 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 	 * @return
 	 */
 	void updateNickName1(Integer userId, String nickName);
+
+	void updateImGroup(ImGroup imGroup);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
+import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.page.PageInfo;
@@ -94,5 +96,7 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
      * @return
      */
     PageInfo<RoomReservationUserVo> queryRoomUser(RoomReservationUserSearch query);
+    //查询直播间商品订单列表
+    PageInfo<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo);
 }
 

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/PayService.java

@@ -12,7 +12,8 @@ import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
 public interface PayService {
 	/**
 	*
-	* @param amount 支付金额
+	* @param amount 支付现金
+	* @param balanceAmount 支付余额
 	* @param orderNo 订单编号
 	* @param notifyUrl 回调地址
 	* @param returnUrl 返回地址

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

@@ -18,6 +18,8 @@ public interface StudentPaymentOrderDetailService extends BaseService<Long, Stud
      * @param studentPaymentOrderDetailList 订单详情
      */
     int batchAdd(List<StudentPaymentOrderDetail> studentPaymentOrderDetailList);
+    
+    int batchUpdate(List<StudentPaymentOrderDetail> studentPaymentOrderDetailList);
 
     /**
      * 按比例分摊优惠券减免金额-并且批量添加订单

+ 5 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -299,7 +299,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     userRoleMap.put(teacherId, "指导老师");
                 }
             }
-            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), musicGroup.getName(), musicGroup.getName(), musicGroup.getName(), null, "MUSIC");
+            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), musicGroup.getName(),
+                    musicGroup.getName(), musicGroup.getName(), null, "MUSIC", ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode()));
             imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
         }
         return true;
@@ -3745,7 +3746,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
         }
 
-        imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), musicGroup.getName(), musicGroup.getName(), musicGroup.getName(), null, "MUSIC");
+        imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(),
+                musicGroup.getName(), musicGroup.getName(), musicGroup.getName(), null, "MUSIC",
+                ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode()));
         imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
         imUserFriendService.refreshClassImUserFriend(classGroup.getId());
         return true;

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -257,7 +257,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
         teacherAttendanceDao.batchInsert(teacherAttendances);
         //创建群聊
-        imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), courseGroup.getName(), courseGroup.getName(), courseGroup.getName(), null, "COMM");
+        imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(),
+                courseGroup.getName(), courseGroup.getName(), courseGroup.getName(), null, "COMM", ImGroup.GroupTypeEnum.COMM);
         Map<Integer,String> userRoleMap = new HashMap(1);
         userRoleMap.put(courseGroup.getTeacherId(),"指导老师");
         imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
@@ -754,7 +755,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         userRoleMap.put(coursesGroup.getTeacherId(), "");
         userRoleMap.put(order.getUserId(), "");
         
-        imGroupService.create(classGroup.getId().toString(), coursesGroup.getTeacherId(), classGroup.getName(), classGroup.getName(), classGroup.getName(), classGroup.getName(), null, "COMM");
+        imGroupService.create(classGroup.getId().toString(), coursesGroup.getTeacherId(), classGroup.getName(),
+                classGroup.getName(), classGroup.getName(), classGroup.getName(), null, "COMM", ImGroup.GroupTypeEnum.COMM);
         imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
         imUserFriendService.refreshClassImUserFriend(classGroup.getId());
         return BaseController.succeed();

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -26,6 +26,7 @@ import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
 import com.ym.mec.util.ini.IniFileUtil;
 import com.ym.mec.util.upload.UploadUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.formula.functions.T;
@@ -39,6 +40,7 @@ import org.springframework.util.CollectionUtils;
 
 import javax.annotation.PostConstruct;
 import javax.servlet.http.HttpServletResponse;
+
 import java.io.*;
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
@@ -2444,6 +2446,10 @@ public class ExportServiceImpl implements ExportService {
                             row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
                             break;
                         case MUSICAL:
+                        	if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){
+                        		row.setCloudTeacherFee(orderDetail.getIncome());
+                        		break;
+                        	}
                             if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
                                 BigDecimal leaseFee = orderDetail.getPrice();
                                 if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
@@ -2456,9 +2462,17 @@ public class ExportServiceImpl implements ExportService {
                             break;
                         case ACCESSORIES:
                         case TEACHING:
+                        	if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){
+                        		row.setCloudTeacherFee(orderDetail.getIncome());
+                        		break;
+                        	}
                             row.setTeachingFee(row.getTeachingFee().add(orderDetail.getPrice()));
                             break;
                         case OTHER:
+                        	if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){
+                        		row.setCloudTeacherFee(orderDetail.getIncome());
+                        		break;
+                        	}
                             row.setOtherFee(row.getOtherFee().add(orderDetail.getPrice()));
                             break;
                         case MAINTENANCE:

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -100,7 +100,8 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			}
 			tags = vipGroup.getName();
 		}
-		ImGroup imGroup = imGroupService.create(imGroupId, null, classGroup.getName(), tags, tags, tags, null, classGroup.getGroupType().getCode());
+		ImGroup imGroup = imGroupService.create(imGroupId, null, classGroup.getName(), tags,
+				tags, tags, null, classGroup.getGroupType().getCode(), ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode()));
 		if(userId != null){
 			join(imGroupId,userId,roleType,isAdmin);
 		}

+ 15 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -59,7 +59,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type) {
+	public ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type, ImGroup.GroupTypeEnum groupType) {
 		ImGroup imGroup = imGroupDao.get(id);
 		if (imGroup != null) {
 			return imGroup;
@@ -83,6 +83,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 		imGroup.setTags(tags);
 		imGroup.setImg(img);
 		imGroup.setType(type);
+		imGroup.setGroupType(groupType);
 		imGroup.setUpdateTime(date);
 		imGroupDao.insert(imGroup);
 
@@ -103,10 +104,10 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public String createGroup(List<String> userIdList,String groupName,String groupType){
+	public String createGroup(List<String> userIdList,String groupName,String type, ImGroup.GroupTypeEnum groupType){
 		Optional.ofNullable(userIdList).filter(CollectionUtils::isNotEmpty).orElseThrow(() -> new BizException("群成员不能为空"));
 		Optional.ofNullable(groupName).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群名称不能为空"));
-		Optional.ofNullable(groupType).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群类型不能为空"));
+		Optional.ofNullable(type).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群类型不能为空"));
 		Date date = new Date();
 		ImGroup imGroup = new ImGroup();
 		String groupId = UUID.randomUUID().toString();
@@ -115,7 +116,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 		imGroup.setIntroduce(groupName);
 		imGroup.setMemberNum(userIdList.size());
 		imGroup.setName(groupName);
-		imGroup.setType(groupType);
+		imGroup.setType(type);
+		imGroup.setGroupType(groupType);
 		imGroup.setUpdateTime(date);
 		imGroupDao.insert(imGroup);
 		List<ImGroupMember> groupMemberList = imGroupMemberDao.queryMembers(groupId, userIdList, TenantContextHolder.getTenantId());
@@ -146,8 +148,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 	}
 
     @Override
-    public List<ImGroup> queryByUserId(Integer userId, String search) {
-		return imGroupDao.queryByUserId(userId, search);
+    public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) {
+		return imGroupDao.queryByUserId(userId, search,groupType);
     }
 
     @Override
@@ -186,4 +188,11 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 		//同步融云基本信息
 		imFeignService.update(new ImUserModel(sysUser.getId().toString(),nickName,sysUser.getAvatar()));
 	}
+
+    @Override
+	@Transactional(rollbackFor = Exception.class)
+    public void updateImGroup(ImGroup imGroup) {
+		imGroupDao.update(imGroup);
+		imFeignService.groupUpdate(new GroupModel(imGroup.getId(),null,imGroup.getName()));
+    }
 }

+ 24 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -18,9 +18,11 @@ import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
+import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import com.ym.mec.biz.dal.vo.RoomUserInfoVo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.entity.ImRoomMessage;
@@ -31,6 +33,7 @@ import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.im.ImFeignService;
+import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 import org.apache.commons.collections.CollectionUtils;
@@ -1181,13 +1184,32 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
     @Override
     public PageInfo<RoomReservationUserVo> queryRoomUser(RoomReservationUserSearch query) {
-
-
         IPage<RoomReservationUserVo> page = new Page<>(query.getPage(), query.getRows());
         page = baseMapper.queryRoomUser(page, query);
         return PageUtil.pageInfo(page);
     }
 
+    @Override
+    public PageInfo<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo) {
+        PageInfo<LiveRoomGoodsOrderVo> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<LiveRoomGoodsOrderVo> dataList = null;
+        int count = baseMapper.countLiveRoomGoodsOrderList(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = baseMapper.queryLiveRoomGoodsOrderList(params);
+            pageInfo.setStatInfo(baseMapper.sumLiveRoomGoodsOrderList(params));
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
     /**
      * 查询直播间所有用户信息
      *

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImSendGroupMessageServiceImpl.java

@@ -71,6 +71,10 @@ public class ImSendGroupMessageServiceImpl extends BaseServiceImpl<Long, ImSendG
 		if(message.getSendFlag()){
 			throw new BizException("消息已发送");
 		}
+		//如果是图片类型,图片地址不能为空
+		if((imSendGroupMessage.getMessageType() == ImSendTypeEnum.IMG || imSendGroupMessage.getMessageType() == ImSendTypeEnum.FILE) && StringUtils.isBlank(imSendGroupMessage.getFileUrl())){
+			throw new BizException("文件地址不能为空");
+		}
 		imSendGroupMessageDao.update(imSendGroupMessage);
 	}
 

+ 6 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LiveGoodsMapperServiceImpl.java

@@ -152,10 +152,12 @@ public class LiveGoodsMapperServiceImpl extends BaseServiceImpl<Integer, LiveGoo
 		//商品下架后,将缓存的库存设置为0
 		redissonClient.getBucket(RedisKeyConstant.LIVE_GOODS_STOCK_CACHE_KEY + liveId + liveGoodsId).set(0);
 		//如果下架的是免费的直播课商品,清空购买的学员的缓存记录
-		if(liveGoodsId.equals(2)){
-			//删除当前直播间免费直播课的购买记录缓存
-			redissonClient.getBucket(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY + liveId).delete();
-		}
+//		if(liveGoodsId.equals(2) || liveGoodsId.equals(3) || liveGoodsId.equals(4)){
+//			//删除当前直播间免费直播课的购买记录缓存
+//			StringBuffer sb = new StringBuffer(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY).append(liveId).
+//					append("_").append(liveGoodsId);
+//			redissonClient.getBucket(sb.toString()).delete();
+//		}
 	}
 
 	@Override

+ 19 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -275,23 +275,25 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             amount = vipGroupActivity.getMarketPrice();
             //扣减库存
             liveGoodsService.reduceGoodsStock(memberPayParamDto.getLiveGoodsId(),memberPayParamDto.getLiveId());
-        } else if (memberPayParamDto.getLiveGoodsId() == 2){
-            RBucket<List<Integer>> bucket = redissonClient.getBucket(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY + memberPayParamDto.getLiveId());
+        } else if (memberPayParamDto.getLiveGoodsId() == 2 || memberPayParamDto.getLiveGoodsId() == 3 || memberPayParamDto.getLiveGoodsId() == 4){
+            StringBuffer sb = new StringBuffer(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY).append(memberPayParamDto.getLiveGoodsId());
+            RBucket<List<Integer>> bucket = redissonClient.getBucket(sb.toString());
             List<Integer> list = bucket.get();
             if(CollectionUtils.isEmpty(list)){
                 list = new ArrayList<>();
             }
             //当前用户是否购买过免费直播课
             if(list.contains(sysUser.getId())){
-                throw new BizException("您已购买过本轮免费直播课");
+                throw new BizException("您已领取过本轮免费直播课");
             }
             //购买次数是否超过2次
-            int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
-            if(count >= 2){
-                throw new BizException("免费直播课已达到购买次数上限");
-            }
+//            int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
+//            if(count >= 2){
+//                throw new BizException("免费直播课已达到领取次数上限");
+//            }
             //保存购买记录
-            tempBuyFreeLiveTheoryCourseDao.insert(new TempBuyFreeLiveTheoryCourse(sysUser.getId()));
+            tempBuyFreeLiveTheoryCourseDao.insert(
+                    new TempBuyFreeLiveTheoryCourse(sysUser.getId(),memberPayParamDto.getLiveId(),memberPayParamDto.getLiveGoodsId()));
             //扣减库存
             liveGoodsService.reduceGoodsStock(memberPayParamDto.getLiveGoodsId(),memberPayParamDto.getLiveId());
             list.add(sysUser.getId());
@@ -342,23 +344,24 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                     return succeed;
                 }
             }
-        } else if (memberPayParamDto.getLiveGoodsId() == 2){
-            RBucket<List<Integer>> bucket = redissonClient.getBucket(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY + memberPayParamDto.getLiveId());
+        } else if (memberPayParamDto.getLiveGoodsId() == 2 || memberPayParamDto.getLiveGoodsId() == 3 || memberPayParamDto.getLiveGoodsId() == 4){
+            StringBuffer sb = new StringBuffer(RedisKeyConstant.LIVE_GOODS_ZERO_CACHE_KEY).append(memberPayParamDto.getLiveGoodsId());
+            RBucket<List<Integer>> bucket = redissonClient.getBucket(sb.toString());
             List<Integer> list = bucket.get();
             if(CollectionUtils.isEmpty(list)){
                 list = new ArrayList<>();
             }
             //当前用户是否购买过免费直播课
             if(list.contains(sysUser.getId())){
-                succeed.setMsg("您已购买过本轮免费直播课");
+                succeed.setMsg("您已领取过本轮免费直播课");
                 return succeed;
             }
             //购买次数是否超过2次
-            int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
-            if(count >= 2){
-                succeed.setMsg("免费直播课已达到购买次数上限");
-                return succeed;
-            }
+//            int count = tempBuyFreeLiveTheoryCourseDao.countByUserId(sysUser.getId());
+//            if(count >= 2){
+//                succeed.setMsg("免费直播课已达到领取次数上限");
+//                return succeed;
+//            }
         }else {
             succeed.setMsg("当前商品不可购买");
             return succeed;

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1879,7 +1879,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         musicGroupDao.update(musicGroup);
 
         // 创建群
-        imGroupService.create(musicGroupId, null, "乐团预报名", null, musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode());
+        imGroupService.create(musicGroupId, null, "乐团预报名", null,
+                musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode(), ImGroup.GroupTypeEnum.PARENT_MEETING);
 
         Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
 

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OnlineMusicGroupServiceImpl.java

@@ -291,7 +291,8 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
         userRoleMap.put(onlineMusicGroupCourseInfo.getTeacherId(), "指导老师");
         
         // 创建群组
-        imGroupService.create(classGroup.getId().toString(), musicGroup.getEducationalTeacherId(), classGroup.getName(), classGroup.getName(), classGroup.getName(), classGroup.getName(), null, "MUSIC");
+        imGroupService.create(classGroup.getId().toString(), musicGroup.getEducationalTeacherId(), classGroup.getName(),
+                classGroup.getName(), classGroup.getName(), classGroup.getName(), null, "MUSIC", ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode()));
         imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
 
         List<String> courseTimes = courses.stream().map(c -> DateUtil.dateToString(c.getStartClassTime(), "yyyy-MM-dd HH:mm")).collect(Collectors.toList());

+ 128 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -9,7 +9,6 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -23,16 +22,20 @@ import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.AmountChannelDto;
 import com.ym.mec.biz.dal.dto.RouteScaleDto;
+import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.HfMember;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
-import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.entity.SysPaymentConfig;
 import com.ym.mec.biz.dal.enums.FeeTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
+import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.biz.service.PayService;
 import com.ym.mec.biz.service.SellOrderService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysPaymentConfigService;
@@ -50,6 +53,13 @@ import com.ym.mec.util.date.DateUtil;
 public class PayServiceImpl implements PayService {
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
+    
+    @Autowired
+    private StudentPaymentOrderDetailService studentPaymentOrderDetailService;
+    
+    @Autowired
+    private GoodsService goodsService;
+    
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
@@ -111,6 +121,8 @@ public class PayServiceImpl implements PayService {
             return unionPay;
         }
         
+		Date date = new Date();
+        
         //如果当前是买的小课/网管课
 		if (studentPaymentOrder != null && studentPaymentOrder.getType() == OrderTypeEnum.SMALL_CLASS_TO_BUY || studentPaymentOrder.getType() == OrderTypeEnum.PRACTICE_GROUP_BUY
 				|| studentPaymentOrder.getType() == OrderTypeEnum.PRACTICE_GROUP_RENEW) {
@@ -122,7 +134,6 @@ public class PayServiceImpl implements PayService {
 			String isPlatformCollection = sysConfigDao.findConfigValue(SysConfigService.IS_OPEN_SMALL_CLASS_INCOME_TO_PLATFORM);
 			
 			if (StringUtils.equals("1", isPlatformCollection) && !ignoreOrganList.contains(organId)) {
-				Date date = new Date();
 	        	
 	        	String merNo = sysConfigDao.findConfigValue(SysConfigService.PLATFORM_PAYEE_ACCOUNT);
 	        	
@@ -158,12 +169,125 @@ public class PayServiceImpl implements PayService {
 			}
 			
 		}
+
+		BigDecimal subBalance = BigDecimal.ZERO;
+		
+		BigDecimal subCashAmount = BigDecimal.ZERO;
+    	//忽略的分部
+		List<Integer> ignoreOrganList = Arrays.asList(4, 55, 59);
+		
+		//查询商品收款账户配置
+        String goodsSellReceiptMerNo = sysConfigDao.findConfigValue("goodsSellReceiptMerNo");
+        
+        if(!ignoreOrganList.contains(organId) && StringUtils.isNotBlank(goodsSellReceiptMerNo)){
+			
+        	//根据商户号查询对应分部
+        	SysPaymentConfig sysPaymentConfig = sysPaymentConfigService.findPaymentConfigByMerNo(StringUtils.trim(goodsSellReceiptMerNo));
+        	
+        	if(sysPaymentConfig != null){
+
+    			List<StudentPaymentOrderDetail> batchUpdateList = new ArrayList<StudentPaymentOrderDetail>();
+        		
+        		// 如果买了商品或组合商品,商品有内部库存,则将钱转入指定账户已云教练的方式作为收费项目(杭州、齐齐哈尔除外)
+        		// 1.查询商品订单明细
+        		List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.queryOrderDetail(studentPaymentOrder.getId());
+        		if (studentPaymentOrderDetailList != null && studentPaymentOrderDetailList.size() > 0) {
+        			
+        			String goodIds = studentPaymentOrderDetailList.stream().filter(t -> StringUtils.isNotBlank(t.getGoodsIdList())).map(StudentPaymentOrderDetail :: getGoodsIdList).collect(Collectors.joining(","));
+        			if(StringUtils.isNotBlank(goodIds)){
+        				List<Goods> goodsList = goodsService.findGoodsByIds(goodIds);
+        				
+        				Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
+        				Goods goods = null;
+        				BigDecimal totalAmout = studentPaymentOrder.getExpectAmount();
+        				
+        				for(StudentPaymentOrderDetail spod : studentPaymentOrderDetailList){
+        					
+        					if(StringUtils.isBlank(spod.getGoodsIdList())){
+        						continue;
+        					}
+        					BigDecimal tempBalance = BigDecimal.ZERO;
+        					
+        					BigDecimal tempCashAmount = BigDecimal.ZERO;
+        					
+        					BigDecimal totalGroupPurchaseAmount = BigDecimal.ZERO;
+        					
+        					BigDecimal groupPurchaseAmount = BigDecimal.ZERO;
+        					
+        					for(String goodsIdStr : spod.getGoodsIdList().split(",")){
+        						if(StringUtils.isBlank(goodsIdStr)){
+        							continue;
+        						}
+        						goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+        						
+        						if(goods != null){
+        							// 是否是组合商品
+        							if(StringUtils.isNotBlank(goods.getComplementGoodsIdList())){
+        								goodsList = goodsService.findGoodsByIds(goods.getComplementGoodsIdList());
+        								totalGroupPurchaseAmount =  totalGroupPurchaseAmount.add(goodsList.stream().map(Goods :: getGroupPurchasePrice).reduce(BigDecimal.ZERO,BigDecimal :: add));
+        								
+        								for(Goods subGoods : goodsList){
+        									//判断是否有内部库存
+        									if(subGoods.getStockCount() > 0){
+        										groupPurchaseAmount = groupPurchaseAmount.add(subGoods.getGroupPurchasePrice());
+        									}
+        								}
+        							}else{
+    									totalGroupPurchaseAmount = totalGroupPurchaseAmount.add(goods.getGroupPurchasePrice());
+        								//判断是否有内部库存
+        								if(goods.getStockCount() > 0){
+    										groupPurchaseAmount = groupPurchaseAmount.add(goods.getGroupPurchasePrice());
+        								}
+        							}
+        						}
+        					}
+        					
+							if (groupPurchaseAmount.doubleValue() > 0) {
+	        					// 3.是否使用余额
+								if (balanceAmount.doubleValue() > 0) {
+									tempBalance = balanceAmount.multiply(spod.getPrice()).divide(totalAmout).multiply(groupPurchaseAmount)
+											.divide(totalGroupPurchaseAmount);
+									subBalance = subBalance.add(tempBalance);
+								}
+								tempCashAmount = spod.getPrice().subtract(tempBalance).multiply(groupPurchaseAmount).divide(totalGroupPurchaseAmount);
+								subCashAmount = subCashAmount.add(tempCashAmount);
+								spod.setIncomeItem(OrderDetailTypeEnum.CLOUD_TEACHER.name());
+								spod.setIncome(tempCashAmount);
+								batchUpdateList.add(spod);
+							}
+        				}
+        			}
+        		}
+        		
+        		if(batchUpdateList.size() > 0){
+        			studentPaymentOrderDetailService.batchUpdate(batchUpdateList);
+        		}
+        		
+        		if(subCashAmount.doubleValue() > 0){
+        			StudentPaymentRouteOrder studentPaymentRouteOrder = new StudentPaymentRouteOrder();
+    	            studentPaymentRouteOrder.setOrderNo(orderNo);
+    	            studentPaymentRouteOrder.setRouteOrganId(sysPaymentConfig.getOrganId());
+    	            studentPaymentRouteOrder.setFeeFlag("Y");
+    	            studentPaymentRouteOrder.setRouteAmount(subCashAmount);
+    	            studentPaymentRouteOrder.setRouteBalanceAmount(subBalance);
+    	            studentPaymentRouteOrder.setMerNo(goodsSellReceiptMerNo);
+    	            studentPaymentRouteOrder.setSaleAmount(BigDecimal.ZERO);
+    	            studentPaymentRouteOrder.setServiceAmount(amount);
+    	            studentPaymentRouteOrder.setCreateTime(date);
+    	            studentPaymentRouteOrder.setUpdateTime(date);
+    	            studentPaymentRouteOrderDao.insert(studentPaymentRouteOrder);
+        		}
+        	}
+        }
+		
+		amount = amount.subtract(subCashAmount);
+		balanceAmount = balanceAmount.subtract(subBalance);
         
         String usePaymentConfig = sysConfigDao.findConfigValue("use_payment_config");// 是否用收费配置(1:使用 0:不使用)
         List<RouteScaleDto> routeScaleDtos = null;
         //使用配置开关
         if (usePaymentConfig.equals("0")) {
-            routeScaleDtos = noUsePaymentConfig(amount);
+            routeScaleDtos = noUsePaymentConfig(amount); //款项都收到平台商户
         }
 
         //根据费用类型

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
+
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -75,7 +76,12 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                 .orElse(0);
     }
 
-    @Transactional(rollbackFor = Exception.class)
+    @Override
+	public int batchUpdate(List<StudentPaymentOrderDetail> studentPaymentOrderDetailList) {
+		return studentPaymentOrderDetailDao.batchUpdate(studentPaymentOrderDetailList);
+	}
+
+	@Transactional(rollbackFor = Exception.class)
     @Override
     public int allocateAndAdd(List<StudentPaymentOrderDetail> studentPaymentOrderDetailList, BigDecimal couponRemitFee) {
         return Optional.ofNullable(studentPaymentOrderDetailList)

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

@@ -349,8 +349,6 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount(),
                     PlatformCashAccountDetailTypeEnum.REFUNDS, order.getMemo() + ",订单号:" + order.getOrderNo());
 
-            //退还优惠券
-            sysCouponCodeService.quit(order.getCouponCodeId());
             if (StringUtils.isNotBlank(order.getPaymentChannel())
                     && order.getPaymentChannel().equals("ADAPAY")
                     && !rpMap.containsKey("simulation")) {

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -273,11 +273,11 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	public void batchSendImGroupMessage(String[] targetIds,String senderId,String extra,String imgUrl ) throws Exception {
 		URL url = new URL(imgUrl);
 		//获取文件名
-		String path = url.getPath();
-		String suffix = path.substring(path.lastIndexOf(".") + 1);
+//		String path = url.getPath();
+//		String suffix = path.substring(path.lastIndexOf(".") + 1);
 		BufferedImage bufferedImage = Thumbnails.of(url).scale(0.1f).outputQuality(0.25f).asBufferedImage();
 		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-		ImageIO.write(bufferedImage, suffix, outputStream);
+		ImageIO.write(bufferedImage, "png", outputStream);
 		byte[] bytes = outputStream.toByteArray();
 		outputStream.close();
 		int length = bytes.length;
@@ -286,7 +286,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			throw new BizException("文件过大请调整 像素 或 文件大小");
 		}
 		ImMessageDto imMessageDto =
-				getImGroupMessage("RC:ImgMsg",senderId,targetIds,imageToBase64(bufferedImage, suffix),extra);
+				getImGroupMessage("RC:ImgMsg",senderId,targetIds,imageToBase64(bufferedImage, "png"),extra);
 		imMessageDto.setFileUrl(imgUrl);
 		ExecutorService executor = Executors.newCachedThreadPool();
 		CompletableFuture.runAsync(()->{

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java

@@ -441,7 +441,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
             //如果人数小于最大人数 则直接分组
             if (maxUserNum.intValue() >= applyNum.intValue()) {
                 //分组
-                String groupId = imGroupService.createGroup(userStrList, camp.getName() + "-1群", groupType);
+                String groupId = imGroupService.createGroup(userStrList, camp.getName() + "-1群", groupType, ImGroup.GroupTypeEnum.TRAINING);
                 imGroupIds.add(groupId);
                 //修改关系表
                 updateGroup.accept(groupId, userStrList);
@@ -455,7 +455,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
                 //群号
                 AtomicInteger i = new AtomicInteger(1);
                 partition.forEach(list -> {
-                    String groupId = imGroupService.createGroup(list, camp.getName() + "-" + i.get() + "群", groupType);
+                    String groupId = imGroupService.createGroup(list, camp.getName() + "-" + i.get() + "群", groupType, ImGroup.GroupTypeEnum.TRAINING);
                     updateGroup.accept(groupId, list);
                     //修改关系表
                     imGroupIds.add(groupId);

+ 12 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1099,7 +1099,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 //		courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
 
         try {
-            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(), vipGroupApplyBaseInfoDto.getName(), null, null, GroupType.VIP.getCode());
+            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
+                    vipGroupApplyBaseInfoDto.getName(), null, null, GroupType.VIP.getCode(), ImGroup.GroupTypeEnum.VIP);
             imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
             imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
             //发送推送
@@ -1503,7 +1504,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         }
 //		courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
         try {
-            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(), applyBaseInfo.getName(), null, null, GroupType.VIP.getCode());
+            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
+                    applyBaseInfo.getName(), null, null, GroupType.VIP.getCode(), ImGroup.GroupTypeEnum.VIP);
             imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
             imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
 //			SysUser sysUser = teacherDao.getUser(applyBaseInfo.getUserId());
@@ -2549,7 +2551,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 //		courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
 
         try {
-            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
+            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
+                    vipGroup.getName(), null, null, GroupType.VIP.getCode(), ImGroup.GroupTypeEnum.VIP);
             imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
             imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
             //发送推送短信
@@ -2855,7 +2858,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
                     courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
 
-                    imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
+                    imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
+                            vipGroup.getName(), null, null, GroupType.VIP.getCode(), ImGroup.GroupTypeEnum.VIP);
                     imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
                     imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(), classGroup.getGroupType());
                 }
@@ -4365,7 +4369,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             classGroupDao.update(classGroup);
 
             try {
-                imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
+                imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(),
+                        classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode(), ImGroup.GroupTypeEnum.VIP);
                 imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
                 imUserFriendService.refreshClassImUserFriend(classGroup.getId());
             } catch (Exception e) {
@@ -4493,7 +4498,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
 
         try {
-            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
+            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(),
+                    vipGroup.getName(), null, null, GroupType.VIP.getCode(), ImGroup.GroupTypeEnum.VIP);
             imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
 
             imUserFriendService.refreshGroupImUserFriend(vipGroup.getId().toString(), GroupType.VIP);

+ 8 - 8
mec-biz/src/main/resources/config/mybatis/FinancialExpenditureMapper.xml

@@ -230,26 +230,26 @@
         <result property="deptId" column="dept_id"/>
     </resultMap>
     <select id="getWorkOrderInfo" resultMap="PWorkOrderInfo">
-        SELECT woi.*,su.mec_user_id FROM mec_dev_api.p_work_order_info woi
-        LEFT JOIN mec_dev_api.p_work_order_circulation_history woch ON woi.id = woch.work_order
-        LEFT JOIN mec_dev_api.p_process_info pi ON pi.id = woi.classify
-        LEFT JOIN mec_dev_api.sys_user su ON su.user_id = woi.creator
+        SELECT woi.*,su.mec_user_id FROM oa_pro.p_work_order_info woi
+        LEFT JOIN oa_pro.p_work_order_circulation_history woch ON woi.id = woch.work_order
+        LEFT JOIN oa_pro.p_process_info pi ON pi.id = woi.classify
+        LEFT JOIN oa_pro.sys_user su ON su.user_id = woi.creator
         WHERE woi.is_end = 1  AND woi.is_denied = 0  AND woi.is_cancel = 0
         AND woch.`status` != 0 AND woi.id = #{workOrderId} AND pi.fee_type = 1 LIMIT 1
     </select>
     <select id="getFormStructure" resultType="java.lang.String">
-        SELECT form_structure FROM mec_dev_api.p_work_order_tpl_data WHERE work_order = #{workOrderId}
+        SELECT form_structure FROM oa_pro.p_work_order_tpl_data WHERE work_order = #{workOrderId}
     </select>
     <select id="getFormData" resultType="java.lang.String">
-        SELECT form_data FROM mec_dev_api.p_work_order_tpl_data WHERE work_order = #{workOrderId}
+        SELECT form_data FROM oa_pro.p_work_order_tpl_data WHERE work_order = #{workOrderId}
     </select>
     <select id="getTplInfo" resultType="java.lang.String">
-        SELECT form_structure FROM mec_dev_api.p_tpl_info WHERE id = #{tplInfoId}
+        SELECT form_structure FROM oa_pro.p_tpl_info WHERE id = #{tplInfoId}
     </select>
     <select id="findByBatchNoAndProcessNo" resultType="integer">
         SELECT id_ FROM financial_expenditure WHERE batch_no_ = #{workOrderId} AND financial_process_no_ = #{workOrderId} LIMIT 1
     </select>
     <select id="getDeptId" resultType="java.lang.Integer">
-        SELECT organ_id FROM mec_dev_api.sys_dept WHERE dept_id = #{deptId}
+        SELECT organ_id FROM oa_pro.sys_dept WHERE dept_id = #{deptId}
     </select>
 </mapper>

+ 12 - 2
mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -15,6 +15,7 @@
 		<result column="tags_" property="tags" />
 		<result column="img_" property="img" />
 		<result column="type_" property="type" />
+		<result column="group_type_" property="groupType" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
         <result column="tenant_id_" property="tenantId"/>
@@ -52,13 +53,16 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImGroup" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO im_group (id_,name_,introduce_,member_num_,memo_,tags_,img_,type_,create_time_,update_time_,tenant_id_)
-		VALUES(#{id},#{name},#{introduce},#{memberNum},#{memo},#{tags},#{img},#{type},#{createTime},#{updateTime},#{tenantId})
+		INSERT INTO im_group (id_,name_,introduce_,member_num_,memo_,tags_,img_,type_,create_time_,update_time_,tenant_id_,group_type_)
+		VALUES(#{id},#{name},#{introduce},#{memberNum},#{memo},#{tags},#{img},#{type},#{createTime},#{updateTime},#{tenantId},#{groupType})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ImGroup">
 		UPDATE im_group <set>
+		<if test="groupType != null">
+			group_type_ = #{groupType},
+		</if>
 		<if test="memberNum != null">
 		member_num_ = #{memberNum},
 		</if>
@@ -119,6 +123,9 @@
 		<if test="targetIds != null and targetIds != ''">
 			AND FIND_IN_SET(ig.id_,#{targetIds})
 		</if>
+		<if test="groupType != null">
+			AND ig.group_type_ = #{groupType}
+		</if>
 	</sql>
 	
 	<!-- 分页查询 -->
@@ -144,6 +151,9 @@
 		<if test="search != null and search != ''">
 			AND (ig.name_ like concat('%',#{search},'%') or ig.tags_ like concat('%',#{search},'%'))
 		</if>
+		<if test="groupType != null and groupType != ''">
+			AND ig.group_type_ = #{groupType}
+		</if>
 	</select>
 	
 	<select id="queryMemberById" resultMap="ImGroupMemberDto">

+ 52 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -140,6 +140,58 @@
             </foreach>
         </where>
     </select>
+    <resultMap id="LiveRoomGoodsOrderVo" type="com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo">
+        <result property="userId" column="user_id_"/>
+        <result property="userName" column="username_"/>
+        <result property="phone" column="phone_"/>
+        <result property="goodsName" column="goods_name_"/>
+        <result property="actualPrice" column="actual_amount_"/>
+        <result property="expectPrice" column="expect_amount_"/>
+        <result property="balance" column="balance_payment_amount_"/>
+        <result property="couponRemitFee" column="coupon_remit_fee_"/>
+        <result property="payTime" column="pay_time_"/>
+        <result property="goodsName" column="goods_name_"/>
+    </resultMap>
+    <sql id="queryLiveRoomGoodsOrderSql">
+        <where>
+            spo.group_type_ = 'LIVE_BUY' AND spo.type_ = 'LIVE_BUY'
+            AND spo.status_ = 'SUCCESS'
+            <if test="search != null and search != ''">
+                AND (su.id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+            <if test="roomUid != null and roomUid != ''">
+                AND spo.music_group_id_ = #{roomUid}
+            </if>
+            <if test="startTime != null">
+                AND DATE_FORMAT(spo.pay_time_, '%Y-%m-%d') >= #{startTime}
+            </if>
+            <if test="endTime != null">
+                AND DATE_FORMAT(spo.pay_time_, '%Y-%m-%d') &lt;= #{endTime}
+            </if>
+        </where>
+    </sql>
+    <select id="queryLiveRoomGoodsOrderList" resultMap="LiveRoomGoodsOrderVo">
+        SELECT su.id_ user_id_,su.username_,su.phone_,spo.actual_amount_,spo.expect_amount_,
+        spo.balance_payment_amount_,spo.coupon_remit_fee_,spo.pay_time_,GROUP_CONCAT(lg.name_) goods_name_ FROM student_payment_order spo
+        LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_
+        LEFT JOIN live_goods lg ON FIND_IN_SET(lg.id_,spod.goods_id_list_)
+        LEFT JOIN sys_user su ON su.id_ = spo.user_id_
+        <include refid="queryLiveRoomGoodsOrderSql"/>
+        GROUP BY spo.id_
+        ORDER BY spo.pay_time_ DESC
+        <include refid="global.limit"/>
+    </select>
+    <select id="countLiveRoomGoodsOrderList" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT spo.id_) FROM student_payment_order spo
+        LEFT JOIN sys_user su ON su.id_ = spo.user_id_
+        <include refid="queryLiveRoomGoodsOrderSql"/>
+    </select>
+    <select id="sumLiveRoomGoodsOrderList" resultType="java.util.Map">
+        SELECT COUNT(DISTINCT spo.user_id_) buyNum,SUM(spo.expect_amount_) totalAmount
+        FROM student_payment_order spo
+        LEFT JOIN sys_user su ON su.id_ = spo.user_id_
+        <include refid="queryLiveRoomGoodsOrderSql"/>
+    </select>
 
     <select id="queryRoomUser" resultType="com.ym.mec.biz.dal.vo.RoomReservationUserVo">
 

+ 3 - 3
mec-biz/src/main/resources/config/mybatis/ImSendGroupMessageMapper.xml

@@ -79,10 +79,10 @@
 			extra = #{extra},
 			</if>
 			<if test="updateTime != null">
-			update_time_ = #{updateTime},
+				update_time_ = #{updateTime},
 			</if>
-			<if test="fileUrl != null">
-			file_url_ = #{fileUrl},
+			<if test="fileUrl != null and fileUrl != ''">
+				file_url_ = #{fileUrl},
 			</if>
 			</set> WHERE id_ = #{id}
 	</update>

+ 49 - 5
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml

@@ -19,8 +19,9 @@
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="student_instrument_id_" property="studentInstrumentId"/>
         <result column="is_renew_" property="isRenew"/>
+        <result column="income_item_" property="incomeItem"/>
+        <result column="income_" property="income"/>
         <result column="user_id_" property="userId"/>
-        <result column="remit_fee_" property="remitFee"/>
         <collection property="goodsList" ofType="com.ym.mec.biz.dal.entity.Goods">
             <result column="goods_id_" property="id"/>
             <result column="goods_name_" property="name"/>
@@ -63,10 +64,10 @@
             keyColumn="id" keyProperty="id">
         INSERT INTO student_payment_order_detail
         (type_,goods_id_list_,price_,create_time_,update_time_,payment_order_id_,kit_group_purchase_type_,
-         student_instrument_id_,is_renew_,tenant_id_,remit_fee_)
+         student_instrument_id_,is_renew_,income_item_,income_,tenant_id_,remit_fee_)
         VALUES(#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{goodsIdList},#{price},now(),now(),
         #{paymentOrderId},#{kitGroupPurchaseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-               #{studentInstrumentId},#{isRenew},#{tenantId},#{remitFee})
+               #{studentInstrumentId},#{isRenew},#{incomeItem},#{income},#{tenantId},#{remitFee})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -95,9 +96,52 @@
             <if test="studentInstrumentId != null">
                 student_instrument_id_ = #{studentInstrumentId},
             </if>
+            <if test="incomeItem != null">
+                income_item_ = #{incomeItem},
+            </if>
+            <if test="income != null">
+                income_ = #{income},
+            </if>
         </set>
         WHERE id_ = #{id} and tenant_id_ = #{tenantId}
     </update>
+    
+    <update id="batchUpdate" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
+	        UPDATE student_payment_order_detail
+	        <set>
+	            <if test="item.price != null">
+	                price_ = #{item.price},
+	            </if>
+	            <if test="item.goodsIdList != null">
+	                goods_id_list_ = #{item.goodsIdList},
+	            </if>
+	            <if test="item.updateTime != null">
+	                update_time_ = NOW(),
+	            </if>
+	            <if test="item.paymentOrderId != null">
+	                payment_order_id_ = #{item.paymentOrderId},
+	            </if>
+	            <if test="item.kitGroupPurchaseType != null">
+	                kit_group_purchase_type_ =
+	                #{item.kitGroupPurchaseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="item.type != null">
+	                type_ = #{item.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
+	            <if test="item.studentInstrumentId != null">
+	                student_instrument_id_ = #{item.studentInstrumentId},
+	            </if>
+	            <if test="item.incomeItem != null">
+	                income_item_ = #{item.incomeItem},
+	            </if>
+	            <if test="item.income != null">
+	                income_ = #{item.income},
+	            </if>
+	        </set>
+	        WHERE id_ = #{item.id} and tenant_id_ = #{item.tenantId}
+        </foreach>
+    </update>
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">
@@ -121,13 +165,13 @@
     <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
         INSERT INTO student_payment_order_detail
         (type_,goods_id_list_,price_,remit_fee_,create_time_,update_time_,payment_order_id_,
-         kit_group_purchase_type_,student_instrument_id_,is_renew_,tenant_id_)
+         kit_group_purchase_type_,student_instrument_id_,is_renew_,income_item_,income_,tenant_id_)
         VALUE
         <foreach collection="studentPaymentOrderDetailList" item="orderDetail" separator=",">
             (#{orderDetail.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{orderDetail.goodsIdList},#{orderDetail.price},#{orderDetail.remitFee},now(),now(),#{orderDetail.paymentOrderId},
             #{orderDetail.kitGroupPurchaseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-            #{orderDetail.studentInstrumentId},#{orderDetail.isRenew},#{orderDetail.tenantId})
+            #{orderDetail.studentInstrumentId},#{orderDetail.isRenew},#{orderDetail.incomeItem},#{orderDetail.income},#{orderDetail.tenantId})
         </foreach>
     </insert>
 

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/SysCouponMapper.xml

@@ -106,6 +106,9 @@
 			<if test="useCondition != null">
 				use_condition_ = #{useCondition},
 			</if>
+			<if test="issuanceType != null">
+				issuance_type_ = #{issuanceType},
+			</if>
 				update_time_ = NOW()
 		</set>
 		WHERE id_ = #{id} and tenant_id_ = #{tenantId}

+ 12 - 3
mec-biz/src/main/resources/config/mybatis/TempBuyFreeLiveTheoryCourseMapper.xml

@@ -9,6 +9,8 @@
 	<resultMap type="com.ym.mec.biz.dal.entity.TempBuyFreeLiveTheoryCourse" id="TempBuyFreeLiveTheoryCourse">
 		<result column="id_" property="id" />
 		<result column="user_id_" property="userId" />
+		<result column="live_id_" property="liveId" />
+		<result column="live_goods_id_" property="liveGoodsId" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
@@ -25,17 +27,24 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.TempBuyFreeLiveTheoryCourse" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO temp_buy_free_live_theory_course (user_id_,create_time_,update_time_) VALUES(#{userId},NOW(),NOW())
+		INSERT INTO temp_buy_free_live_theory_course (user_id_,live_id_,live_goods_id_,create_time_,update_time_)
+		VALUES(#{userId},#{liveId},#{liveGoodsId},NOW(),NOW())
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.TempBuyFreeLiveTheoryCourse">
 		UPDATE temp_buy_free_live_theory_course <set>
+		<if test="liveGoodsId != null">
+			live_goods_id_ = #{liveGoodsId},
+		</if>
+		<if test="liveId != null">
+			live_id_ = #{liveId},
+		</if>
 		<if test="userId != null">
-		user_id_ = #{userId},
+			user_id_ = #{userId},
 		</if>
 		<if test="updateTime != null">
-		update_time_ = #{updateTime},
+			update_time_ = #{updateTime},
 		</if>
 		</set> WHERE id_ = #{id}
 	</update>

+ 9 - 0
mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java

@@ -43,6 +43,15 @@ public interface ImFeignService {
     Object groupCreate(@RequestBody GroupModel groupModel);
 
     /**
+     * 修改群组
+     *
+     * @param groupModel
+     * @return
+     */
+    @PostMapping(value = "group/update")
+    Object groupUpdate(@RequestBody GroupModel groupModel);
+
+    /**
      * 批量创建群组
      *
      * @param groupModels

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java

@@ -24,6 +24,10 @@ public class ImFeignServiceFallback implements ImFeignService {
     public Object groupCreate(GroupModel groupModel) {
         return null;
     }
+    @Override
+    public Object groupUpdate(GroupModel groupModel) {
+        return null;
+    }
 
     @Override
     public void groupBatchCreate(List<GroupModel> groupModels) {

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/controller/DegreeController.java

@@ -94,7 +94,7 @@ public class DegreeController extends BaseController {
             teacherDao.updateUser(user);
         }
         degreeRegistration.setOrganId(user.getOrganId());
-        if(Objects.isNull(degreeRegistration.getOrganId()) || degreeRegistration.getOrganId() == 4){
+        if(Objects.isNull(degreeRegistration.getOrganId())){
             return failed("该分部暂未开放此活动");
         }
         HttpResponseResult pay = degreeRegistrationService.pay(degreeRegistration);

+ 2 - 2
mec-student/src/main/java/com/ym/mec/student/controller/ImGroupController.java

@@ -37,13 +37,13 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询群列表")
 	@GetMapping(value = "/queryGroupList")
-	public Object queryGroupList(String search) {
+	public Object queryGroupList(String search,String groupType) {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (Objects.isNull(sysUser)) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 
-		return succeed(imGroupService.queryByUserId(sysUser.getId(), search));
+		return succeed(imGroupService.queryByUserId(sysUser.getId(), search,groupType));
 	}
 
 	@ApiOperation("查询群详情")

+ 2 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -39,13 +39,13 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询群列表")
 	@GetMapping(value = "/queryGroupList")
-	public Object queryGroupList(String search) {
+	public Object queryGroupList(String search,String groupType) {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (Objects.isNull(sysUser)) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 
-		return succeed(imGroupService.queryByUserId(sysUser.getId(), search));
+		return succeed(imGroupService.queryByUserId(sysUser.getId(), search,groupType));
 	}
 
 	@ApiOperation("查询群详情")

+ 5 - 5
mec-web/src/main/java/com/ym/mec/web/controller/ImGroupController.java

@@ -19,7 +19,6 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
@@ -51,12 +50,12 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("查询群列表")
 	@GetMapping(value = "/queryGroupList")
-	public HttpResponseResult<List<ImGroup>> queryGroupList(String search) {
+	public HttpResponseResult<List<ImGroup>> queryGroupList(String search,String groupType) {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (Objects.isNull(sysUser)) {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
-		return succeed(imGroupService.queryByUserId(sysUser.getId(), search));
+		return succeed(imGroupService.queryByUserId(sysUser.getId(), search,groupType));
 	}
 
 	@ApiOperation("查询群详情")
@@ -70,9 +69,10 @@ public class ImGroupController extends BaseController {
 
 	@ApiOperation("修改群信息")
 	@PostMapping(value = "/updateImGroup")
-	public HttpResponseResult<Integer> updateImGroup(@RequestBody ImGroup imGroup) {
+	public HttpResponseResult updateImGroup(@RequestBody ImGroup imGroup) {
 		imGroup.setUpdateTime(new Date());
-		return succeed(imGroupService.update(imGroup));
+		imGroupService.updateImGroup(imGroup);
+		return succeed();
 	}
 
 	@ApiOperation("修改群成员信息")

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java

@@ -2,9 +2,11 @@ package com.ym.mec.web.controller;
 
 
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
+import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.common.controller.BaseController;
@@ -210,5 +212,10 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed(imLiveBroadcastRoomService.queryBaseUserInfo(userIdList));
     }
 
+    @ApiOperation("查询直播间商品订单列表")
+    @GetMapping("/queryLiveRoomGoodsOrderList")
+    public HttpResponseResult<PageInfo<LiveRoomGoodsOrderVo>> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo){
+        return succeed(imLiveBroadcastRoomService.queryLiveRoomGoodsOrderList(queryInfo));
+    }
 }
 

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImSendGroupMessageController.java

@@ -15,6 +15,7 @@ import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -36,6 +37,7 @@ public class ImSendGroupMessageController extends BaseController {
 
     @ApiOperation("获取群消息列表")
     @PostMapping(value = "/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/queryPage')")
     public HttpResponseResult<PageInfo<ImSendGroupMessage>> queryPage(ImSendGroupMessageQueryInfo queryInfo) throws Exception {
         SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
                 orElseThrow(() -> new Exception("请登录"));
@@ -45,6 +47,7 @@ public class ImSendGroupMessageController extends BaseController {
 
     @ApiOperation("发送群聊消息")
     @PostMapping(value = "/send")
+    @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/send')")
     public HttpResponseResult send(@RequestBody ImSendGroupMessage imSendGroupMessage) throws Exception {
         imSendGroupMessageService.sendGroupMessage(imSendGroupMessage);
         return succeed();
@@ -52,6 +55,7 @@ public class ImSendGroupMessageController extends BaseController {
 
     @ApiOperation("修改未发送的群消息")
     @PostMapping(value = "/update")
+    @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/update')")
     public HttpResponseResult update(@RequestBody ImSendGroupMessage imSendGroupMessage) throws Exception {
         imSendGroupMessageService.updateGroupMessage(imSendGroupMessage);
         return succeed();
@@ -59,12 +63,14 @@ public class ImSendGroupMessageController extends BaseController {
 
     @ApiOperation("删除未发送的群消息")
     @PostMapping(value = "/delete")
+    @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/delete')")
     public HttpResponseResult delete(Long id) throws Exception {
         imSendGroupMessageService.deleteGroupMessage(id);
         return succeed();
     }
     @ApiOperation("删除未发送消息的群列表")
     @PostMapping(value = "/deleteGroupList")
+    @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/deleteGroupList')")
     public HttpResponseResult deleteGroupList(Long imSendGroupMessageId,String groupIds) throws Exception {
         Optional.ofNullable(groupIds).orElseThrow(() -> new BizException("群组id不能为空"));
         Optional.ofNullable(imSendGroupMessageId).orElseThrow(() -> new BizException("群消息id不能为空"));
@@ -73,6 +79,7 @@ public class ImSendGroupMessageController extends BaseController {
     }
     @ApiOperation("添加未发送消息的群列表")
     @PostMapping(value = "/addGroupList")
+    @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/addGroupList')")
     public HttpResponseResult addGroupList(Long imSendGroupMessageId,String groupIds) throws Exception {
         Optional.ofNullable(groupIds).orElseThrow(() -> new BizException("群组id不能为空"));
         Optional.ofNullable(imSendGroupMessageId).orElseThrow(() -> new BizException("群消息id不能为空"));
@@ -82,6 +89,7 @@ public class ImSendGroupMessageController extends BaseController {
 
     @ApiOperation("查询群列表(没有在消息列表的)")
     @PostMapping(value = "/queryGroupPage")
+    @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/queryGroupPage')")
     public HttpResponseResult<PageInfo<ImGroup>> queryGroupPage(ImGroupQueryInfo imGroupQueryInfo) throws Exception {
         SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
                 orElseThrow(() -> new Exception("请登录"));
@@ -96,6 +104,7 @@ public class ImSendGroupMessageController extends BaseController {
 
     @ApiOperation("查询群列表(在消息列表的)")
     @PostMapping(value = "/queryGroupPage1")
+    @PreAuthorize("@pcs.hasPermissions('imSendGroupMessage/queryGroupPage1')")
     public HttpResponseResult<PageInfo<ImGroup>> queryGroupPage1(ImGroupQueryInfo imGroupQueryInfo) throws Exception {
         SysUser sysUser = Optional.ofNullable(sysUserFeignService.queryUserInfo()).
                 orElseThrow(() -> new Exception("请登录"));

+ 2 - 1
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -130,7 +130,8 @@ public class VipGroupManageController extends BaseController {
                 }
             }
 
-            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(), classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode());
+            imGroupService.create(classGroup.getId().toString(), null, classGroup.getName(),
+                    classGroup.getName(), vipGroup.getName(), null, null, GroupType.VIP.getCode(), ImGroup.GroupTypeEnum.VIP);
             imGroupMemberService.join(classGroup.getId().toString(), userRoleMap);
             imUserFriendService.refreshGroupImUserFriend(classGroup.getMusicGroupId(),classGroup.getGroupType());
         }