瀏覽代碼

Merge remote-tracking branch 'origin/developerD' into developer

# Conflicts:
#	src/main/java/com/caimei/modules/order/service/NewOrderService.java
huangzhiguo 2 年之前
父節點
當前提交
773d4ce683
共有 32 個文件被更改,包括 484 次插入72 次删除
  1. 6 0
      src/main/java/com/caimei/modules/coupon/dao/CmCouponDao.java
  2. 4 2
      src/main/java/com/caimei/modules/coupon/service/CmVipCouponService.java
  3. 21 12
      src/main/java/com/caimei/modules/info/entity/Info.java
  4. 2 2
      src/main/java/com/caimei/modules/order/service/NewOrderService.java
  5. 2 0
      src/main/java/com/caimei/modules/product/dao/ProductDao.java
  6. 18 0
      src/main/java/com/caimei/modules/product/entity/Product.java
  7. 13 0
      src/main/java/com/caimei/modules/product/service/ProductService.java
  8. 12 1
      src/main/java/com/caimei/modules/product/web/ProductNewController.java
  9. 9 0
      src/main/java/com/caimei/modules/user/dao/OperationsDao.java
  10. 48 1
      src/main/java/com/caimei/modules/user/entity/OperationalLogs.java
  11. 66 0
      src/main/java/com/caimei/modules/user/service/SysLogService.java
  12. 9 0
      src/main/java/com/caimei/modules/user/web/newUser/AgencyController.java
  13. 4 0
      src/main/java/com/caimei/modules/user/web/newUser/SpController.java
  14. 6 0
      src/main/resources/mappings/modules/coupon/CmCouponMapper.xml
  15. 8 0
      src/main/resources/mappings/modules/info/InfoMapper.xml
  16. 12 0
      src/main/resources/mappings/modules/product/ProductMapper.xml
  17. 8 0
      src/main/resources/mappings/modules/product/ProductNewMapper.xml
  18. 4 4
      src/main/resources/mappings/modules/user/NewCmClubMapper.xml
  19. 20 0
      src/main/resources/mappings/modules/user/OperationalLogsMapper.xml
  20. 15 0
      src/main/webapp/WEB-INF/views/modules/info/infoList.jsp
  21. 11 7
      src/main/webapp/WEB-INF/views/modules/product-new/productEdit.jsp
  22. 28 1
      src/main/webapp/WEB-INF/views/modules/product-new/productList.jsp
  23. 6 0
      src/main/webapp/WEB-INF/views/modules/product-new/statusRemarksList.jsp
  24. 1 1
      src/main/webapp/WEB-INF/views/modules/product/cmSecondDetailForm.jsp
  25. 26 15
      src/main/webapp/WEB-INF/views/modules/super/cmSvipPackageForm.jsp
  26. 1 0
      src/main/webapp/WEB-INF/views/modules/svip/cmSvipCouponConfiguration.jsp
  27. 1 0
      src/main/webapp/WEB-INF/views/modules/svip/cmSvipCouponForm.jsp
  28. 17 7
      src/main/webapp/WEB-INF/views/modules/svip/cmSvipCouponList.jsp
  29. 15 5
      src/main/webapp/WEB-INF/views/modules/svip/cmSvipHistoryList.jsp
  30. 18 8
      src/main/webapp/WEB-INF/views/modules/svip/cmSvipProductList.jsp
  31. 16 6
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp
  32. 57 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpProviderLogs.jsp

+ 6 - 0
src/main/java/com/caimei/modules/coupon/dao/CmCouponDao.java

