Aslee 3 jaren geleden
bovenliggende
commit
77056a293e

+ 4 - 2
src/main/java/com/caimei/modules/archive/dao/CmOrderArchiveDao.java

@@ -16,8 +16,6 @@ import java.util.List;
 @MyBatisDao
 public interface CmOrderArchiveDao extends CrudDao<CmOrderArchive> {
 
-    List<String> getShopOrderIdList(@Param("shopOrderId") Integer shopOrderId);
-
     List<CmOrderArchiveFile> getArchiveFileList(@Param("archiveId") int archiveId);
 
     void insertArchiveFile(CmOrderArchiveFile archiveFile);
@@ -31,4 +29,8 @@ public interface CmOrderArchiveDao extends CrudDao<CmOrderArchive> {
     String getAllFileIds(Integer orderArchiveId);
 
     Integer checkFileName(@Param("fileName") String fileName,@Param("orderArchiveId") Integer orderArchiveId,@Param("fileIds") String fileIds);
+
+    Integer checkShopOrderIdExist(Integer shopOrderId);
+
+    Integer checkShopOrderIdAble(Integer shopOrderId);
 }

+ 35 - 17
src/main/java/com/caimei/modules/archive/service/CmOrderArchiveService.java

@@ -56,31 +56,53 @@ public class CmOrderArchiveService extends CrudService<CmOrderArchiveDao, CmOrde
 		return super.findPage(page, cmOrderArchive);
 	}
 
-    private static String endpoint = Global.getConfig("aliyun.endpoint");
-    private static String accessKeyId = Global.getConfig("aliyun.accessKeyId");
-    private static String accessKeySecret = Global.getConfig("aliyun.accessKeySecret");
-    private static String privateBucket = Global.getConfig("aliyun.bucketName");
-    private static String config = Global.getConfig("cm.config");
-	
+
 	@Transactional(readOnly = false)
