Bläddra i källkod

Merge remote-tracking branch 'origin/master'

Joburgess 5 år sedan
förälder
incheckning
d1cfe6b441

+ 2 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/PhoneLoginAuthenticationFilter.java

@@ -55,7 +55,8 @@ public class PhoneLoginAuthenticationFilter extends AbstractAuthenticationProces
 
 		String clientId = request.getParameter(clientIdParameter).toUpperCase();
 
-		SysUserInfo userInfo = sysUserService.queryUserInfoByPhone(principal);
+//		SysUserInfo userInfo = sysUserService.queryUserInfoByPhone(principal);
+		SysUserInfo userInfo = sysUserService.queryUserInfoByPhoneAndClient(principal,clientId);
 		if (userInfo != null && StringUtils.isNotEmpty(isLessee)) {
 			throw new LockedException("用户已存在");
 		}

+ 7 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java

@@ -26,6 +26,13 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	SysUser queryByPhone(String phone);
 
 	/**
+	 * 根据手机号查询对象
+	 * @param phone
+	 * @return
+	 */
+	SysUser queryByPhoneAndClient(@Param("phone") String phone, @Param("client") String client);
+
+	/**
 	 * 修改密码
 	 * @param mobile
 	 * @param password

+ 14 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java

@@ -23,6 +23,13 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	SysUser queryByPhone(String phone);
 
 	/**
+	 * 根据手机号查询对象
+	 * @param phone
+	 * @return
+	 */
+	SysUser queryByPhoneAndClient(String phone,String client);
+
+	/**
 	 * 根据用户名获取系统用户详细信息
 	 * @param username
 	 * @return
@@ -37,6 +44,13 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	SysUserInfo queryUserInfoByPhone(String phone);
 
 	/**
+	 * 根据手机号获取系统用户详细信息
+	 * @param phone
+	 * @return
+	 */
+	SysUserInfo queryUserInfoByPhoneAndClient(String phone,String client);
+
+	/**
 	 * 删除指定用户
 	 * @param id
 	 * @return

+ 10 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -70,6 +70,11 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 	}
 
 	@Override
+	public SysUser queryByPhoneAndClient(String phone,String client) {
+		return sysUserDao.queryByPhoneAndClient(phone,client);
+	}
+
+	@Override
 	public SysUserInfo queryUserInfoByUsername(String username) {
 		return getSysUserInfo(queryByUsername(username));
 	}
@@ -79,6 +84,11 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		return getSysUserInfo(queryByPhone(phone));
 	}
 
+	@Override
+	public SysUserInfo queryUserInfoByPhoneAndClient(String phone,String client) {
+		return getSysUserInfo(queryByPhoneAndClient(phone,client));
+	}
+
 	private SysUserInfo getSysUserInfo(SysUser sysUser) {
 		if (sysUser == null) {
 			return null;

+ 3 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -206,4 +206,7 @@
     <select id="getTeacherOrganId" resultType="java.lang.Integer">
         SELECT organ_id_ FROM teacher WHERE id_ = #{userId}
     </select>
+    <select id="queryByPhoneAndClient" resultMap="SysUser">
+        select * from sys_user where (phone_ = #{phone} OR username_ = #{phone}) AND user_type_ LIKE CONCAT('%',#{client},'%') LIMIT 1 FOR UPDATE
+    </select>
 </mapper>

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -141,7 +141,10 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     PUSH_STUDY_REPORT("PUSH_STUDY_REPORT", "陪练报告"),
     NEED_POST_STUDY_REPORT("NEED_POST_STUDY_REPORT", "新增待填写月报"),
 
-    TEACHER_SALARY_CONFIRM_PUSH("TEACHER_SALARY_CONFIRM_PUSH", "课酬确认");
+    TEACHER_SALARY_CONFIRM_PUSH("TEACHER_SALARY_CONFIRM_PUSH", "课酬确认"),
+
+    SMS_REPAIR_ONLINE_PAYMENT_SUCCESS("SMS_REPAIR_ONLINE_PAYMENT_SUCCESS","乐器线上维修支付成功"),
+    SMS_REPAIR_OFFLINE_PAYMENT_SUCCESS("SMS_REPAIR_OFFLINE_PAYMENT_SUCCESS","乐器线下维修支付成功");
 
 
     MessageTypeEnum(String code, String msg) {

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRepairService.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentRepair;
 import com.ym.mec.biz.dal.page.RepairStudentQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -60,4 +61,10 @@ public interface StudentRepairService extends BaseService<Integer, StudentRepair
      * @return
      */
     BasicUserDto getStudentRepairer(Integer studentId,Integer organId);
