周箭河 пре 5 година
родитељ
комит
61ab8f56c3

+ 38 - 13
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -15,11 +15,12 @@ import java.util.Map;
 import java.util.Set;
 
 public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
-	
-	MusicGroup getLocked(String id);
+
+    MusicGroup getLocked(String id);
 
     /**
      * 获取学员所在乐团详情列表
+     *
      * @param userId
      * @return
      */
@@ -27,6 +28,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取个人中心乐团数据
+     *
      * @param userId
      * @return
      */
@@ -34,6 +36,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取用户有效的乐团数
+     *
      * @param userId
      * @return
      */
@@ -41,6 +44,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根据课程类型获取剩余课时
+     *
      * @param userId
      * @param type
      * @return
@@ -49,6 +53,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根绝学员编号获取相关老师列表
+     *
      * @param studentId
      * @return
      */
@@ -56,13 +61,15 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取学员所在乐团
+     *
      * @param userId
      * @return
      */
-    List<ImGroupModel> queryUserGroups(@Param("userId") Integer userId,@Param("search") String search);
+    List<ImGroupModel> queryUserGroups(@Param("userId") Integer userId, @Param("search") String search);
 
     /**
      * 获取乐团总人数
+     *
      * @param musicGroupIds
      * @return
      */
@@ -77,11 +84,12 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取教师所在乐团列表
+     *
      * @param userId
      * @param search
      * @return
      */
-    List<ImGroupModel> queryTeacherGroups(@Param("userId") Integer userId, @Param("search")String search);
+    List<ImGroupModel> queryTeacherGroups(@Param("userId") Integer userId, @Param("search") String search);
 
     /**
      * 获取当前乐团所有教师列表
@@ -92,6 +100,7 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 根据乐团编号列表获取乐团在读人数map
+     *
      * @param musicGroupIds
      * @return
      */
@@ -99,29 +108,32 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取乐团列表
+     *
      * @param musicGroupIds
      * @return
      */
     List<MusicGroup> queryListByIds(@Param("musicGroupIds") String musicGroupIds);
 
     /**
+     * @param musicGroupIds: 乐团编号列表
+     * @return java.util.List<java.util.Map < java.lang.String, java.lang.String>>
      * @describe 根据乐团获取对应的结算方式
      * @author Joburgess
      * @date 2019/11/3
-     * @param musicGroupIds: 乐团编号列表
-     * @return java.util.List<java.util.Map<java.lang.String,java.lang.String>>
      */
-    List<Map<String,String>> findSettlementTypeByMusicGroups(@Param("musicGroupIds") List<String> musicGroupIds);
-    
+    List<Map<String, String>> findSettlementTypeByMusicGroups(@Param("musicGroupIds") List<String> musicGroupIds);
+
     /**
      * 查询首页的乐团数量
+     *
      * @param ogranId
      * @return
      */
-    Map<String,Integer> queryOrganMusicGroupNum(@Param("organId") String ogranId);
-    
+    Map<String, Integer> queryOrganMusicGroupNum(@Param("organId") String ogranId);
+
     /**
      * 查询本月乐团课程数
+     *
      * @param organId
      * @return
      */
@@ -129,29 +141,42 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取乐团下的教师map
+     *
      * @param musicGroupId
      * @return
      */
-    List<Map<Integer,String>> queryTeacherMap(String musicGroupId);
+    List<Map<Integer, String>> queryTeacherMap(String musicGroupId);
 
     /**
      * 获取乐团下的教师map
+     *
      * @param musicGroupId
      * @return
      */
-    List<Map<Integer,String>> queryTeacherIdMap(String musicGroupId);
+    List<Map<Integer, String>> queryTeacherIdMap(String musicGroupId);
 
     /**
      * 根据角色编号获取有权限的用户列表
+     *
      * @param roleIds
      * @return
      */
-    Set<Integer> queryUserIdByRoleId(@Param("roleIds") Set<Integer> roleIds,@Param("organIds") String organIds);
+    Set<Integer> queryUserIdByRoleId(@Param("roleIds") Set<Integer> roleIds, @Param("organIds") String organIds);
 
     /**
      * 获取教务老师时当前用户的乐团
+     *
      * @param userIds
      * @return
      */
     String queryEducationalMusicGroupId(Integer userIds);
+
+
+    /**
+     * 查询用户的乐团信息
+     *
+     * @param UserId
+     * @return
+     */
+    MusicGroup findUserMusicGroup(@Param("UserId") Integer UserId);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysAccountDao.java