-	public void save(CmOrderArchive cmOrderArchive) {
-		if (cmOrderArchive.getIsNewRecord()) {
-			SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
-			StringBuilder orderArchiveNo = new StringBuilder(format.format(new Date()));
+	public Map<String,Object> saveArchive(CmOrderArchive cmOrderArchive) {
+        HashMap<String, Object> result = new HashMap<>(2);
+        if (cmOrderArchive.getIsNewRecord()) {
+            SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
+            StringBuilder orderArchiveNo = new StringBuilder(format.format(new Date()));
             Random random = new Random();
             for (int i = 0; i < 8; i++) {
                 orderArchiveNo.append(random.nextInt(10));
             }
             cmOrderArchive.setArchiveNo(orderArchiveNo.toString());
             cmOrderArchive.setAddTime(new Date());
+        } else {
+            // 当新的子订单id和数据库中的子订单id不同时,校验新的子订单id是否可用
+            CmOrderArchive dbArchive = cmOrderArchiveDao.get(cmOrderArchive.getId());
+            if (!cmOrderArchive.getShopOrderId().equals(dbArchive.getShopOrderId())) {
+                // 检查子订单id是否存在
+                Integer existId = cmOrderArchiveDao.checkShopOrderIdExist(cmOrderArchive.getShopOrderId());
+                if (null == existId) {
+                    result.put("code", -1);
+                    result.put("msg", "子订单id不存在");
+                    return result;
+                } else {
+                    // 检查子订单是否已被使用
+                    Integer ableId = cmOrderArchiveDao.checkShopOrderIdAble(cmOrderArchive.getShopOrderId());
+                    if (null == ableId) {
+                        result.put("code", -2);
+                        result.put("msg", "该子订单id已使用");
+                        return result;
+                    }
+                }
+            }
+
         }
 		super.save(cmOrderArchive);
         String fileIds = cmOrderArchive.getFileIds();
-        for (String id : fileIds.split(",")) {
-            if (StringUtil.isNotBlank(id)) {
-                cmOrderArchiveDao.updateArchiveFile(Integer.valueOf(id),Integer.valueOf(cmOrderArchive.getId()));
+        if (StringUtil.isNotEmpty(fileIds)) {
+            for (String id : fileIds.split(",")) {
+                if (StringUtil.isNotBlank(id)) {
+                    cmOrderArchiveDao.updateArchiveFile(Integer.valueOf(id),Integer.valueOf(cmOrderArchive.getId()));
+                }
             }
         }
+        result.put("code", 0);
+        result.put("msg", "保存成功");
+        return result;
 	}
 	
 	@Transactional(readOnly = false)
@@ -88,10 +110,6 @@ public class CmOrderArchiveService extends CrudService<CmOrderArchiveDao, CmOrde
 		super.delete(cmOrderArchive);
 	}
 
-	public List<String> getShopOrderIdList(Integer shopOrderId) {
-		return cmOrderArchiveDao.getShopOrderIdList(shopOrderId);
-	}
-
     public List<CmOrderArchiveFile> getArchiveFileList(String archiveId) {
         return cmOrderArchiveDao.getArchiveFileList(Integer.parseInt(archiveId));
     }

+ 5 - 3
src/main/java/com/caimei/modules/archive/web/CmOrderArchiveController.java

@@ -60,13 +60,11 @@ public class CmOrderArchiveController extends BaseController {
 
 	@RequestMapping(value = "form")
 	public String form(CmOrderArchive cmOrderArchive, Model model) {
-        List<String> shopOrderIdList = cmOrderArchiveService.getShopOrderIdList(cmOrderArchive.getShopOrderId());
         List<CmOrderArchiveFile> archiveFileList = null;
         if (StringUtils.isNotEmpty(cmOrderArchive.getId())) {
             archiveFileList = cmOrderArchiveService.getArchiveFileList(cmOrderArchive.getId());
         }
 		model.addAttribute("cmOrderArchive", cmOrderArchive);
-		model.addAttribute("shopOrderIdList", shopOrderIdList);
 		model.addAttribute("archiveFileList", archiveFileList);
 		return "modules/archive/cmOrderArchiveForm";
 	}
@@ -76,7 +74,11 @@ public class CmOrderArchiveController extends BaseController {
 		if (!beanValidator(model, cmOrderArchive)){
 			return form(cmOrderArchive, model);
 		}
-		cmOrderArchiveService.save(cmOrderArchive);
+		Map<String,Object> result = cmOrderArchiveService.saveArchive(cmOrderArchive);
+		if (0 != Integer.parseInt(result.get("code").toString())) {
+			model.addAttribute("errorMsg", result.get("msg").toString());
+			return form(cmOrderArchive, model);
+		}
 		addMessage(redirectAttributes, "保存订单资料成功");
 		return "redirect:"+Global.getAdminPath()+"/archive/cmOrderArchive/?repage";
 	}

+ 13 - 9
src/main/resources/mappings/modules/archive/CmOrderArchiveMapper.xml

@@ -98,14 +98,6 @@
 			</otherwise>
 		</choose>
 	</select>
-	<select id="getShopOrderIdList" resultType="java.lang.String">
-		select so.shopOrderID from cm_shop_order so where so.shopOrderID not in (select a.shopOrderId from cm_order_archive a
-		where a.shopOrderId is not null
-			<if test="shopOrderId != null">
-				and a.shopOrderId != #{shopOrderId}
-			</if>
-		    ) order by so.shopOrderID desc
-	</select>
 	<select id="getArchiveFileList" resultType="com.caimei.modules.archive.entity.CmOrderArchiveFile">
 		select id, fileName, ossName, ossUrl
 		from cm_order_archive_file
@@ -135,8 +127,20 @@
 			)
 		</where>
 	</select>
+    <select id="checkShopOrderIdExist" resultType="java.lang.Integer">
+        select so.shopOrderID from cm_shop_order so
+        where so.shopOrderID = #{shopOrderId}
+    </select>
+
+    <select id="checkShopOrderIdAble" resultType="java.lang.Integer">
+        select so.shopOrderID from cm_shop_order so
+        where so.shopOrderID = #{shopOrderId}
+        and so.shopOrderID not in
+        (select a.shopOrderId from cm_order_archive a
+        where a.shopOrderId is not null) limit 1
+    </select>
 
-	<insert id="insert" parameterType="CmOrderArchive"  keyProperty="id" useGeneratedKeys="true">
+    <insert id="insert" parameterType="CmOrderArchive"  keyProperty="id" useGeneratedKeys="true">
 		INSERT INTO cm_order_archive(
 			archiveNo,
 			addTime

+ 21 - 11
src/main/webapp/WEB-INF/views/modules/archive/cmOrderArchiveForm.jsp

@@ -23,6 +23,14 @@
 				}
 			});
 		});