+
+    /**
+     * 支付回调
+     * @param order
+     */
+    Boolean orderCallback(StudentPaymentOrder order);
 }

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

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.dto.SporadicChargeInfoDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentRepair;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.SporadicOrderQueryInfo;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
@@ -53,6 +54,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private PracticeGroupService practiceGroupService;
     @Autowired
     private SysUserCashAccountDao sysUserCashAccountDao;
+    @Autowired
+    private StudentRepairService studentRepairService;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -203,6 +206,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             sporadicChargeInfoService.renewForCallback(order);
         } else if (order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_BUY) || order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_RENEW)) {
             practiceGroupService.orderCallback(order);
+        }else if (order.getType().equals(OrderTypeEnum.REPAIR)) {
+            studentRepairService.orderCallback(order);
         }
     }
 
@@ -236,6 +241,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                     sporadicChargeInfoService.renewForCallback(order);
                 } else if (order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_BUY) || order.getType().equals(OrderTypeEnum.PRACTICE_GROUP_RENEW)) {
                     practiceGroupService.orderCallback(order);
+                }else if (order.getType().equals(OrderTypeEnum.REPAIR)) {
+                    studentRepairService.orderCallback(order);
                 }
             } catch (Exception e) {
                 e.printStackTrace();

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

@@ -7,10 +7,7 @@ import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.StudentManageListDto;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.RepairStudentQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
@@ -18,11 +15,13 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
@@ -46,6 +45,10 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
     private SysUserCashAccountService sysUserCashAccountService;
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     @Override
     public BaseDAO<Integer, StudentRepair> getDAO() {
@@ -314,4 +317,98 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         return repairer;
     }
 
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public Boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
+        Date noDate = new Date();
+        //更新订单信息
+        studentPaymentOrder.setUpdateTime(noDate);
+        int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
+        if (updateCount <= 0) {
+            throw new BizException("订单更新失败");
+        }
+        //更新维修单信息
+        StudentRepair repairInfo = getRepairInfo(Integer.parseInt(studentPaymentOrder.getMusicGroupId()));
+
+        Integer userId = studentPaymentOrder.getUserId();
+        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+
+
+        Map<Integer, String> map = new HashMap();
+        map.put(userId, sysUser.getPhone());
+        Map<Integer, String> yimei = new HashMap();
+        map.put(userId, userId.toString());
+
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+            repairInfo.setPayStatus(2);
+            repairInfo.setUpdateTime(noDate);
+            if(this.update(repairInfo) <= 0){
+                throw new BizException("维修单更新失败");
+            }
+
+            //插入交易明细
+            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);
+
+            //缴费
+            SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
+            paymentDetail.setAmount(amount.negate());
+            paymentDetail.setBalance(cashAccount.getBalance());
+            paymentDetail.setComment("乐器维修");
+            paymentDetail.setCreateTime(nowDate);
+            paymentDetail.setStatus(DealStatusEnum.SUCCESS);
+            paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
+            paymentDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
+            paymentDetail.setUpdateTime(nowDate);
+            paymentDetail.setUserId(userId);
+            rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+            if (studentPaymentOrder.getComAmount() != null) {
+                rechargeDetail.setComAmount(studentPaymentOrder.getComAmount().negate());
+                rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount().negate());
+            }
+            sysUserCashAccountDetailService.insert(paymentDetail);
+
+            if(repairInfo.getType().equals(0)) {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_REPAIR_OFFLINE_PAYMENT_SUCCESS, map, null, 0, "1", "STUDENT",
+                        sysUser.getUsername());
+            }else {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_REPAIR_OFFLINE_PAYMENT_SUCCESS, map, null, 0, "1", "STUDENT",
+                        sysUser.getUsername(),repairInfo.getContactName(),repairInfo.getContactMobile(),repairInfo.getAddress());
+            }
+            return true;
+        }
+
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+            repairInfo.setPayStatus(0);
+            repairInfo.setUpdateTime(noDate);
+            if(this.update(repairInfo) <= 0){
+                throw new BizException("维修单更新失败");
+            }
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "乐器维修支付失败");
+            }
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_SPORADIC_PAYMENT_FAILED, map, null, 0, "", "STUDENT",
+                    studentPaymentOrder.getActualAmount(), "乐器维修");
+            return false;
+        }
+        return false;
+    }
+
 }