yonge 3 роки тому
батько
коміт
2b13c1e372

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

@@ -22,4 +22,6 @@ public interface TenantContractTemplateDao extends BaseDAO<Integer, TenantContra
 	TenantContractTemplate queryLatestContractTemplate(@Param("owner") String owner, @Param("type") String type, @Param("tenantId") Integer tenantId);
 	
 	int disableContract(@Param("owner") String owner, @Param("type") String type, @Param("tenantId") Integer tenantId);
+	
+	Integer queryMaxVersion();
 }

+ 7 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TenantInfoDao.java

@@ -1,17 +1,19 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.biz.dal.entity.TenantInfo;
 import com.ym.mec.biz.dal.entity.TenantProductSumm;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 public interface TenantInfoDao extends BaseMapper<TenantInfo> {
+	
+	TenantInfo getLocked(Integer tenantId);
 
     <T> IPage<T> queryPage(Page<T> page, @Param("param") Map<String, Object> param);
 

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

@@ -38,4 +38,8 @@ public interface TenantContractTemplateService extends BaseService<Integer, Tena
 	 */
 	TenantContractTemplate queryLatestContractTemplate(Integer tenantId, String owner, String type);
 	
+	boolean createContractTemplate(TenantContractTemplate tenantContractTemplate);
+	
+	boolean updateContractTempalte(TenantContractTemplate tenantContractTemplate);
+	
 }

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantContractTemplateServiceImpl.java

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.ym.mec.biz.dal.dao.TenantContractTemplateDao;
+import com.ym.mec.biz.dal.dao.TenantInfoDao;
 import com.ym.mec.biz.dal.dto.TenantContractTemplateDto;
 import com.ym.mec.biz.dal.entity.TenantContractTemplate;
 import com.ym.mec.biz.service.TenantContractTemplateService;
@@ -26,6 +27,9 @@ public class TenantContractTemplateServiceImpl extends BaseServiceImpl<Integer,
 	
 	@Autowired
 	private TenantContractTemplateDao tenantContractTemplateDao;
+	
+	@Autowired
+	private TenantInfoDao tenantInfoDao;
 
 	@Override
 	public BaseDAO<Integer, TenantContractTemplate> getDAO() {
@@ -93,5 +97,42 @@ public class TenantContractTemplateServiceImpl extends BaseServiceImpl<Integer,
 		}
 		return tenantContractTemplate;
 	}
+
+	@Override
+	@Transactional
+	public boolean createContractTemplate(TenantContractTemplate tenantContractTemplate) {
+		
+		Integer tenantId = tenantContractTemplate.getTenantId();
+		tenantInfoDao.getLocked(tenantId);
+		
+		Integer maxVersion = tenantContractTemplateDao.queryMaxVersion();
+		int version = maxVersion == null ? 1 : maxVersion + 1;
+		
+		tenantContractTemplate.setVersion(version);
+		Date date = new Date();
+		tenantContractTemplate.setCreateTime(date);
+		tenantContractTemplate.setUpdateTime(date);
+		insert(tenantContractTemplate);
+		
+		return true;
+	}
+
+	@Override
+	@Transactional
+	public boolean updateContractTempalte(TenantContractTemplate tenantContractTemplate) {
+		
+		Integer tenantId = tenantContractTemplate.getTenantId();
+		tenantInfoDao.getLocked(tenantId);
+		
+		Integer maxVersion = tenantContractTemplateDao.queryMaxVersion();
+		int version = maxVersion == null ? 1 : maxVersion + 1;
+		
+		tenantContractTemplate.setVersion(version);
+		Date date = new Date();
+		tenantContractTemplate.setUpdateTime(date);
+		
+		update(tenantContractTemplate);
+		return true;
+	}
 	
 }

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/TenantContractTemplateMapper.xml

@@ -148,4 +148,8 @@
 			and owner_ = #{owner}
 		</if>
 	</update>
+	
+	<select id="queryMaxVersion" resultType="java.lang.Integer">
+		SELECT max(version_) FROM tenant_contract_template 
+	</select>
 </mapper>

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/TenantInfoMapper.xml

@@ -54,6 +54,10 @@
         <result column="student_up_limit_" jdbcType="INTEGER" property="studentUpLimit"/>
         <result column="expiry_date_" jdbcType="TIMESTAMP" property="expireDate"/>
     </resultMap>
+    
+    <select id="getLocked" resultMap="TenantInfoInfoResult">
+    	select * from tenant_info WHERE id_ = #{tenantId} for update
+    </select>
 
     <select id="queryPage" parameterType="map" resultMap="TenantInfoInfoResult">
         SELECT a.`id_`,

+ 1 - 7
mec-web/src/main/java/com/ym/mec/web/controller/TenantContractTemplateController.java

@@ -4,8 +4,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 
-import java.util.Date;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -56,15 +54,11 @@ public class TenantContractTemplateController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('tenantContractTemplate/add')")
 	public Object add(TenantContractTemplate tenantContractTemplate) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-		Date date = new Date();
 		
 		tenantContractTemplate.setStatus(false);
-		tenantContractTemplate.setCreateTime(date);
-		tenantContractTemplate.setUpdateTime(date);
 		tenantContractTemplate.setModifyBy(sysUser.getId());
 		tenantContractTemplate.setTenantId(TenantContextHolder.getTenantId());
-		tenantContractTemplate.setVersion(1);
-		tenantContractTemplateService.insert(tenantContractTemplate);
+		tenantContractTemplateService.createContractTemplate(tenantContractTemplate);
 		return succeed();
 	}