소스 검색

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 년 전
부모
커밋
d9e92021b1

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserCashAccountDao.java

@@ -28,6 +28,7 @@ public interface SysUserCashAccountDao extends BaseDAO<Integer, SysUserCashAccou
      */
     List<SysUserCashAccount> findByUserIds(@Param("userIds") Set<Integer> userIds);
 
+
     /**
      * 获取预收余额
      * @return

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

@@ -1,13 +1,15 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.StudentExercisesSituationDto;
-import com.ym.mec.biz.dal.dto.StudentServiceDetailDto;
 import com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation;
 import com.ym.mec.biz.dal.page.StudentExercisesSituationQueryInfo;
 import com.ym.mec.biz.dal.page.StudentServiceDetailQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+import java.util.Map;
+
 public interface StudentExtracurricularExercisesSituationService extends BaseService<Long, StudentExtracurricularExercisesSituation> {
 
     PageInfo<StudentExercisesSituationDto> findStudentExtracurricularExercisesSituations(StudentExercisesSituationQueryInfo queryInfo);
@@ -28,6 +30,6 @@ public interface StudentExtracurricularExercisesSituationService extends BaseSer
      * @param queryInfo:
      * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.StudentServiceDetailDto>
      */
-    PageInfo<StudentServiceDetailDto> findServiceStudentDetail(StudentServiceDetailQueryInfo queryInfo);
+    List<Map<String, Object>> findServiceStudentDetail(StudentServiceDetailQueryInfo queryInfo);
 
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountService.java