+
+        /**
+         * @param obj
+         * jquery控制input只能输入数字
+         */
+        function onlynum(obj) {
+            obj.value = obj.value.replace(/[^\d]/g, ""); //清除"数字"以外的字符
+        }
 	</script>
 	<style>
 		.controls .new-tag {
@@ -166,6 +174,7 @@
 		<li><a href="${ctx}/archive/cmOrderArchive/">订单资料列表</a></li>
 		<li class="active"><a href="${ctx}/archive/cmOrderArchive/form?id=${cmOrderArchive.id}">订单资料${not empty cmOrderArchive.id?'编辑':'添加'}</a></li>
 	</ul><br/>
+	<input type="hidden" id="errorMsg" value="${errorMsg}"/>
 	<form:form id="inputForm" modelAttribute="cmOrderArchive" action="${ctx}/archive/cmOrderArchive/save" method="post" class="form-horizontal">
 		<form:hidden path="id"/>
 		<form:hidden path="fileIds" id="fileIds"/>
@@ -173,28 +182,25 @@
 		<div class="control-group">
 			<label class="control-label">订单资料标题:</label>
 			<div class="controls">
-				<form:input path="title" htmlEscape="false" maxlength="35" class="input-xlarge "/>
+				<form:input path="title" htmlEscape="false" maxlength="30" class="input-xlarge "/>
 			</div>
 		</div>
 		<div class="control-group">
 			<label class="control-label"><font color="red">*</font>子订单ID:</label>
 			<div class="controls">
-				<form:select path="shopOrderId" class="input-xlarge required" >
-					<form:option value="" label="请选择"/>
-                    <form:options items="${shopOrderIdList}" htmlEscape="false"/>
-                </form:select>
-			</div>
+                <form:input path="shopOrderId" htmlEscape="false" maxlength="8" class="input-xlarge required" onkeyup="onlynum(this)"/>
+            </div>
 		</div>
 		<div class="control-group">
 			<label class="control-label"><font color="red">*</font>供应商名称:</label>
 			<div class="controls">
-				<form:input path="shopName" htmlEscape="false" maxlength="55" class="input-xlarge required"/>
+				<form:input path="shopName" htmlEscape="false" maxlength="50" class="input-xlarge required"/>
 			</div>
 		</div>
 		<div class="control-group">
 			<label class="control-label"><font color="red">*</font>机构名称:</label>
 			<div class="controls">
-				<form:input path="clubName" htmlEscape="false" maxlength="55" class="input-xlarge required"/>
+				<form:input path="clubName" htmlEscape="false" maxlength="50" class="input-xlarge required"/>
 			</div>
 		</div>
 		<div class="control-group">
@@ -227,12 +233,12 @@
 		</div>
 		<div class="control-group">
 			<label class="control-label">资料上传:</label>
-			<input id="uploadFileName" type="text" style="display: inline;margin-left:20px" placeholder="支持pdf、word、img、jpg" disabled="true" class="input-xlarge required" />
+			<input id="uploadFileName" type="text" style="display: inline;margin-left:20px" placeholder="支持pdf、word、png、jpg" disabled="true" class="input-xlarge required" />
 			<div class="upload">
-				<input type="file" name="file" id="archiveFile" accept=".pdf,.doc,.img,.jpg">选择文件
+				<input type="file" name="file" id="archiveFile" accept=".pdf,.doc,.docx,.png,.jpg">选择文件
             </div>
 			<div class="add-submit">
-				<input id="addSubmit" type="button" value="上传"/>上传&nbsp;
+				<input id="addSubmit" type="button" value="上传"/>上传&nbsp;+
 			</div>
 			<div class="upload-loading">
 				<img alt="gif" src="/static/images/upload.gif" width="32px" border="none">
@@ -259,6 +265,10 @@
 <script>
 	// 初始化主营内容数据
 	$(function () {
+		var errorMsg = $("#errorMsg").val();
+		if (errorMsg != '' && errorMsg != 'undefined') {
+			jBox.tip(errorMsg, "error");
+		}
 		var html = '';
 		$('#tagArea').html(html);
 		$('.Main-content').show();