@@ -91,6 +91,12 @@ public interface CmCouponDao extends CrudDao<CmCoupon> {
 
     List<CmCoupon> selconfigure();
 
+    /**
+     * 专属优惠券时间
+     * @return
+     */
+    String selMonthTime();
+
     Integer selCouponId(@Param("couponId") String couponId);
     /**
      * 专属优惠券配置插入

+ 4 - 2
src/main/java/com/caimei/modules/coupon/service/CmVipCouponService.java

@@ -445,14 +445,16 @@ public class CmVipCouponService extends CrudService<CmCouponVipDao, CmVipCoupon>
                 setSvipcouponForm(svipcouponForm, i, couponList.get(i));
             }
         }
+        svipcouponForm.setMonth(cmCouponDao.selMonthTime());
         return svipcouponForm;
     }
 
     @Transactional(readOnly = false)
     public void saveConfigure(SvipCouponForm svipcouponForm) {
         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
-        String current = df.format(new Date());
-        svipcouponForm.setMonth(current);
+//        String current = countMonth(df.format(new Date()));
+//        String current = df.format(new Date());
+//        svipcouponForm.setMonth(current);
         Integer integer = cmCouponDao.selCouponId(svipcouponForm.getCouponId1());
         String id = "";
         if (integer == null) {

+ 21 - 12
src/main/java/com/caimei/modules/info/entity/Info.java

@@ -11,7 +11,7 @@ import com.thinkgem.jeesite.common.persistence.DataEntity;
  * @version 2016-06-27
  */
 public class Info extends DataEntity<Info> {
-	
+
 	private static final long serialVersionUID = 1L;
 	private InfoType infoType;		// 信息分类
 	private String title;		// 标题
@@ -44,6 +44,7 @@ public class Info extends DataEntity<Info> {
 	private Integer auditFlag;		// 是否审核保存,1是
 	private String relatedLabels; //关联标签库
 	private String labelIds;
+	private String isRelevance;
 
 	public Info() {
 		super();
@@ -80,11 +81,11 @@ public class Info extends DataEntity<Info> {
 	public InfoType getInfoType() {
 		return infoType;
 	}
-	
+
 	public void setInfoType(InfoType infoType) {
 		this.infoType = infoType;
 	}
-	
+
 	public String getTitle() {
 		return title;
 	}
@@ -92,7 +93,7 @@ public class Info extends DataEntity<Info> {
 	public void setTitle(String title) {
 		this.title = title;
 	}
-	
+
 	public String getLabel() {
 		return label;
 	}
@@ -100,7 +101,7 @@ public class Info extends DataEntity<Info> {
 	public void setLabel(String label) {
 		this.label = label;
 	}
-	
+
 	public String getPublisher() {
 		return publisher;
 	}
@@ -108,7 +109,7 @@ public class Info extends DataEntity<Info> {
 	public void setPublisher(String publisher) {
 		this.publisher = publisher;
 	}
-	
+
 	public String getSource() {
 		return source;
 	}
@@ -132,7 +133,7 @@ public class Info extends DataEntity<Info> {
 	public void setRecommendContent(String recommendContent) {
 		this.recommendContent = recommendContent;
 	}
-	
+
 	public String getInfoContent() {
 		return infoContent;
 	}
@@ -140,7 +141,7 @@ public class Info extends DataEntity<Info> {
 	public void setInfoContent(String infoContent) {
 		this.infoContent = infoContent;
 	}
-	
+
 	public String getGuidanceImage() {
 		return guidanceImage;
 	}
@@ -165,7 +166,7 @@ public class Info extends DataEntity<Info> {
 	public void setPubdate(Date pubdate) {
 		this.pubdate = pubdate;
 	}
-	
+
 	public String getRecommendStatus() {
 		return recommendStatus;
 	}
@@ -173,7 +174,7 @@ public class Info extends DataEntity<Info> {
 	public void setRecommendStatus(String recommendStatus) {
 		this.recommendStatus = recommendStatus;
 	}
-	
+
 	public Long getBasePraise() {
 		return basePraise;
 	}
@@ -181,7 +182,7 @@ public class Info extends DataEntity<Info> {
 	public void setBasePraise(Long basePraise) {
 		this.basePraise = basePraise;
 	}
-	
+
 	public Long getRealPraise() {
 		return realPraise;
 	}
@@ -301,4 +302,12 @@ public class Info extends DataEntity<Info> {
 	public void setOnlineStatus(Integer onlineStatus) {
 		this.onlineStatus = onlineStatus;
 	}
-}
+
+	public String getIsRelevance() {
+		return isRelevance;
+	}
+
+	public void setIsRelevance(String isRelevance) {
+		this.isRelevance = isRelevance;
+	}
+}

+ 2 - 2
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -2764,8 +2764,8 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
         return newOrderDao.getSplitRecord(orderID);
     }
 
-    public String productDataVerification(Integer orderID, String firstClubType) {
-        String mes = "";
+    public String productDataVerification(Integer orderID,String firstClubType) {
+        String mes = null;
         List<NewOrderProduct> productList = newOrderProductDao.findListProductOrderID(orderID);
         if (!"1".equals(firstClubType)) {
             for (NewOrderProduct product : productList) {

+ 2 - 0
src/main/java/com/caimei/modules/product/dao/ProductDao.java

@@ -150,6 +150,8 @@ public interface ProductDao extends CrudDao<Product> {
 
     ProductDetailInfo queryProductDetailInfo(@Param("productID") Integer productID);
 
+    List<String> shopKeyword(@Param("productID") Integer productID);
+
     Product qualification(@Param("productID") Integer productID);
 
     List<ProductLadderPrice> findProductLadderPrice(@Param("productId") Integer productId, @Param("userType") Integer userType);

+ 18 - 0
src/main/java/com/caimei/modules/product/entity/Product.java

@@ -169,6 +169,8 @@ public class Product extends DataEntity<Product> {
     private String dockingPeopleName; //对接人名称
     private Integer floorId;//呵呵商城楼层id
     private Integer insertStatus;
+    private Integer isRelevance;// 是否关联标签
+    private String keywords;//供应商关联标签
 
     /**
      * 商品别名
@@ -1773,4 +1775,20 @@ public class Product extends DataEntity<Product> {
     public void setInsertStatus(Integer insertStatus) {
         this.insertStatus = insertStatus;
     }
+
+    public Integer getIsRelevance() {
+        return isRelevance;
+    }
+
+    public void setIsRelevance(Integer isRelevance) {
+        this.isRelevance = isRelevance;
+    }
+
+    public String getKeywords() {
+        return keywords;
+    }
+
+    public void setKeywords(String keywords) {
+        this.keywords = keywords;
+    }
 }

+ 13 - 0
src/main/java/com/caimei/modules/product/service/ProductService.java

@@ -348,6 +348,19 @@ public class ProductService extends CrudService<ProductDao, Product> {
     public ProductDetailInfo getProductDetailInfo(Integer productID) {
         return productDao.queryProductDetailInfo(productID);
     }
+    public String getShopKeyWord(Integer productID) {
+        String keys = "";
+        List<String> keyword = productDao.shopKeyword(productID);
+        if (keyword.size() > 0) {
+            for (int i = 0; i < keyword.size(); i++) {
+                keys += keyword.get(i);
+                if (i != keyword.size() - 1) {
+                    keys += ", ";
+                }
+            }
+        }
+        return keys;
+    }
 
     public Product qualification(Integer productID) {
         return productDao.qualification(productID);

+ 12 - 1
src/main/java/com/caimei/modules/product/web/ProductNewController.java

@@ -330,6 +330,10 @@ public class ProductNewController extends BaseController {
             product.setProductDescribe(productService.findProductDescribe(product.getProductID()));
             product.setProductDetail(productService.findProductDetail(product.getProductID()));
             product.setSkuList(productService.findSkuList(product.getProductID()));
+            // 供应商信息
+            String shopKeyWord = productService.getShopKeyWord(product.getProductID());
+            product.setKeywords(shopKeyWord);
+
         } else {
             //发布特殊商品给默认值
             product.setIncludedTax("2");
@@ -912,7 +916,14 @@ public class ProductNewController extends BaseController {
                     validFlag = "2";
                 }
             }
-
+            // 商品重新上架
+            if ("32".equals(validFlag)) {
+                validFlag = "2";
+            }
+            // 商品下架
+            if ("33".equals(validFlag)) {
+                validFlag = "3";
+            }
             productNewService.auditProduct(validFlag, newvalidFlag, showtime, beforeValidFlag, productID);
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             String current = dateFormat.format(new Date());

+ 9 - 0
src/main/java/com/caimei/modules/user/dao/OperationsDao.java

@@ -3,6 +3,9 @@ package com.caimei.modules.user.dao;
 import com.caimei.modules.user.entity.*;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 @MyBatisDao
 public interface OperationsDao extends CrudDao<OperationalLogs> {
@@ -28,5 +31,11 @@ public interface OperationsDao extends CrudDao<OperationalLogs> {
    CmClubinfo cmclubinfo(Integer clubId);
 
    ClubTemporary temPorary(String Id);
+
+   List<OperationalLogs> selOperationals(Integer clubID);
+
+   void inProvider(@Param("spId") Integer spId, @Param("clubId") Integer clubId, @Param("operator") String operator);
+
+   NewCmClub clubData(Integer clubID);
 }
 

+ 48 - 1
src/main/java/com/caimei/modules/user/entity/OperationalLogs.java

@@ -3,6 +3,7 @@ package com.caimei.modules.user.entity;
 
 import com.thinkgem.jeesite.common.persistence.DataEntity;
 
+import java.util.ArrayList;
 import java.util.Date;
 
 public class OperationalLogs extends DataEntity<OperationalLogs> {
@@ -10,11 +11,17 @@ public class OperationalLogs extends DataEntity<OperationalLogs> {
   private String institutionName;
   private String Contact;
   private String operationtype;
-  private String Actioncontent;
+  private String Actioncontent;   //内容
   private String Operator;
   private Date Operationtime;
   private String startTime;     //添加时间开始 查询条件
   private String endTime;        //添加时间结束  查询条件
+  private String spName;        //协销名称
+  private String createTime;    //创建时间
+  private Integer isOneself;    //是否是自主注册 0 自主注册 1 协销拉机构上线 2 数据初始 3 分配协销
+
+  private String year;
+  private ArrayList actioncontents; //跟换协销记录
 
   public String getStartTime() {
     return startTime;
@@ -82,4 +89,44 @@ public class OperationalLogs extends DataEntity<OperationalLogs> {
   public void setOperationtime(Date operationtime) {
     Operationtime = operationtime;
   }
+
+  public String getSpName() {
+    return spName;
+  }
+
+  public void setSpName(String spName) {
+    this.spName = spName;
+  }
+
+  public String getCreateTime() {
+    return createTime;
+  }
+
+  public void setCreateTime(String createTime) {
+    this.createTime = createTime;
+  }
+
+  public String getYear() {
+    return year;
+  }
+
+  public void setYear(String year) {
+    this.year = year;
+  }
+
+  public ArrayList getActioncontents() {
+    return actioncontents;
+  }
+
+  public void setActioncontents(ArrayList actioncontents) {
+    this.actioncontents = actioncontents;
+  }
+
+  public Integer getIsOneself() {
+    return isOneself;
+  }
+
+  public void setIsOneself(Integer isOneself) {
+    this.isOneself = isOneself;
+  }
 }

+ 66 - 0
src/main/java/com/caimei/modules/user/service/SysLogService.java

@@ -7,11 +7,13 @@ import com.caimei.modules.user.entity.NewCmClub;
 import com.caimei.modules.user.entity.OperationalLogs;
 import com.thinkgem.jeesite.common.persistence.Page;
 import com.thinkgem.jeesite.common.service.CrudService;
+import com.thinkgem.jeesite.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -89,4 +91,68 @@ public class SysLogService extends CrudService<OperationsDao, OperationalLogs> {
         return operationDao.insert(operationalLogs);
     }
 
+    public NewCmClub clubData(Integer clubID) {
+        return operationDao.clubData(clubID);
+    }
+
+    public Page<OperationalLogs> spListLog(Page<OperationalLogs> page, Integer clubID) {
+        List<OperationalLogs> logsList = operationDao.selOperationals(clubID);
+
+        ArrayList<String> yearDate = new ArrayList<>();
+        if (logsList.size() > 0) {
+            for (OperationalLogs logs : logsList) {
+                if (StringUtils.isNotBlank(logs.getCreateTime())) {
+                    // 获取年月时间
+                    String[] split = logs.getCreateTime().split(" ");
+                    if (split.length > 0) {
+                        String year = split[0].trim();
+                        // 拼接更换记录信息
+                        String count = "";
+                        Boolean bool = false;
+                        ArrayList<String> arrayList = new ArrayList<>();
+                        // 合并同一天更换记录
+                        for (int i = 0; i < logsList.size(); i++) {
+                            // 与外层时间比对,避免重复
+                            String[] splitStent = logsList.get(i).getCreateTime().split(" ");
+                            String newYear = splitStent[0].trim();
+                            String time = splitStent[1].trim();
+                            if (newYear.equals(year)) {
+                                if (i == logsList.size() - 1) {
+                                    if ( 0 == logsList.get(i).getIsOneself()) {
+                                        count = "机构自主注册,协销为【" + logsList.get(i).getSpName() + "】" + ",操作人为【" + logsList.get(i).getOperator() + "】,变更时间点【" + time + "】";
+                                    } else if (1 == logsList.get(i).getIsOneself()) {
+                                        count = "协销拉机构上线,协销为【" + logsList.get(i).getSpName() + "】" + ",操作人为【" + logsList.get(i).getOperator() + "】,变更时间点【" + time + "】";
+                                    } else {
+                                        count = "目前协销为【" + logsList.get(i).getSpName() + "】";
+                                    }
+                                } else {
+                                    count = "协销变更为【" + logsList.get(i).getSpName() + "】" + ",操作人为【" + logsList.get(i).getOperator() + "】,变更时间点【" + time + "】";
+                                }
+                                bool = !yearDate.contains(newYear);
+                                if (bool) {
+                                    arrayList.add(count);
+                                }
+                            }
+                        }
+                        // 排除空
+                        if (bool) {
+                            logs.setYear(year);
+                            logs.setActioncontents(arrayList);
+                            // 记录年月日时间,避免重复添加
+                            yearDate.add(year);
+                        }
+                    }
+                }
+            }
+        }
+        page.setList(logsList);
+        return page;
+    }
+
+    @Transactional(readOnly = false)
+    public void insetProvider(Integer spId, Integer clubId, String operator) {
+        // 插入协销修改记录
+        operationDao.inProvider(spId, clubId, operator);
+    }
+
 }

+ 9 - 0
src/main/java/com/caimei/modules/user/web/newUser/AgencyController.java

@@ -1850,4 +1850,13 @@ public class AgencyController extends BaseController {
         model.addAttribute("newCmClub", newCmClub);
         return "modules/userNew/cmClubData";
     }
+
+    @RequestMapping("/spLogs")
+    public String spListLog(NewCmClub cmClub, Model model, HttpServletRequest request, HttpServletResponse response) {
+        NewCmClub club = sysLogService.clubData(cmClub.getClubID());
+        Page<OperationalLogs> listLog = sysLogService.spListLog(new Page<OperationalLogs>(request, response), cmClub.getClubID());
+        model.addAttribute("page", listLog);
+        model.addAttribute("cmClub", club);
+        return "modules/userNew/cmSpProviderLogs";
+    }
 }

+ 4 - 0
src/main/java/com/caimei/modules/user/web/newUser/SpController.java

@@ -178,6 +178,10 @@ public class SpController extends BaseController {
                                 sysLogService.insert(sysLog);
                             }
                         }
+                        // 更换协销成功、添加机构更换协销记录
+                        if (null != serviceProvider.getServiceProviderID()) {
+                            sysLogService.insetProvider(serviceProvider.getServiceProviderID(), clubId, username);
+                        }
                     } else {
                         map.put("success", false);
                         map.put("msg", "操作失败");

+ 6 - 0
src/main/resources/mappings/modules/coupon/CmCouponMapper.xml

@@ -575,6 +575,12 @@
 	<select id="selconfigure" resultType="com.caimei.modules.coupon.entity.CmCoupon">
 		SELECT <include refid="cmCouponColumns"/> FROM cm_coupon a WHERE configure = 1
 	</select>
+	<select id="selMonthTime" resultType="java.lang.String">
+		SELECT cscm.useTime
+		FROM cm_coupon a
+				 LEFT JOIN cm_svip_coupon csc ON a.id = csc.couponId
+				 LEFT JOIN cm_svip_coupon_month cscm ON csc.montId = cscm.id WHERE a.delFlag = 0 AND a.configure = 1 LIMIT 1
+	</select>
 	<select id="selCouponId" resultType="integer">
 		SELECT cscm.id as id FROM cm_svip_coupon_month cscm LEFT JOIN cm_svip_coupon csc ON csc.montId = cscm.id WHERE csc.couponId = #{couponId}
 	</select>

+ 8 - 0
src/main/resources/mappings/modules/info/InfoMapper.xml

@@ -125,6 +125,14 @@
 			</if>
 			<if test="endPubDate != null and endPubDate != ''">
 				AND a.pubdate <![CDATA[   <=  ]]> #{endPubDate}
+			</if>
+			<if test="isRelevance != null and isRelevance != ''">
+				<if test="isRelevance == 1">
+					AND a.labelIds IS NOT NULL
+				</if>
+				<if test="isRelevance == 2">
+					AND a.labelIds IS NULL
+				</if>
 			</if>
 				<!--  AND b.enabledStatus='1' -->
 		</where>

+ 12 - 0
src/main/resources/mappings/modules/product/ProductMapper.xml

@@ -1862,6 +1862,18 @@
         FROM productdetailinfo
         where productID = #{productID}
     </select>
+    <select id="shopKeyword" resultType="java.lang.String">
+        SELECT DISTINCT cusf.keyword FROM
+            cm_user_search_frequency cusf
+            LEFT JOIN cm_shop_label csl ON csl.keywordId = cusf.Id
+            LEFT JOIN cm_shop_relevance csr ON csr.id = csl.relevanceId
+            LEFT JOIN shop s ON s.shopID = csr.shopID
+            LEFT JOIN product p ON p.shopID = s.shopID
+        WHERE
+            csl.delFlag = 0
+          AND csr.delFlag = 0
+          AND p.productID = #{productID}
+    </select>
     <select id="qualification" resultType="com.caimei.modules.product.entity.Product">
         SELECT qualificationNo, productName, qualificationTime, qualificationLink
         FROM product

+ 8 - 0
src/main/resources/mappings/modules/product/ProductNewMapper.xml

@@ -256,6 +256,14 @@
                 AND (cshd.contactName LIKE concat('%',#{contactName},'%') or cshd.companyName LIKE
                 concat('%',#{contactName},'%'))
             </if>
+            <if test="isRelevance != null and isRelevance != ''">
+                <if test="isRelevance == 1">
+                    AND a.labelIds IS NOT NULL
+                </if>
+                <if test="isRelevance == 2">
+                    AND a.labelIds IS NULL
+                </if>
+            </if>
             <if test="sqlMap !=null and sqlMap !=''">
                 ${sqlMap.dsf}
             </if>

+ 4 - 4
src/main/resources/mappings/modules/user/NewCmClubMapper.xml

@@ -67,8 +67,8 @@
         LEFT JOIN cm_svip_user csu ON csu.userId = u.userID
 		LEFT JOIN serviceprovider sp ON sp.serviceProviderID = a.spID
 		LEFT JOIN town b ON b.townID=a.townID
-		LEFT JOIN city c ON c.cityID=b.cityID
-		LEFT JOIN province d ON d.provinceID=c.provinceID
+		LEFT JOIN city c ON c.cityID=a.cityID
+		LEFT JOIN province d ON d.provinceID=a.provinceID
     </sql>
 
     <select id="get" resultType="NewCmClub">
@@ -501,10 +501,10 @@
         auditTime,p.mainImage
         AS mainImage,p.name AS productName,sh.name AS shopName
         FROM cm_club_remarks ccr
-        LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
+        LEFT JOIN serviceprovider s ON ccr.createServiceProviderId = s.serviceProviderID
         LEFT JOIN club c ON c.clubId=ccr.clubId
         # LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
-        LEFT JOIN cm_serviceTeam_group csg ON ccr.serviceProviderId = csg.serviceId
+        LEFT JOIN cm_serviceTeam_group csg ON ccr.createServiceProviderId = csg.serviceId
         LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
         LEFT JOIN cm_club_report ccre ON ccre.Id= ccr.reportID
         LEFT JOIN product p ON p.productID = ccr.productID

+ 20 - 0
src/main/resources/mappings/modules/user/OperationalLogsMapper.xml

@@ -107,4 +107,24 @@
         SELECT * FROM club_temporary
         WHERE id = #{id}
     </select>
+    <select id="selOperationals" resultType="com.caimei.modules.user.entity.OperationalLogs">
+        SELECT
+            cpr.id as providerId,
+            cpr.clubId,
+            cpr.operator,
+            cpr.isOneself,
+            cpr.createTime,
+            CASE sp.status WHEN 91 THEN '采美默认协销经理(官方账号)' ELSE sp.linkMan END AS "spName"
+        FROM cm_provider_record cpr
+        LEFT JOIN serviceprovider sp ON sp.serviceProviderID = cpr.spID
+        WHERE cpr.clubId = #{clubID}
+        order by createTime desc
+    </select>
+    <insert id="inProvider">
+        insert into cm_provider_record (spId, clubId, operator, isOneself, createTime)
+        values (#{spId}, #{clubId}, #{operator}, 3, now())
+    </insert>
+    <select id="clubData" resultType="com.caimei.modules.user.entity.NewCmClub">
+        select clubID, name, linkMan, contractMobile, addTime from club where clubID = #{clubID}
+    </select>
 </mapper>

+ 15 - 0
src/main/webapp/WEB-INF/views/modules/info/infoList.jsp

@@ -210,6 +210,12 @@
 					<form:option value="" label=" "/>
 					<form:options items="${fns:getDictList('enabled_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
 				</form:select>
+			<label>关联标签库:</label>
+				<form:select path="isRelevance" class="input-medium">
+					<form:option value="" label="请选择"/>
+					<form:option value="1" label="已关联"/>
+					<form:option value="2" label="未关联"/>
+				</form:select>
 			<label>首页置顶:</label>
 			<form:select path="topFlag" class="input-mini">
 				<form:option value="" label="全部"/>
@@ -235,6 +241,7 @@
 				<th>实际阅读量</th>
 				<th>首页置顶位</th>
 				<%--<th>优先级</th>--%>
+				<th>关联标签库</th>
 				<th>发布时间</th>
 				<th>添加时间</th>
 				<th>推荐状态</th>
@@ -264,6 +271,14 @@
 				<td>${empty info.pv?0:(info.pv)}</td>
 				<td>${info.topPosition}</td>
 				<%--<td>${empty info.priorityIndex?0:(info.priorityIndex)}</td>--%>
+				<td>
+					<c:if test="${!empty info.labelIds}">
+						已关联
+					</c:if>
+					<c:if test="${empty info.labelIds}">
+						未关联
+					</c:if>
+				</td>
 				<td><fmt:formatDate value="${info.pubdate}" pattern="yyyy-MM-dd HH:mm"/></td>
 				<td><fmt:formatDate value="${info.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
 				<td>

+ 11 - 7
src/main/webapp/WEB-INF/views/modules/product-new/productEdit.jsp

@@ -354,7 +354,11 @@
                     <c:forEach items="${SearchFrequencyVo}" var="sea">
                         <option value="${sea.id}">${sea.keyword}</option>
                     </c:forEach>
-                </select>
+                </select>&nbsp;&nbsp;&nbsp;&nbsp;
+                <c:if test="${!empty product.keywords}">
+                    <span style="display: inline-block; width: 120px">供应商关联标签:(${product.shopName})</span>
+                    <span><textarea rows="6" style="width: 700px;">${product.keywords}</textarea></span>
+                </c:if>
             </td>
         </tr>
         <tr>
@@ -668,7 +672,7 @@
                 <form:select path="visibility" class="input-large required">
                     <form:option value="3" label="所有人可见"/>
                     <form:option value="2" label="所有机构可见"/>
-                    <form:option value="1" label="仅会员机构可见"/>
+                    <form:option value="1" label="仅资质机构可见"/>
                     <form:option value="4" label="仅医美机构可见"/>
                 </form:select>
             </td>
@@ -677,10 +681,10 @@
             <th><span class="red">*</span>价格可见度:</th>
             <td colspan="3">
                 <form:select path="priceFlag" class="input-large required">
-                    <form:option value="0" label="对所有机构公开"/>
-                    <form:option value="2" label="仅对会员机构公开"/>
-                    <form:option value="3" label="仅对医美机构公开"/>
-                    <form:option value="1" label="价格不公开"/>
+                    <form:option value="0" label="所有机构可见"/>
+                    <form:option value="2" label="仅资质机构可见"/>
+                    <form:option value="3" label="仅医美机构可见"/>
+                    <form:option value="1" label="价格不可见"/>
                 </form:select>
             </td>
         </tr>
@@ -690,7 +694,7 @@
                 <form:select path="commodityDetailsFlag" class="input-large required">
                     <form:option value="1" label="所有人可见"/>
                     <form:option value="2" label="所有机构可见"/>
-                    <form:option value="3" label="仅会员机构可见"/>
+                    <form:option value="3" label="仅资质机构可见"/>
                     <form:option value="4" label="仅医美机构可见"/>
                 </form:select>
             </td>

+ 28 - 1
src/main/webapp/WEB-INF/views/modules/product-new/productList.jsp

@@ -424,6 +424,14 @@
                     <form:option value="3" label="待审核"/>
                 </form:select>
             </div>
+            <div class="item">
+                <label>关联标签库:</label>
+                <form:select path="isRelevance" class="input-medium">
+                    <form:option value="" label="请选择"/>
+                    <form:option value="1" label="已关联"/>
+                    <form:option value="2" label="未关联"/>
+                </form:select>
+            </div>
             <div class="item">
                 <input id="searchValidFlag" value="${product.searchValidFlag}" style="display: none"/>
                 <label>商品状态:</label>
@@ -480,6 +488,7 @@
         <th>商品状态</th>
         <th>新品参与状态</th>
         <th>新品审核状态</th>
+        <th>关联标签库</th>
         <th>提交时间</th>
         <shiro:hasPermission name="product:product:edit">
             <th>操作</th>
@@ -629,6 +638,14 @@
                     <font color="red">___</font>
                 </c:if>
             </td>
+            <td>
+                <c:if test="${!empty product.labelIds}">
+                    已关联
+                </c:if>
+                <c:if test="${empty product.labelIds}">
+                    未关联
+                </c:if>
+            </td>
             <td>
                 <c:if test="${empty product.addTime}">
                     ---
@@ -686,7 +703,7 @@
                                    onclick="auditThis(${product.id},'${product.brand.name}','${product.brand.status}','${product.costCheckFlag}','${product.costPrice}','${product.sqlCostProportional}','${product.newvalidFlag}','${product.showTime}','${product.addTime}','${product.newProductType}')">上架审核</a>
                             </c:if>
                             <c:if test="${product.newProductType eq 1 &&  product.newvalidFlag != 1 && product.validFlag == 2}"><a
-                                    class="red" href="javascript:void(0);"
+                                    href="javascript:void(0);"
                                     onclick="auditThis(${product.id},'${product.brand.name}','${product.brand.status}','${product.costCheckFlag}','${product.costPrice}','${product.sqlCostProportional}','${product.newvalidFlag}','${product.showTime}','${product.addTime}','${product.newProductType}','${product.validFlag}')">新品展示审核</a></c:if>
                             <c:if test="${product.validFlag ne 10 && product.validFlag ne 1 && product.validFlag ne 8}">
                                 <a class="red" href="javascript:void(0);"
@@ -699,6 +716,12 @@
                             <c:if test="${product.validFlag eq 2}">
                                 <a class="red" href="javascript:void(0);" onclick="validChange(${product.id}, 9)">隐身</a>
                             </c:if>
+                            <c:if test="${ product.validFlag eq 3}">
+                                <a class="red" href="javascript:void(0);" onclick="validChange(${product.id}, 32)">重新上架</a>
+                            </c:if>
+                            <c:if test="${ product.validFlag eq 2 || product.validFlag eq 9}">
+                                <a class="red" href="javascript:void(0);" onclick="validChange(${product.id}, 33)">下架</a>
+                            </c:if>
                             <c:if test="${product.validFlag eq 9}">
                                 <a class="red" href="javascript:void(0);" onclick="validChange(${product.id}, 2)">显身</a>
                             </c:if>
@@ -1080,6 +1103,10 @@
             msg = "确定显身此商品吗?";
         } else if (flag == 0) {
             msg = "确定删除该商品吗?";
+        } else if (flag == 32) {
+            msg = "确定重新上架该商品吗?";
+        } else if (flag == 33) {
+            msg = "确定下架该商品吗?";
         }
         $("#msg").text(msg);
         $('.tips-popup-reason').show();

+ 6 - 0
src/main/webapp/WEB-INF/views/modules/product-new/statusRemarksList.jsp

@@ -117,6 +117,12 @@
                     <c:if test="${record.validFlag eq 22}">
                         <font color="#0099FF">取消冻结</font>
                     </c:if>
+                    <c:if test="${record.validFlag eq 32}">
+                        <font color="#0099FF">重新上架</font>
+                    </c:if>
+                    <c:if test="${record.validFlag eq 33}">
+                        <font color="#0099FF">下架</font>
+                    </c:if>
                 </span>
             </div>
             <br><br>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/product/cmSecondDetailForm.jsp

@@ -379,7 +379,7 @@
         <label class="control-label"><font color="red">*</font>商品可见度:</label>
         <div class="controls">
             <form:select path="visibility" class="input-large required" id="visibility">
-                <form:option value="1" label="仅会员机构可见"/>
+                <form:option value="1" label="仅资质机构可见"/>
                 <form:option value="3" label="所有人可见"/>
                 <form:option value="2" label="所有机构可见"/>
                 <form:option value="4" label="仅医美机构可见"/>

+ 26 - 15
src/main/webapp/WEB-INF/views/modules/super/cmSvipPackageForm.jsp

@@ -5,7 +5,8 @@
     <title>超级会员套餐配置管理</title>
     <meta name="decorator" content="default"/>
     <script type="text/javascript">
-        $(document).ready(function () {
+
+        /*$(document).ready(function () {
             //$("#name").focus();
             $("#inputForm").validate({
                 submitHandler: function (form) {
@@ -19,11 +20,11 @@
                         alert("套餐2售价应为正整数且不能为0,如100");
                         return false;
                     }
-                    /*var places3 = $(".input-xlarge3").val();
+                    /!*var places3 = $(".input-xlarge3").val();
                     if (!(/(^[1-9]\d*$)/.test(places3))) {
                         alert("套餐3售价应为正整数且不能为0,如100");
                         return false;
-                    }*/
+                    }*!/
                     var places4 = $(".input-xlarge4").val();
                     if (!(/(^[1-9]\d*$)/.test(places4))) {
                         alert("美豆比例应为正整数且不能为0,如100");
@@ -55,21 +56,31 @@
                 alert("套餐2售价应为正整数且不能为0,如100");
                 return false;
             }
-            /*var places3 = $(".input-xlarge3").val();
+            /!*var places3 = $(".input-xlarge3").val();
             if (!(/(^[1-9]\d*$)/.test(places3))) {
                 alert("套餐3售价应为正整数且不能为0,如100");
                 return false;
-            }*/
+            }*!/
             var places4 = $(".input-xlarge4").val();
             if (!(/(^[1-9]\d*$)/.test(places4))) {
                 alert("美豆比例应为正整数且不能为0,如100");
                 return false;
             }
+        }*/
+        function getNewManager() {
+            var link = "";
+            $.get("${ctx}/jump/link", function (data) {
+                link = "https://manager.caimei365.com/#/member/meal/edit?token=" + data;
+                window.open(link, "_blank");
+            });
         }
     </script>
 </head>
 <body>
-<ul class="nav nav-tabs">
+<h1>
+    <input type="button" onclick="getNewManager()" value="点此前往新后台"></input>
+</h1>
+<%--<ul class="nav nav-tabs">
     <li class="active"><a href="${ctx}/super/cmSvipPackage/">超级会员套餐配置</a></li>
 </ul>
 <br/>
@@ -77,12 +88,12 @@
            class="form-horizontal">
     <form:hidden path="id"/>
     <sys:message content="${message}"/>
-    <%--    <div class="control-group">--%>
-    <%--        <label class="control-label">套餐名称:</label>--%>
-    <%--        <div class="controls">--%>
-    <%--            <form:input path="name" htmlEscape="false" maxlength="50" class="input-lab"/>--%>
-    <%--        </div>--%>
-    <%--    </div>--%>
+    &lt;%&ndash;    <div class="control-group">&ndash;%&gt;
+    &lt;%&ndash;        <label class="control-label">套餐名称:</label>&ndash;%&gt;
+    &lt;%&ndash;        <div class="controls">&ndash;%&gt;
+    &lt;%&ndash;            <form:input path="name" htmlEscape="false" maxlength="50" class="input-lab"/>&ndash;%&gt;
+    &lt;%&ndash;        </div>&ndash;%&gt;
+    &lt;%&ndash;    </div>&ndash;%&gt;
     <div class="control-group">
         <label class="control-label"><span class="help-inline"><font color="red">*</font> </span>套餐1:</label>
         <div class="controls">
@@ -97,12 +108,12 @@
         </div>
     </div>
 
-    <%--<div class="control-group">
+    &lt;%&ndash;<div class="control-group">
         <label class="control-label"><span class="help-inline"><font color="red">*</font> </span>套餐3:</label>
         <div class="controls">
             1个月超级会员,售价:<form:input path="price3" htmlEscape="false" class="input-xlarge3" style="width: 60px" onblur="checkNum()"/>
         </div>
-    </div>--%>
+    </div>&ndash;%&gt;
     <div class="control-group">
         <label class="control-label"><span class="help-inline"><font color="red">*</font> </span>采美豆兑换套餐:</label>
         <div class="controls">
@@ -112,6 +123,6 @@
     <div class="form-actions">
         <input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>&nbsp;
     </div>
-</form:form>
+</form:form>--%>
 </body>
 </html>

+ 1 - 0
src/main/webapp/WEB-INF/views/modules/svip/cmSvipCouponConfiguration.jsp

@@ -143,6 +143,7 @@
     </div>
     <sys:message content="${message}"/>
     <form:hidden path="id" value="${cmVipCoupon.id}"/>
+    <form:hidden path="month" value="${svipcouponForm.month}"/>
     <div class="coupon-wrap" id="couponWrap1">
         <div class="control-group">
             <label class="control-label"><font color="red">*</font><b>优惠券1:</b></label>

+ 1 - 0
src/main/webapp/WEB-INF/views/modules/svip/cmSvipCouponForm.jsp

@@ -146,6 +146,7 @@
 <form:form id="inputForm" modelAttribute="svipcouponForm" action="${ctx}/vip/cmCoupon/save" method="post" class="form-horizontal">
     <sys:message content="${message}"/>
     <form:hidden path="id" value="${cmVipCoupon.id}"/>
+    <form:hidden path="month" value="${useTime}"/>
     <div class="control-group">
         <label class="control-label"><font color="red">*</font>优惠月份:</label>
         <div class="controls">

+ 17 - 7
src/main/webapp/WEB-INF/views/modules/svip/cmSvipCouponList.jsp

@@ -5,7 +5,7 @@
     <title>超级会员优惠券管理列表</title>
     <meta name="decorator" content="default"/>
     <style type="text/css">
-        .table th{text-align:center}
+        /*.table th{text-align:center}
         .table td{text-align:center}
         .table td p{margin:0; text-align: left;}
         #searchForm{line-height:40px}
@@ -15,11 +15,11 @@
         .ul-form{white-space:nowrap;margin-left:-10px !important}
         .ul-form label{width:90px;text-align:right}
         #searchForm .btn{width:128px;margin-left:20px}
-        .select-ele{width:177px}
+        .select-ele{width:177px}*/
     </style>
 </head>
 <body>
-<ul class="nav nav-tabs">
+<%--<ul class="nav nav-tabs">
     <li class="active"><a href="${ctx}/vip/cmCoupon/">超级会员专属优惠券</a></li>
     <li><a href="${ctx}/vip/cmCoupon/configuration">专属优惠券配置</a></li>
 </ul>
@@ -58,7 +58,7 @@
             </div>
             <div class="item">
                 <input id="btnSubmit" class="btn btn-primary" type="submit" value="查询" />
-<%--                <input class="btn btn-primary" onclick="window.location='${ctx}/vip/cmCoupon/form'" value="添加优惠券"/>--%>
+&lt;%&ndash;                <input class="btn btn-primary" onclick="window.location='${ctx}/vip/cmCoupon/form'" value="添加优惠券"/>&ndash;%&gt;
             </div>
         </div>
     </div>
@@ -125,14 +125,24 @@
     </c:forEach>
     </tbody>
 </table>
-<div class="pagination">${page}</div>
+<div class="pagination">${page}</div>--%>
+<h1>
+    <input type="button" onclick="getNewManager()" value="点此前往新后台"></input>
+</h1>
 <script type="text/javascript">
-    function page(n, s) {
+    function getNewManager() {
+        var link = "";
+        $.get("${ctx}/jump/link", function (data) {
+            link = "https://manager.caimei365.com/#/member/coupon/list?token=" + data;
+            window.open(link, "_blank");
+        });
+    }
+    /*function page(n, s) {
         $("#pageNo").val(n);
         $("#pageSize").val(s);
         $("#searchForm").submit();
         return false;
-    }
+    }*/
 </script>
 </body>
 </html>

+ 15 - 5
src/main/webapp/WEB-INF/views/modules/svip/cmSvipHistoryList.jsp

@@ -14,7 +14,14 @@
         }
     </style>
     <script type="text/javascript">
-        $(document).ready(function () {
+        function getNewManager() {
+            var link = "";
+            $.get("${ctx}/jump/link", function (data) {
+                link = "https://manager.caimei365.com/#/member/member/list?token=" + data;
+                window.open(link, "_blank");
+            });
+        }
+        /*$(document).ready(function () {
 
         });
 
@@ -23,11 +30,14 @@
             $("#pageSize").val(s);
             $("#searchForm").submit();
             return false;
-        }
+        }*/
     </script>
 </head>
 <body>
-<ul class="nav nav-tabs">
+<h1>
+    <input type="button" onclick="getNewManager()" value="点此前往新后台"></input>
+</h1>
+<%--<ul class="nav nav-tabs">
     <li class="active"><a href="${ctx}/svip/cmSvipHistory/">超级会员列表</a></li>
     <li><a href="${ctx}/svip/cmSvipGive/">赠送超级会员</a></li>
 </ul>
@@ -106,6 +116,6 @@
     </c:forEach>
     </tbody>
 </table>
-<div class="pagination">${page}</div>
+<div class="pagination">${page}</div>--%>
 </body>
-</html>
+</html>

+ 18 - 8
src/main/webapp/WEB-INF/views/modules/svip/cmSvipProductList.jsp

@@ -9,8 +9,15 @@
 		.table td{text-align: center;}
 	</style>
 	<script type="text/javascript">
-		$(document).ready(function() {
-			
+		function getNewManager() {
+			var link = "";
+			$.get("${ctx}/jump/link", function (data) {
+				link = "https://manager.caimei365.com/#/member/product/list?token=" + data;
+				window.open(link, "_blank");
+			});
+		}
+		/*$(document).ready(function() {
+
 		});
 		function page(n,s){
 			$("#pageNo").val(n);
@@ -19,10 +26,10 @@
         	return false;
         }
 
-		/**
+		/!**
 		 * @param obj
 		 * jquery控制input只能输入数字
-		 */
+		 *!/
 		function onlynum(obj) {
 			obj.value = obj.value.replace(/[^\d]/g, ""); //清除"数字"以外的字符
 		}
@@ -31,11 +38,14 @@
 		function changeSort(id, sortThis) {
 			var value = sortThis.value;
 			$("#svipProduct" + id).val(id + "-" + value);
-		}
+		}*/
 	</script>
 </head>
 <body>
-	<ul class="nav nav-tabs">
+<h1>
+	<input type="button" onclick="getNewManager()" value="点此前往新后台"></input>
+</h1>
+	<%--<ul class="nav nav-tabs">
 		<li class="active"><a href="${ctx}/svip/cmSvipProduct/">商品列表</a></li>
 		<li><a href="${ctx}/svip/cmSvipProduct/adsImageForm">宣传图</a></li>
 	</ul>
@@ -186,7 +196,7 @@
 				return true;
 			}
 		});
-	}
+	}--%>
 </script>
 </body>
-</html>
+</html>

+ 16 - 6
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp

@@ -255,15 +255,24 @@
             <td>
                 <c:if test="${newCmClubList.userIdentity eq 4}">
                     个人机构
+                    <c:if test="${newCmClubList.svipUserFlag eq 1}">
+                        <font color="red">(超级会员)</font>
+                    </c:if>
+                    <c:if test="${newCmClubList.svipUserFlag ne 1}">
+                        <font color="red">(普通会员)</font>
+                    </c:if>
                 </c:if>
                 <c:if test="${newCmClubList.userIdentity eq 2}">
                     资质机构
-                </c:if>
-                <c:if test="${newCmClubList.svipUserFlag eq 1}">
-                    <font color="red">(超级会员)</font>
-                </c:if>
-                <c:if test="${newCmClubList.userIdentity eq 2 and newCmClubList.svipUserFlag eq 0}">
-                    <font color="red">(普通会员)</font>
+                    <c:if test="${newCmClubList.svipUserFlag eq 1}">
+                        <font color="red">(超级会员)</font>
+                    </c:if>
+                    <c:if test="${empty newCmClubList.medicalPracticeLicenseImg and newCmClubList.svipUserFlag ne 1}">
+                        <font color="red">(高级会员)</font>
+                    </c:if>
+                    <c:if test="${!empty newCmClubList.medicalPracticeLicenseImg and newCmClubList.svipUserFlag ne 1}">
+                        <font color="red">(医美会员)</font>
+                    </c:if>
                 </c:if>
             </td>
             <td>
@@ -334,6 +343,7 @@
                         <a href="${ctx}/new/user/agency/operation?userOrganizeID=${newCmClubList.userOrganizeID}&clubID=${newCmClubList.clubID}&userID=${newCmClubList.userID}&name=${newCmClubList.name}">查看运营人员</a>
                     </shiro:hasPermission>
                 </c:if>
+                <a href="${ctx}/new/user/agency/spLogs?clubID=${newCmClubList.clubID}">协销更换记录</a>
                 <c:if test="${newCmClubList.status eq 1 || newCmClubList.status eq 92}">
                     <shiro:hasPermission name="club:cmAgency:audit">
                         <a href="javascript:void(0);" onclick="toAudit(${newCmClubList.clubID},'${newCmClubList.userName}','${newCmClubList.bindMobile}')">审核</a>

+ 57 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmSpProviderLogs.jsp

@@ -0,0 +1,57 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+    <title>协销更换记录</title>
+    <meta name="decorator" content="default"/>
+    <style>
+        .handel_data {
+            line-height: 50px;
+            font-size: 15px;
+            margin-left: 10%;
+        }
+        .table_deli{
+            margin-top: 5px;
+            border: #0d0d0d 1px solid;
+        }
+    </style>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
+    <li class="active"><a href="${ctx}/new/user/agency/spLogs?clubID=${cmClub.clubID}">协销更换记录</a></li>
+</ul>
+<div style="height: 50px; background: #f5f5f5;">
+    <span class="handel_data">机构名称:${cmClub.name}</span>
+    <span class="handel_data">联系人:${cmClub.linkMan}</span>
+    <span class="handel_data">手机号:${cmClub.contractMobile}</span>
+    <span class="handel_data">注册时间:${cmClub.addTime}</span>
+</div>
+<sys:message content="${message}"/>
+<div class="table_deli">
+    <table id="contentTable" class="table table-striped table-bordered table-condensed">
+        <thead>
+        <tr>
+            <th>日期</th>
+            <th>更换记录</th>
+        </tr>
+        </thead>
+        <tbody>
+        <c:forEach items="${page.list}" var="logs">
+            <c:if test="${!empty logs.actioncontents}">
+                <tr>
+                    <td>${logs.year}</td>
+                    <td>
+                        <c:forEach items="${logs.actioncontents}" var="provider" varStatus="status">
+                            ${provider}<br>
+                        </c:forEach>
+                    </td>
+                </tr>
+            </c:if>
+        </c:forEach>
+        </tbody>
+    </table>
+</div>
+
+</body>
+</html>