@@ -27,6 +27,17 @@ public interface SysUserCashAccountService extends BaseService<Integer, SysUserC
 	boolean updateBalance(Integer userId, BigDecimal decimal, PlatformCashAccountDetailTypeEnum type, String memo);
 
 	/**
+	 * 更新指定用户的账户余额
+	 * @param userId 用户编号
+	 * @param decimal 交易金额(支持负数)
+	 * @param type 交易类型
+	 * @param memo 备注
+	 * @param transNo 订单流水编号
+	 * @return
+	 */
+	boolean updateBalance(Integer userId, BigDecimal decimal, PlatformCashAccountDetailTypeEnum type, String memo,String transNo);
+
+	/**
 	 * 更新指定用户的账户课程余额
 	 * @param userId 用户编号
 	 * @param decimal 交易金额(支持负数)

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

@@ -1014,7 +1014,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         }
         courseScheduleTeacherSalaryDao.updateTeacherSalaryConfirmStatus(teacherSalaryIds,TeacherSalaryConfirmStatus.UNCONFIRMED);
         teacherCourseRewardDao.updateTeacherRewardConfirmStatusWithMonth(month, null, TeacherSalaryConfirmStatus.UNCONFIRMED);
-        String notifyUrl="8?http://mteadev.dayaedu.com/#/remuneration?month=" + month;
+        String teacherBaseUrl = sysConfigDao.findByParamName(SysConfigService.TEACHER_BASE_URL).getParanValue();
+        String notifyUrl="8?"+teacherBaseUrl+"/#/remuneration?month=" + month;
         String monthStr = DateUtil.dateToString(DateUtil.stringToDate(month, "yyyy-MM"),"M月");
         String expireDateStr = DateUtil.dateToString(DateUtil.addDays(new Date(), 2), "M月d号");
         List<Integer> teacherIds = courseScheduleTeacherSalaryDao.findIsSettlementTeacherIdsWithMonth(month);

+ 24 - 29
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SporadicChargeInfoImpl.java

@@ -77,36 +77,30 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
             //福袋活动,增加课程余额
             if (info.getChargeType().getCode() == 6) {
                 sysUserCashAccountService.appendCourseBalance(userId, studentPaymentOrder.getActualAmount(), "活动");
-            }
-
-            String comment = "缴费前充值";
-            //零星收费账户充值
-            if (info.getChargeType().getCode().equals(9)) {
-                comment = "零星收费账户充值(" + info.getTitle()+")";
-            }
-
-            //插入交易明细
-            BigDecimal amount = studentPaymentOrder.getActualAmount();
-            Date nowDate = new Date();
-            SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
-            //充值
-            SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
-            rechargeDetail.setAmount(amount);
-            rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
-            rechargeDetail.setComment(comment);
-            rechargeDetail.setCreateTime(nowDate);
-            rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
-            rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
-            rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
-            rechargeDetail.setUpdateTime(nowDate);
-            rechargeDetail.setUserId(userId);
-            rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
-            rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
-            rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
-            sysUserCashAccountDetailService.insert(rechargeDetail);
+            } else if (info.getChargeType().getCode() == 9) { //零星收费账户充值
+                sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getActualAmount(), PlatformCashAccountDetailTypeEnum.RECHARGE, "零星收费账户充值",studentPaymentOrder.getTransNo());
+            } else {
+                //插入交易明细
+                BigDecimal amount = studentPaymentOrder.getActualAmount();
+                Date nowDate = new Date();
+                SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
+                //充值
+                SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
+                rechargeDetail.setAmount(amount);
+                rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
+                rechargeDetail.setComment("缴费前充值");
+                rechargeDetail.setCreateTime(nowDate);
+                rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
+                rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
+                rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
+                rechargeDetail.setUpdateTime(nowDate);
+                rechargeDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
+                rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
+                sysUserCashAccountDetailService.insert(rechargeDetail);
 
-            //缴费,零星收费充值没有消费
-            if (!info.getChargeType().getCode().equals(9)) {
+                //缴费
                 SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
                 paymentDetail.setAmount(amount.negate());
                 paymentDetail.setBalance(cashAccount.getBalance());
@@ -122,6 +116,7 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
                     rechargeDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
                     rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
                 }
+
                 sysUserCashAccountDetailService.insert(paymentDetail);
             }
 

+ 22 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentExtracurricularExercisesSituationServiceImpl.java

@@ -19,6 +19,8 @@ import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.DayOfWeek;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
@@ -114,7 +116,7 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 	}
 
 	@Override
-	public PageInfo<StudentServiceDetailDto> findServiceStudentDetail(StudentServiceDetailQueryInfo queryInfo) {
+	public List<Map<String, Object>> findServiceStudentDetail(StudentServiceDetailQueryInfo queryInfo) {
 		PageInfo<StudentServiceDetailDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
@@ -125,11 +127,25 @@ public class StudentExtracurricularExercisesSituationServiceImpl extends BaseSer
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = extracurricularExercisesReplyDao.findStudentHomeworkDetailsInTimeZone(params);
+			Map<String, List<StudentServiceDetailDto>> weekHomeworks=new HashMap<>();
+			for (StudentServiceDetailDto studentServiceDetailDto : dataList) {
+				LocalDate homeworkCreateTime = LocalDateTime.ofInstant(studentServiceDetailDto.getHomeworkCreateTime().toInstant(), DateUtil.zoneId).toLocalDate();
+				String mondayStr = homeworkCreateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()).toString();
+				if(!weekHomeworks.containsKey(mondayStr)){
+					weekHomeworks.put(mondayStr, new ArrayList<>());
+				}
+				weekHomeworks.get(mondayStr).add(studentServiceDetailDto);
+			}
+			List<Map<String, Object>> results=new ArrayList<>();
+			for (Map.Entry<String, List<StudentServiceDetailDto>> stringListEntry : weekHomeworks.entrySet()) {
+				Map<String, Object> result=new HashMap<>();
+				result.put("monday", stringListEntry.getKey());
+				result.put("data", stringListEntry.getValue());
+				results.add(result);
+			}
+			return results;
+		}else{
+			return null;
 		}
-		if (count == 0) {
-			dataList = new ArrayList<>();
-		}
-		pageInfo.setRows(dataList);
-		return pageInfo;
 	}
 }

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

@@ -285,6 +285,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
         List<StudentPaymentOrder> dataList = new ArrayList<>();
         int count = this.findCount(params);
+
         BigDecimal totalUserBalance = sysUserCashAccountDao.getTotalUserBalance(params);
         pageInfo.setTotalUserBalance(totalUserBalance);
         if (count > 0) {

+ 50 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java

@@ -124,6 +124,56 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
     }
 
     @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public boolean updateBalance(Integer userId, BigDecimal decimal, PlatformCashAccountDetailTypeEnum type, String memo,String transNo) {
+        SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);
+        if (cashAccount == null) {
+            throw new BizException("用户[{}]现金账户不存在", userId);
+        }
+
+        if (cashAccount.getStatus() != PlatformCashAccountStatusEnum.NORMAL) {
+            throw new BizException("账户不可用");
+        }
+        BigDecimal balance = cashAccount.getBalance().add(decimal);
+        if (balance.doubleValue() < 0) {
+            throw new BizException("现金账户[{}]余额不足,可用余额剩{}元", userId, cashAccount.getBalance().doubleValue());
+        }
+
+        Date date = new Date();
+
+        SysUserCashAccountDetail detail = new SysUserCashAccountDetail();
+        detail.setAmount(decimal);
+        detail.setBalance(cashAccount.getBalance().add(decimal));
+        detail.setComment(memo);
+        detail.setTransNo(transNo);
+        detail.setCreateTime(date);
+        detail.setStatus(DealStatusEnum.SUCCESS);
+        detail.setType(type);
+        detail.setUpdateTime(date);
+        detail.setUserId(userId);
+
+        sysUserCashAccountDetailDao.insert(detail);
+
+        cashAccount.setBalance(balance);
+        cashAccount.setUpdateTime(date);
+
+        sysUserCashAccountDao.update(cashAccount);
+        if (!decimal.equals(BigDecimal.ZERO)) {
+            //推送余额消费信息
+            Map<Integer, String> phoneMap = new HashMap<>(1);
+            SysUser sysUser = sysUserFeignService.queryUserById(userId);
+            phoneMap.put(userId, sysUser.getPhone());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.STUDENT_SMS_BALANCE_CONSUME,
+                    phoneMap, null, 0, null, "", decimal, balance);
+            Map<Integer, String> idMap = new HashMap<>(1);
+            idMap.put(userId, userId.toString());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_SMS_BALANCE_CONSUME,
+                    idMap, null, 0, null, "", decimal, balance);
+        }
+        return true;
+    }
+
+    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public boolean updateCourseBalance(Integer userId, BigDecimal decimal, BigDecimal amount, String description) {
         SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml

@@ -94,6 +94,7 @@
         </foreach>
     </select>
 
+    <!-- 获取用户预收余额 -->
     <select id="getTotalUserBalance" resultType="java.math.BigDecimal" parameterType="map">
         SELECT SUM(suca.balance_) FROM sys_user_cash_account suca
         LEFT JOIN sys_user su ON su.id_ = suca.user_id_