@@ -16,4 +16,15 @@ public interface SysAccountDao extends BaseDAO<Integer, SysAccount> {
      * @return
      */
     SysAccount getPerAccount(@Param("amount") BigDecimal amount);
+
+    /**
+     * 获取一个支付账户
+     * @param company
+     * @param channel
+     * @param type
+     * @param amount
+     * @return
+     */
+    SysAccount getAccount(@Param("company") String company, @Param("channel") String channel, @Param("type") String type, @Param("amount") BigDecimal amount);
+
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/PayService.java

@@ -27,6 +27,9 @@ public interface PayService {
      */
     Map<String,Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception;
 
+    Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer userId) throws Exception;
+
+
     Map query(String orderNo) throws Exception;
 
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysAccountService.java

@@ -11,8 +11,20 @@ public interface SysAccountService extends BaseService<Integer, SysAccount> {
 
     /**
      * 获取一个私户
+     *
      * @return
      */
     SysAccount getPerAccount(BigDecimal amount);
 
+
+    /**
+     * 获取一个收款账户
+     * @param company
+     * @param channel
+     * @param type
+     * @param amount
+     * @return
+     */
+    SysAccount getAccount(String company, String channel, String type,  BigDecimal amount);
+
 }

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

@@ -358,8 +358,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 orderNo,
                 "http://mstutest.dayaedu.com/api-student/studentOrder/notify",
                 "http://mstutest.dayaedu.com/#/paymentresult?orderNo=" + orderNo,
-                "测试订单",
-                "测试订单");
+                "乐团报名缴费",
+                "乐团报名缴费",
+                userId);
         
         studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
         studentPaymentOrder.setUpdateTime(date);
@@ -499,8 +500,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 orderNo,
                 "http://mstutest.dayaedu.com/api-student/studentOrder/notify",
                 "http://mstutest.dayaedu.com/#/paymentresult?orderNo=" + orderNo,
-                "测试订单",
-                "测试订单");
+                "乐团报名缴费",
+                "乐团报名缴费",
+                userId);
         
         studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
         studentPaymentOrder.setUpdateTime(date);

+ 60 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -1,10 +1,14 @@
 package com.ym.mec.biz.service.impl;
 
-
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.SysAccount;
 import com.ym.mec.biz.service.PayService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.SysAccountService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.thirdparty.adapay.Pay;
 import com.ym.mec.thirdparty.union.UnionPay;
 import com.ym.mec.thirdparty.union.UnionPayFeignService;
@@ -28,6 +32,10 @@ public class PayServiceImpl implements PayService {
     private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
     private SysAccountService sysAccountService;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private SysConfigDao sysConfigDao;
 
 
     /**
@@ -43,15 +51,15 @@ public class PayServiceImpl implements PayService {
      * @throws Exception
      */
     @Override
-    public Map<String,Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception {
+    public Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception {
+
         //支付通道决策
         SysAccount routingAccount = getRoutingAccount(amount);
         Map unionPay = new HashMap();
         //Map payMap = new Pay().getPayMap(amount, orderNo, notifyUrl, orderSubject, orderBody);
+        // unionPay.put("type", "ADAPAY");
 
         unionPay.put("orderNo", orderNo);
-       // unionPay.put("type", "ADAPAY");
-
         Map payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, null);
         unionPay.put("type", "YQPAY");
         unionPay.put("payMap", payMap);
@@ -59,12 +67,40 @@ public class PayServiceImpl implements PayService {
         return unionPay;
     }
 
+    public Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer userId) throws Exception {
+
+        String company = "daya";
+        if (userId != null) {
+            MusicGroup musicGroup = musicGroupDao.findUserMusicGroup(userId);
+            if (musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
+                company = "yadie";
+            }
+        }
+
+        //支付通道决策
+        Map unionPay = new HashMap();
+        SysAccount routingAccount = getRoutingAccount(company,amount);
+        Map payMap = null;
+        String type = null;
+        if (routingAccount.getChannel().equals("YQPAY")) {
+            payMap = YqPayUtil.getPayMap(amount, orderNo, notifyUrl, returnUrl, orderSubject, orderBody, null);
+            type = "YQPAY";
+        } else {
+            payMap = new Pay().getPayMap(amount, orderNo, notifyUrl, orderSubject, orderBody);
+            type = "ADAPAY";
+        }
+
+        unionPay.put("orderNo", orderNo);
+        unionPay.put("type", type);
+        unionPay.put("payMap", payMap);
+        return unionPay;
+    }
+
     @Override
     public Map<String, Object> query(String orderNo) throws Exception {
         return new UnionPay(unionPayFeignService).query(orderNo);
     }
 
-
     /**
      * 获取收款的账户
      *
@@ -74,12 +110,29 @@ public class PayServiceImpl implements PayService {
     private SysAccount getRoutingAccount(BigDecimal money) {
         SysAccount routingAccount = null;
         int payOrderNums = studentPaymentOrderService.findPayOrderNum(); //获取支付中和成功的订单数
-        //分佣账户(1、每10笔,前笔收入私户)
+        //分佣账户(1、每10笔,前2笔收入私户)
         int rem = (payOrderNums + 1) % 10;
-        if (rem > 0 && rem <= 5) { //私人账户
+        if (rem > 0 && rem <= 2) { //私人账户
             routingAccount = sysAccountService.getPerAccount(money);
         }
+        return routingAccount;
+    }
 
+    private SysAccount getRoutingAccount(String company, BigDecimal money) {
+        SysAccount routingAccount = null;
+        int payOrderNums = studentPaymentOrderService.findPayOrderNum(); //获取支付中和成功的订单数
+        //前几笔收入私户
+        Integer nums = Integer.parseInt(sysConfigDao.findConfigValue("per_account_nums"));
+
+        int rem = (payOrderNums + 1) % 10;
+
+        if (rem > 0 && rem <= nums) { //私人账户
+            String channel = sysConfigDao.findConfigValue("per_account_channel");
+            routingAccount = sysAccountService.getAccount(company, channel, "PER", money);
+        } else {
+            String channel = sysConfigDao.findConfigValue("com_account_channel");
+            routingAccount = sysAccountService.getAccount(company, channel,"COM",money);
+        }
         return routingAccount;
     }
 

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

@@ -79,7 +79,7 @@ public class StudentRechargeServiceImpl extends BaseServiceImpl<String, StudentR
 
 		try {
 			return payService.getPayMap(amount, studentRecharge.getOrderNo(), "https://pay.dayaedu.com/api/yqpay/notify", "http://dev.dayaedu.com", "充值",
-					"充值");
+					"充值",userId);
 		} catch (Exception e) {
 			throw new BizException("调用支付接口出错", e);
 		}

+ 19 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysAccountServiceImpl.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.entity.SysArea;
 import com.ym.mec.biz.service.SysAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -14,18 +15,23 @@ import java.util.List;
 
 @Service
 public class SysAccountServiceImpl extends BaseServiceImpl<Integer, SysAccount> implements SysAccountService {
-	
-	@Autowired
-	private SysAccountDao sysAccountDao;
-
-	@Override
-	public BaseDAO<Integer, SysAccount> getDAO() {
-		return sysAccountDao;
-	}
-
-	@Override
-	public SysAccount getPerAccount(BigDecimal money) {
-		return sysAccountDao.getPerAccount(money);
-	}
+
+    @Autowired
+    private SysAccountDao sysAccountDao;
+
+    @Override
+    public BaseDAO<Integer, SysAccount> getDAO() {
+        return sysAccountDao;
+    }
+
+    @Override
+    public SysAccount getPerAccount(BigDecimal money) {
+        return sysAccountDao.getPerAccount(money);
+    }
+
+    @Override
+    public SysAccount getAccount(String company, String channel, String type, BigDecimal amount) {
+        return sysAccountDao.getAccount(company, channel, type, amount);
+    }
 
 }

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

@@ -1013,7 +1013,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					"http://mstutest.dayaedu.com/api-student/studentOrder/notify",
 					"http://mstutest.dayaedu.com/#/paymentresult?orderNo=" + orderNo,
 					"vip课购买",
-					vipGroup.getName());
+					vipGroup.getName(),
+					user.getId());
 			studentPaymentOrder.setPaymentChannel((String) payMap.get("type"));
 			studentPaymentOrder.setUpdateTime(date);
 			studentPaymentOrderService.update(studentPaymentOrder);

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -379,4 +379,10 @@
 	<select id="queryEducationalMusicGroupId" resultType="java.lang.String">
 		SELECT GROUP_CONCAT(mg.id_) FROM music_group mg WHERE mg.educational_teacher_id_ = #{userIds}
 	</select>
+
+	<select id="findUserMusicGroup" resultMap="MusicGroup">
+		SELECT mg.* FROM music_group mg
+		LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
+		WHERE sr.user_id_ = #{UserId} AND sr.payment_status_= '2' ORDER BY sr.id_ ASC LIMIT 1
+	</select>
 </mapper>

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

@@ -246,7 +246,7 @@
         <![CDATA[
         SELECT COUNT(*)
         FROM student_payment_order
-        WHERE status_ <= 2
+        WHERE FIND_IN_SET(status_,'SUCCESS,ING,WAIT_PAY')
         ]]>
     </select>
 

+ 132 - 108
mec-biz/src/main/resources/config/mybatis/SysAccountMapper.xml

@@ -1,112 +1,136 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ym.mec.biz.dal.dao.SysAccountDao">
-  <resultMap id="SysAccount" type="com.ym.mec.biz.dal.entity.SysAccount">
-    <!--@Table sys_account-->
-    <id column="id_" jdbcType="INTEGER" property="id" />
-    <result column="company_" jdbcType="VARCHAR" property="company" />
-    <result column="mer_no_" jdbcType="VARCHAR" property="merNo" />
-    <result column="max_receipt_" jdbcType="DECIMAL" property="maxReceipt" />
-    <result column="has_receipt_" jdbcType="DECIMAL" property="hasReceipt" />
-    <result column="channel_" jdbcType="VARCHAR" property="channel" />
-    <result column="type_" jdbcType="CHAR" property="type" />
-    <result column="version" jdbcType="INTEGER" property="version" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    id_,company_, mer_no_, max_receipt_, has_receipt_, channel_, type_, version
-  </sql>
-  <select id="get" parameterType="java.lang.Integer" resultMap="SysAccount">
-    <!--@mbg.generated-->
-    select 
-    <include refid="Base_Column_List" />
-    from sys_account
-    where id_ = #{id,jdbcType=INTEGER}
-  </select>
-  <delete id="delete" parameterType="java.lang.Integer">
-    <!--@mbg.generated-->
-    delete from sys_account
-    where id_ = #{id,jdbcType=INTEGER}
-  </delete>
-  <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.SysAccount" useGeneratedKeys="true">
-    <!--@mbg.generated-->
-    insert into sys_account
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="company != null">
-        company_,
-      </if>
-      <if test="merNo != null">
-        mer_no_,
-      </if>
-      <if test="maxReceipt != null">
-        max_receipt_,
-      </if>
-      <if test="hasReceipt != null">
-        has_receipt_,
-      </if>
-      <if test="channel != null">
-        channel_,
-      </if>
-      <if test="type != null">
-        type_,
-      </if>
-      <if test="version != null">
-        version,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="company != null">
-        #{company,jdbcType=VARCHAR},
-      </if>
-      <if test="merNo != null">
-        #{merNo,jdbcType=VARCHAR},
-      </if>
-      <if test="maxReceipt != null">
-        #{maxReceipt,jdbcType=DECIMAL},
-      </if>
-      <if test="hasReceipt != null">
-        #{hasReceipt,jdbcType=DECIMAL},
-      </if>
-      <if test="channel != null">
-        #{channel,jdbcType=VARCHAR},
-      </if>
-      <if test="type != null">
-          #{type,jdbcType=CHAR},
-      </if>
-      <if test="version != null">
-        #{version,jdbcType=INTEGER},
-      </if>
-    </trim>
-  </insert>
-  <update id="update" parameterType="com.ym.mec.biz.dal.entity.SysAccount">
-    <!--@mbg.generated-->
-    update sys_account
-    <set>
-      <if test="company != null">
-        company_ = #{company,jdbcType=VARCHAR},
-      </if>
-      <if test="merNo != null">
-        mer_no_ = #{merNo,jdbcType=VARCHAR},
-      </if>
-      <if test="maxReceipt != null">
-        max_receipt_ = #{maxReceipt,jdbcType=DECIMAL},
-      </if>
-      <if test="hasReceipt != null">
-        has_receipt_ = #{hasReceipt,jdbcType=DECIMAL},
-      </if>
-      <if test="channel != null">
-        channel_ = #{channel,jdbcType=VARCHAR},
-      </if>
-      <if test="type != null">
-          type_ = #{type,jdbcType=CHAR},
-      </if>
-      <if test="version != null">
-        version = version+1,
-      </if>
-    </set>
-    where id_ = #{id,jdbcType=INTEGER} AND version =#{version}
-  </update>
-  <!-- 获取一个私户账户 -->
-  <select id="getPerAccount" resultMap="SysAccount">
-    SELECT * FROM sys_account WHERE channel_ = 'YQPAY' AND type_ = 'PER'
-  </select>
+    <resultMap id="SysAccount" type="com.ym.mec.biz.dal.entity.SysAccount">
+        <!--@Table sys_account-->
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="company_" jdbcType="VARCHAR" property="company"/>
+        <result column="mer_no_" jdbcType="VARCHAR" property="merNo"/>
+        <result column="max_receipt_" jdbcType="DECIMAL" property="maxReceipt"/>
+        <result column="has_receipt_" jdbcType="DECIMAL" property="hasReceipt"/>
+        <result column="channel_" jdbcType="VARCHAR" property="channel"/>
+        <result column="type_" jdbcType="CHAR" property="type"/>
+        <result column="version" jdbcType="INTEGER" property="version"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+            id_,
+            company_,
+            mer_no_,
+            max_receipt_,
+            has_receipt_,
+            channel_,
+            type_,
+            version
+    </sql>
+    <select id="get" parameterType="java.lang.Integer" resultMap="SysAccount">
+        <!--@mbg.generated-->
+        select
+        <include refid="Base_Column_List"/>
+        from sys_account
+        where id_ = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="delete" parameterType="java.lang.Integer">
+        <!--@mbg.generated-->
+        delete from sys_account
+        where id_ = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.SysAccount"
+            useGeneratedKeys="true">
+        <!--@mbg.generated-->
+        insert into sys_account
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="company != null">
+                company_,
+            </if>
+            <if test="merNo != null">
+                mer_no_,
+            </if>
+            <if test="maxReceipt != null">
+                max_receipt_,
+            </if>
+            <if test="hasReceipt != null">
+                has_receipt_,
+            </if>
+            <if test="channel != null">
+                channel_,
+            </if>
+            <if test="type != null">
+                type_,
+            </if>
+            <if test="version != null">
+                version,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="company != null">
+                #{company,jdbcType=VARCHAR},
+            </if>
+            <if test="merNo != null">
+                #{merNo,jdbcType=VARCHAR},
+            </if>
+            <if test="maxReceipt != null">
+                #{maxReceipt,jdbcType=DECIMAL},
+            </if>
+            <if test="hasReceipt != null">
+                #{hasReceipt,jdbcType=DECIMAL},
+            </if>
+            <if test="channel != null">
+                #{channel,jdbcType=VARCHAR},
+            </if>
+            <if test="type != null">
+                #{type,jdbcType=CHAR},
+            </if>
+            <if test="version != null">
+                #{version,jdbcType=INTEGER},
+            </if>
+        </trim>
+    </insert>
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.SysAccount">
+        <!--@mbg.generated-->
+        update sys_account
+        <set>
+            <if test="company != null">
+                company_ = #{company,jdbcType=VARCHAR},
+            </if>
+            <if test="merNo != null">
+                mer_no_ = #{merNo,jdbcType=VARCHAR},
+            </if>
+            <if test="maxReceipt != null">
+                max_receipt_ = #{maxReceipt,jdbcType=DECIMAL},
+            </if>
+            <if test="hasReceipt != null">
+                has_receipt_ = #{hasReceipt,jdbcType=DECIMAL},
+            </if>
+            <if test="channel != null">
+                channel_ = #{channel,jdbcType=VARCHAR},
+            </if>
+            <if test="type != null">
+                type_ = #{type,jdbcType=CHAR},
+            </if>
+            <if test="version != null">
+                version = version+1,
+            </if>
+        </set>
+        where id_ = #{id,jdbcType=INTEGER} AND version =#{version}
+    </update>
+    <!-- 获取一个私户账户 -->
+    <select id="getPerAccount" resultMap="SysAccount">
+        SELECT *
+        FROM sys_account
+        WHERE channel_ = 'YQPAY'
+          AND type_ = 'PER'
+    </select>
+
+    <select id="getAccount" resultMap="SysAccount">
+        SELECT * FROM sys_account WHERE company_=#{company}
+        <if test="channel != null">
+            AND channel_ = #{channel}
+        </if>
+        <if test="type != null">
+            AND type_ = #{type}
+        </if>
+        <if test="amount != null">
+            <![CDATA[AND max_receipt_ < has_receipt_+ #{amount}]]>
+        </if>
+    </select>
 </mapper>