Selaa lähdekoodia

Merge remote-tracking branch 'remotes/origin/developer' into developerA

Aslee 3 vuotta sitten
vanhempi
commit
20fac2f335
39 muutettua tiedostoa jossa 1618 lisäystä ja 556 poistoa
  1. 17 8
      src/main/java/com/caimei/modules/order/entity/CmRefundShop.java
  2. 43 36
      src/main/java/com/caimei/modules/order/service/CmDiscernReceiptService.java
  3. 9 7
      src/main/java/com/caimei/modules/order/service/CmPayShopService.java
  4. 47 12
      src/main/java/com/caimei/modules/order/service/CmRefundShopService.java
  5. 40 14
      src/main/java/com/caimei/modules/order/web/CmRefundShopController.java
  6. 4 0
      src/main/java/com/caimei/modules/product/dao/ProductDao.java
  7. 34 2
      src/main/java/com/caimei/modules/product/entity/Product.java
  8. 13 1
      src/main/java/com/caimei/modules/product/entity/ProductDetailInfo.java
  9. 8 0
      src/main/java/com/caimei/modules/product/service/ProductService.java
  10. 3 0
      src/main/java/com/caimei/modules/product/web/ProductNewController.java
  11. 22 0
      src/main/java/com/caimei/modules/user/dao/VisitRemarkDao.java
  12. 12 1
      src/main/java/com/caimei/modules/user/entity/CmClubRemarks.java
  13. 30 0
      src/main/java/com/caimei/modules/user/entity/Server.java
  14. 188 0
      src/main/java/com/caimei/modules/user/entity/VisitRemarkVo.java
  15. 1 0
      src/main/java/com/caimei/modules/user/service/NewCmClubService.java
  16. 21 0
      src/main/java/com/caimei/modules/user/service/VisitRemarkService.java
  17. 87 0
      src/main/java/com/caimei/modules/user/web/newUser/VisitRemarkController.java
  18. 1 0
      src/main/java/com/thinkgem/jeesite/common/service/CrudService.java
  19. 0 150
      src/main/resources/config/alpha/caimei.properties
  20. 0 62
      src/main/resources/config/alpha/dfs_client.conf
  21. 0 7
      src/main/resources/config/alpha/dfs_pool.properties
  22. 0 33
      src/main/resources/config/alpha/log4j.properties
  23. BIN
      src/main/resources/export/refundShopList.xls
  24. 2 2
      src/main/resources/mappings/modules/hehe/CmHeheCouponMapper.xml
  25. 9 3
      src/main/resources/mappings/modules/order/CmDiscernReceiptMapper.xml
  26. 18 14
      src/main/resources/mappings/modules/order/CmRefundShopMapper.xml
  27. 15 1
      src/main/resources/mappings/modules/product/ProductMapper.xml
  28. 1 2
      src/main/resources/mappings/modules/user/NewCmClubMapper.xml
  29. 64 0
      src/main/resources/mappings/modules/user/VisitRemarkMapper.xml
  30. 3 3
      src/main/webapp/WEB-INF/views/modules/order/cmDiscernReceiptList.jsp
  31. 9 3
      src/main/webapp/WEB-INF/views/modules/order/cmRefundShopDetail.jsp
  32. 16 3
      src/main/webapp/WEB-INF/views/modules/order/cmRefundShopList.jsp
  33. 2 2
      src/main/webapp/WEB-INF/views/modules/order/differencePriceForm.jsp
  34. 1 1
      src/main/webapp/WEB-INF/views/modules/order/differencePriceRemark.jsp
  35. 435 183
      src/main/webapp/WEB-INF/views/modules/product-new/productEdit.jsp
  36. 1 1
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp
  37. 20 5
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyRemarksList.jsp
  38. 335 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmVisitList.jsp
  39. 107 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmVisitRemarksList.jsp

+ 17 - 8
src/main/java/com/caimei/modules/order/entity/CmRefundShop.java

@@ -13,13 +13,13 @@ import java.util.List;
  * @version 2019-07-01
  */
 public class CmRefundShop extends DataEntity<CmRefundShop> {
-	
+
 	private static final long serialVersionUID = 1L;
 	private String shopID;		// 供应商Id
 	private String shopName;		// 供应商名称
 	private String operator;		// 操作人ID
 	private String operatTime;		// 操作时间
-	private String refundWay;       //退款方式:1线下转账,2余额账号,3线下和余额同时退
+	private String refundWay;       //退款方式:1线下转账,2余额账号,3线下和余额同时退,4收款CRM(供应商退款)
 	private Double refundBalanceAmount;   //退款余额金额(余额账号)
 	private Double refundAmount;		// 退款金额(线下转账)
 	private String refundType;		// 线下转账具体银行
@@ -30,6 +30,7 @@ public class CmRefundShop extends DataEntity<CmRefundShop> {
 	private String endTime;
 	private String shopOrderIDs; //关联子订单ids
 	private String operatorName; //操作人名称
+	private String crmOperatorName;
 	private String shopOrderID;  //子订单ID
 	private String orderID;      //主订单ID
 	private String orderNo;      //订单编号
@@ -61,7 +62,7 @@ public class CmRefundShop extends DataEntity<CmRefundShop> {
 	public void setShopID(String shopID) {
 		this.shopID = shopID;
 	}
-	
+
 	@Length(min=0, max=11, message="操作人ID长度必须介于 0 和 11 之间")
 	public String getOperator() {
 		return operator;
@@ -70,7 +71,7 @@ public class CmRefundShop extends DataEntity<CmRefundShop> {
 	public void setOperator(String operator) {
 		this.operator = operator;
 	}
-	
+
 	@Length(min=0, max=19, message="操作时间长度必须介于 0 和 19 之间")
 	public String getOperatTime() {
 		return operatTime;
@@ -79,7 +80,7 @@ public class CmRefundShop extends DataEntity<CmRefundShop> {
 	public void setOperatTime(String operatTime) {
 		this.operatTime = operatTime;
 	}
-	
+
 	public Double getRefundAmount() {
 		return refundAmount;
 	}
@@ -87,7 +88,7 @@ public class CmRefundShop extends DataEntity<CmRefundShop> {
 	public void setRefundAmount(Double refundAmount) {
 		this.refundAmount = refundAmount;
 	}
-	
+
 	@Length(min=0, max=1, message="接收退款方式长度必须介于 0 和 1 之间")
 	public String getRefundType() {
 		return refundType;
@@ -96,7 +97,7 @@ public class CmRefundShop extends DataEntity<CmRefundShop> {
 	public void setRefundType(String refundWay) {
 		this.refundType = refundWay;
 	}
-	
+
 	@Length(min=0, max=100, message="付款时间长度必须介于 0 和 100 之间")
 	public String getRemark() {
 		return remark;
@@ -155,6 +156,14 @@ public class CmRefundShop extends DataEntity<CmRefundShop> {
 		this.operatorName = operatorName;
 	}
 
+	public String getCrmOperatorName() {
+		return crmOperatorName;
+	}
+
+	public void setCrmOperatorName(String crmOperatorName) {
+		this.crmOperatorName = crmOperatorName;
+	}
+
 	public String getShopOrderID() {
 		return shopOrderID;
 	}
@@ -210,4 +219,4 @@ public class CmRefundShop extends DataEntity<CmRefundShop> {
 	public void setShopDifference(ChangePayShopDifference shopDifference) {
 		this.shopDifference = shopDifference;
 	}
-}
+}

+ 43 - 36
src/main/java/com/caimei/modules/order/service/CmDiscernReceiptService.java

@@ -11,6 +11,7 @@ import com.caimei.utils.MathUtil;
 import com.thinkgem.jeesite.common.persistence.Page;
 import com.thinkgem.jeesite.common.service.CrudService;
 import com.thinkgem.jeesite.common.utils.DateUtils;
+import com.thinkgem.jeesite.common.utils.ObjectUtils;
 import com.thinkgem.jeesite.common.utils.StringUtils;
 import com.thinkgem.jeesite.modules.sys.entity.User;
 import com.thinkgem.jeesite.modules.sys.utils.UserUtils;
@@ -71,29 +72,31 @@ public class CmDiscernReceiptService extends CrudService<CmDiscernReceiptDao, Cm
             if ("1".equals(bean.getReceiptType()) || "3".equals(bean.getReceiptType()) || "5".equals(bean.getReceiptType())) {
                 List<Map<String, Object>> orderIDs = cmDiscernReceiptDao.getOrderIDStr(bean.getId());
                 for (Map<String, Object> map : orderIDs) {
-                    if ("".equals(type)) {
-//					协销订单 0 普通订单 1',
-                        Integer orderType = (Integer) map.get("orderType");
-                        if (null != map.get("orderType")) {
-                            type += map.get("orderType").toString().equals("0") ? "协销" : "自主";
+                    if (!ObjectUtils.isEmpty(map)) {
+                        if ("".equals(type)) {
+                            // 协销订单 0 普通订单 1',
+                            Integer orderType = (Integer) map.get("orderType");
+                            if (null != map.get("orderType")) {
+                                type += map.get("orderType").toString().equals("0") ? "协销" : "自主";
+                            } else {
+                                type += "自主";
+                            }
+                            if (2 == orderType) {
+                                //呵呵商城订单
+                                Integer orderId = ((Long) map.get("orderID")).intValue();
+                                NewOrder order = newOrderDao.findByOrderID(orderId);
+                                String name = heHeNewOrderDao.findHeUser(order.getUserID());
+                                bean.setName(name);
+                                bean.setReceiptOrderType("2");
+                            }
                         } else {
-                            type += "自主";
+                            type += ("<br>" + (map.get("orderType").toString().equals("0") ? "协销" : "自主"));
                         }
-                        if (2 == orderType) {
-                            //呵呵商城订单
-                            Integer orderId = ((Long) map.get("orderID")).intValue();
-                            NewOrder order = newOrderDao.findByOrderID(orderId);
-                            String name = heHeNewOrderDao.findHeUser(order.getUserID());
-                            bean.setName(name);
-                            bean.setReceiptOrderType("2");
+                        if ("".equals(no)) {
+                            no += "<a href='/a/order/detail?id=" + map.get("orderID") + "'>" + map.get("orderNo") + "</a>";
+                        } else {
+                            no += ("<br><a href='/a/order/detail?id=" + map.get("orderID") + "'>" + map.get("orderNo")) + "</a>";
                         }
-                    } else {
-                        type += ("<br>" + (map.get("orderType").toString().equals("0") ? "协销" : "自主"));
-                    }
-                    if ("".equals(no)) {
-                        no += "<a href='/a/order/detail?id=" + map.get("orderID") + "'>" + map.get("orderNo") + "</a>";
-                    } else {
-                        no += ("<br><a href='/a/order/detail?id=" + map.get("orderID") + "'>" + map.get("orderNo")) + "</a>";
                     }
                 }
             }
@@ -137,29 +140,33 @@ public class CmDiscernReceiptService extends CrudService<CmDiscernReceiptDao, Cm
             ReceiptOrderInfoVo roi = null; //这是通过订单列表上的一条收款记录对应的多个订单中的一个订单
             if ("1".equals(relation.getRelationType())) { // relation.orderID 指的是子订单id
                 roi = cmDiscernReceiptDao.getOrderInfoByShopOrderID(relation.getOrderID());
-                roi.setRelationType("1");
-                if ("5".equals(vo.getReceiptType())) {
-                    //供应商退款,已退金额
-                    List<CmRefundShopRecord> records = cmRefundShopRecordDao.getRefundedRecords(roi.getShopOrderID());
-                    if (records != null && records.size() > 0) {
-                        Double collect = records.stream().mapToDouble(CmRefundShopRecord::getRefundAmount).sum();
-                        roi.setRefundsAmount(collect);
-                    } else {
-                        roi.setRefundsAmount(0d);
+                if (null != roi) {
+                    roi.setRelationType("1");
+                    if ("5".equals(vo.getReceiptType())) {
+                        //供应商退款,已退金额
+                        List<CmRefundShopRecord> records = cmRefundShopRecordDao.getRefundedRecords(roi.getShopOrderID());
+                        if (records != null && records.size() > 0) {
+                            Double collect = records.stream().mapToDouble(CmRefundShopRecord::getRefundAmount).sum();
+                            roi.setRefundsAmount(collect);
+                        } else {
+                            roi.setRefundsAmount(0d);
+                        }
+                        //查询收款供应商退款金额
+                        BigDecimal shopRefundAmount = cmRefundShopRecordDao.findShopRefund(Integer.valueOf(roi.getShopOrderID()));
+                        BigDecimal refundsAmount = MathUtil.add(roi.getRefundsAmount(), shopRefundAmount);
+                        roi.setRefundsAmount(refundsAmount.doubleValue());
                     }
-                    //查询收款供应商退款金额
-                    BigDecimal shopRefundAmount = cmRefundShopRecordDao.findShopRefund(Integer.valueOf(roi.getShopOrderID()));
-                    BigDecimal refundsAmount = MathUtil.add(roi.getRefundsAmount(), shopRefundAmount);
-                    roi.setRefundsAmount(refundsAmount.doubleValue());
                 }
             }
             if ("2".equals(relation.getRelationType())) { // relation.orderID 指的是主订单id
                 roi = cmDiscernReceiptDao.getOrderInfoByOrderID(relation.getOrderID());
-                roi.setRelationType("2");
+                if (null != roi) {
+                    roi.setRelationType("2");
+                }
             }
-            if (roi != null) {
+            if (null != roi) {
                 List<ReceiptRecordVo> receiptRecordByOrderID = cmDiscernReceiptDao.findReceiptRecordByOrderID(roi);
-//                暂时不启用抹平明细
+                //                暂时不启用抹平明细
                 if (CollectionUtils.isNotEmpty(receiptRecordByOrderID)) {
                     for (ReceiptRecordVo v : receiptRecordByOrderID) {
                         if (StringUtils.equals("3", v.getConfirmType())) {

+ 9 - 7
src/main/java/com/caimei/modules/order/service/CmPayShopService.java

@@ -158,13 +158,15 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
                 }
             }
             newShopOrders.forEach(shopOrder -> {
-                NewOrder order = newOrderDao.findByOrderID(shopOrder.getOrderID());
-                if ("2".equals(order.getOrderType())) {
-                    //呵呵商城订单
-                    shopOrder.setOrderType(2);
-                    if (StringUtils.isBlank(shopOrder.getClubName())) {
-                        String name = heHeNewOrderDao.findHeUser(order.getUserID());
-                        shopOrder.setClubName(name);
+                if (null != shopOrder) {
+                    NewOrder order = newOrderDao.findByOrderID(shopOrder.getOrderID());
+                    if (null != order && "2".equals(order.getOrderType())) {
+                        //呵呵商城订单
+                        shopOrder.setOrderType(2);
+                        if (StringUtils.isBlank(shopOrder.getClubName())) {
+                            String name = heHeNewOrderDao.findHeUser(order.getUserID());
+                            shopOrder.setClubName(name);
+                        }
                     }
                 }
             });

+ 47 - 12
src/main/java/com/caimei/modules/order/service/CmRefundShopService.java

@@ -67,18 +67,20 @@ public class CmRefundShopService extends CrudService<CmRefundShopDao, CmRefundSh
             String str = "";
             String ono = "";
             for (String i : idInfo) {
-                String no = i.split("_")[0];
-                String od = i.split("_")[1];
-                String id = i.split("_")[2];
-                if ("".equals(str)) {
-                    str += ("<a href=" + Global.getAdminPath() + "/order/detail?id=" + id + ">" + no + "</a>");
-                } else {
-                    str += ("<br><a href=" + Global.getAdminPath() + "/order/detail?id=" + id + ">" + no + "</a>");
-                }
-                if ("".equals(ono)) {
-                    ono += ("<a href=" + Global.getAdminPath() + "/order/detail?id=" + id + ">" + od + "</a>");
-                } else {
-                    ono += ("<br><a href=" + Global.getAdminPath() + "/order/detail?id=" + id + ">" + od + "</a>");
+                if (StringUtils.isNotEmpty(i)) {
+                    String no = i.split("_")[0];
+                    String od = i.split("_")[1];
+                    String id = i.split("_")[2];
+                    if ("".equals(str)) {
+                        str += ("<a href=" + Global.getAdminPath() + "/order/detail?id=" + id + ">" + no + "</a>");
+                    } else {
+                        str += ("<br><a href=" + Global.getAdminPath() + "/order/detail?id=" + id + ">" + no + "</a>");
+                    }
+                    if ("".equals(ono)) {
+                        ono += ("<a href=" + Global.getAdminPath() + "/order/detail?id=" + id + ">" + od + "</a>");
+                    } else {
+                        ono += ("<br><a href=" + Global.getAdminPath() + "/order/detail?id=" + id + ">" + od + "</a>");
+                    }
                 }
             }
             crs.setShopOrderIDs(str);
@@ -88,6 +90,39 @@ public class CmRefundShopService extends CrudService<CmRefundShopDao, CmRefundSh
         return page;
     }
 
+    public List<CmRefundShop> exports(Page<CmRefundShop> page, CmRefundShop cmRefundShop){
+        cmRefundShop.setPage(page);
+        List<CmRefundShop> result = cmRefundShopDao.findList(cmRefundShop);
+        for (CmRefundShop crs : result) {
+            List<String> idInfo = cmRefundShopRecordDao.findByRefundShopID(crs.getId());
+            String str = "";
+            String ono = "";
+            for (String i : idInfo) {
+                if (StringUtils.isNotEmpty(i)) {
+                    String no = i.split("_")[0];
+                    String od = i.split("_")[1];
+                    String id = i.split("_")[2];
+                    if ("".equals(str)) {
+                        str += no;
+                    } else {
+                        str += "," + no;
+                    }
+                    if ("".equals(ono)) {
+                        ono += od;
+                    } else {
+                        ono += "," + od;
+                    }
+                }
+            }
+            crs.setShopOrderIDs(str);
+            crs.setOrderNo(ono);
+            if ("4".equals(crs.getRefundWay())){
+                crs.setOperatorName(crs.getCrmOperatorName()+"(CRM)");
+            }
+        }
+        return result;
+    }
+
     @Transactional(readOnly = false)
     public void save(CmRefundShop cmRefundShop) {
         super.save(cmRefundShop);

+ 40 - 14
src/main/java/com/caimei/modules/order/web/CmRefundShopController.java

@@ -1,10 +1,15 @@
 package com.caimei.modules.order.web;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.caimei.modules.common.utils.ExcelUtil;
+import com.caimei.modules.order.entity.CmPayShop;
+import com.caimei.modules.order.entity.CmRefundShop;
+import com.caimei.modules.order.service.CmRefundShopService;
 import com.caimei.modules.user.entity.CmUserOrganize;
 import com.caimei.modules.user.service.CmUserOrganizeService;
+import com.thinkgem.jeesite.common.config.Global;
+import com.thinkgem.jeesite.common.persistence.Page;
+import com.thinkgem.jeesite.common.utils.StringUtils;
+import com.thinkgem.jeesite.common.web.BaseController;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -14,14 +19,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import com.thinkgem.jeesite.common.config.Global;
-import com.thinkgem.jeesite.common.persistence.Page;
-import com.thinkgem.jeesite.common.web.BaseController;
-import com.thinkgem.jeesite.common.utils.StringUtils;
-import com.caimei.modules.order.entity.CmRefundShop;
-import com.caimei.modules.order.service.CmRefundShopService;
-
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 退款表--供应商退款给采美Controller
@@ -37,7 +39,7 @@ public class CmRefundShopController extends BaseController {
 
 	@Autowired
 	private CmUserOrganizeService cmUserOrganizeService;
-	
+
 	@ModelAttribute
 	public CmRefundShop get(@RequestParam(required=false) String id) {
 		CmRefundShop entity = null;
@@ -49,7 +51,7 @@ public class CmRefundShopController extends BaseController {
 		}
 		return entity;
 	}
-	
+
 	@RequiresPermissions("order:cmRefundShop:view")
 	@RequestMapping(value = {"list", ""})
 	public String list(CmRefundShop cmRefundShop, HttpServletRequest request, HttpServletResponse response, Model model) {
@@ -69,6 +71,30 @@ public class CmRefundShopController extends BaseController {
 		return "modules/order/cmRefundShopList";
 	}
 
+	@RequestMapping(value = "export")
+	public void exports(CmRefundShop cmRefundShop, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		if (null != cmRefundShop.getStartTime() && !"".equals(cmRefundShop.getStartTime()) && !cmRefundShop.getStartTime().endsWith("00:00:00")) {
+			cmRefundShop.setStartTime(cmRefundShop.getStartTime().trim() + " 00:00:00");
+		}
+		if (null != cmRefundShop.getEndTime() && !"".equals(cmRefundShop.getEndTime()) && !cmRefundShop.getEndTime().endsWith("23:59:59")) {
+			cmRefundShop.setEndTime(cmRefundShop.getEndTime().trim() + " 23:59:59");
+		}
+		//获取订单数据
+		String fileName = "退款记录列表.xls";
+		String template = Global.getConfig("export.template");
+		String templateFileName = template + "/refundShopList.xls";
+		try {
+			Map data = new HashMap<String, Object>();
+			List<CmRefundShop> list = cmRefundShopService.exports(new Page<CmRefundShop>(request, response), cmRefundShop);
+			data.put("list", list);
+			new ExcelUtil().createExcel(templateFileName, data, fileName, response);
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "退款记录列表导出失败!" + e.getMessage());
+			logger.info(e.getMessage());
+			e.printStackTrace();
+		}
+	}
+
 	@RequiresPermissions("order:cmRefundShop:view")
 	@RequestMapping(value = "form")
 	public String form(CmRefundShop cmRefundShop, Model model) {
@@ -86,7 +112,7 @@ public class CmRefundShopController extends BaseController {
 		addMessage(redirectAttributes, "保存退款表--供应商退款给采美成功");
 		return "redirect:"+Global.getAdminPath()+"/order/cmRefundShop/?repage";
 	}
-	
+
 	@RequiresPermissions("order:cmRefundShop:delete")
 	@RequestMapping(value = "delete")
 	public String delete(CmRefundShop cmRefundShop, RedirectAttributes redirectAttributes) {
@@ -145,4 +171,4 @@ public class CmRefundShopController extends BaseController {
 		}
 		return "redirect:"+Global.getAdminPath()+"/order/cmRefundShop/?repage";
 	}
-}
+}

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

@@ -172,4 +172,8 @@ public interface ProductDao extends CrudDao<Product> {
     List<Product> findProductImage(Product product);
 
     void insertProductDetailInfo(ProductDetailInfo productDetailInfo);
+
+    String findProductDetail(Integer productID);
+
+    String findProductDescribe(Integer productID);
 }

+ 34 - 2
src/main/java/com/caimei/modules/product/entity/Product.java

@@ -81,7 +81,7 @@ public class Product extends DataEntity<Product> {
     private String actCreateTimeStr;
     private String recommendType; //相关推荐类型 0自动选择; 1手动推荐
     private Integer combinationID;//商品组合Id
-
+    private String productDetail; //普通机构商品详情1同资质机构商品详情,2用普通机构商品详情
     //-----------------  虚拟字段 ----
     private boolean customClass = false;  //是否有自定义分类
     private String brandName;//品牌名称
@@ -181,9 +181,17 @@ public class Product extends DataEntity<Product> {
      */
     private String machineType;
     /**
-     * 商品详情信息
+     * 资质机构商品详情信息
      */
     private String detailInfo;
+    /**
+     * 商品说明
+     */
+    private String productDescribe;
+    /**
+     * 普通机构商品详情
+     */
+    private String commonDetailInfo;
     /**
      * 服务详情
      */
@@ -203,6 +211,30 @@ public class Product extends DataEntity<Product> {
      */
     private Integer searchType;
 
+    public String getProductDescribe() {
+        return productDescribe;
+    }
+
+    public void setProductDescribe(String productDescribe) {
+        this.productDescribe = productDescribe;
+    }
+
+    public String getProductDetail() {
+        return productDetail;
+    }
+
+    public void setProductDetail(String productDetail) {
+        this.productDetail = productDetail;
+    }
+
+    public String getCommonDetailInfo() {
+        return commonDetailInfo;
+    }
+
+    public void setCommonDetailInfo(String commonDetailInfo) {
+        this.commonDetailInfo = commonDetailInfo;
+    }
+
     public List<ProductLadderPrice> getLadderPriceList() {
         return ladderPriceList;
     }

+ 13 - 1
src/main/java/com/caimei/modules/product/entity/ProductDetailInfo.java

@@ -19,9 +19,13 @@ public class ProductDetailInfo implements Serializable {
     private String propValueImages;
 
     /**
-     * 商品详情信息
+     * 资质机构商品详情信息
      */
     private String detailInfo;
+    /**
+     * 普通机构商品详情信息
+     */
+    private String commonDetailInfo;
 
     private String detailInfoTxt;
 
@@ -43,6 +47,14 @@ public class ProductDetailInfo implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    public String getCommonDetailInfo() {
+        return commonDetailInfo;
+    }
+
+    public void setCommonDetailInfo(String commonDetailInfo) {
+        this.commonDetailInfo = commonDetailInfo;
+    }
+
     public Integer getProductDetailInfoID() {
         return productDetailInfoID;
     }

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

@@ -458,4 +458,12 @@ public class ProductService extends CrudService<ProductDao, Product> {
         productPage.setList(productList);
         return productPage;
     }
+
+    public String findProductDetail(Integer productID) {
+        return productDao.findProductDetail(productID);
+    }
+
+    public String findProductDescribe(Integer productID) {
+        return productDao.findProductDescribe(productID);
+    }
 }

+ 3 - 0
src/main/java/com/caimei/modules/product/web/ProductNewController.java

@@ -253,8 +253,11 @@ public class ProductNewController extends BaseController {
                 product.setDetailInfo(productDetailInfo.getDetailInfo());
                 product.setServiceInfo(productDetailInfo.getServiceInfo());
                 product.setOrderInfo(productDetailInfo.getOrderInfo());
+                product.setCommonDetailInfo(productDetailInfo.getCommonDetailInfo());
             }
+            product.setProductDescribe(productService.findProductDescribe(product.getProductID()));
             product.setLadderPriceList(ladderPriceList);
+            product.setProductDetail(productService.findProductDetail(product.getProductID()));
         }
         product.setCommodityType(StringUtils.isEmpty(product.getCommodityType()) ? "0" : product.getCommodityType());
         List<CmBrand> brandList = productService.findBrandList();

+ 22 - 0
src/main/java/com/caimei/modules/user/dao/VisitRemarkDao.java

@@ -0,0 +1,22 @@
+package com.caimei.modules.user.dao;
+
+
+import com.caimei.modules.user.entity.RemarksFileVo;
+import com.caimei.modules.user.entity.Server;
+import com.caimei.modules.user.entity.VisitRemarkVo;
+import com.thinkgem.jeesite.common.persistence.CrudDao;
+import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+
+import java.util.List;
+
+@MyBatisDao
+public interface VisitRemarkDao extends CrudDao<VisitRemarkVo> {
+    List<Server> getServer();
+
+    List<VisitRemarkVo> findRemarksList(VisitRemarkVo visit);
+
+    List<String> getRemarksImageList(Integer remarksId);
+
+    List<RemarksFileVo> getRemarksFileList(Integer remarksId);
+
+}

+ 12 - 1
src/main/java/com/caimei/modules/user/entity/CmClubRemarks.java

@@ -43,7 +43,10 @@ public class CmClubRemarks extends DataEntity<CmClubRemarks> {
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date addTime;
-
+    /**
+     * 咨询人
+     */
+    private String questionMan;
     /**
      * 图片列表
      */
@@ -112,4 +115,12 @@ public class CmClubRemarks extends DataEntity<CmClubRemarks> {
     public void setSpName(String spName) {
         this.spName = spName;
     }
+
+    public String getQuestionMan() {
+        return questionMan;
+    }
+
+    public void setQuestionMan(String questionMan) {
+        this.questionMan = questionMan;
+    }
 }

+ 30 - 0
src/main/java/com/caimei/modules/user/entity/Server.java

@@ -0,0 +1,30 @@
+package com.caimei.modules.user.entity;
+
+import com.thinkgem.jeesite.common.persistence.DataEntity;
+
+public class Server extends DataEntity<Server> {
+    /**
+     * 协销id
+     */
+    private String serviceProviderId;
+    /**
+     * 协销姓名
+     */
+    private String name;
+
+    public String getServiceProviderId() {
+        return serviceProviderId;
+    }
+
+    public void setServiceProviderId(String serviceProviderId) {
+        this.serviceProviderId = serviceProviderId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 188 - 0
src/main/java/com/caimei/modules/user/entity/VisitRemarkVo.java

@@ -0,0 +1,188 @@
+package com.caimei.modules.user.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.thinkgem.jeesite.common.persistence.DataEntity;
+
+import java.util.Date;
+import java.util.List;
+
+public class VisitRemarkVo extends DataEntity<VisitRemarkVo> {
+
+    /**
+     * 潜在用户备注id
+     */
+    private Integer remarksId;
+    /**
+     * 咨询人id
+     */
+    private String questionManId;
+
+    /**
+     * 协销id
+     */
+    private Integer serviceProviderId;
+    /**
+     * 协销姓名
+     */
+    private String serviceName;
+    /**
+     * 同步机构名称
+     */
+    private String clubName;
+    /**
+     * 同步clubid
+     */
+    private String clubId;
+    /**
+     * 备注/关键词
+     */
+    private String remarks;
+    /**
+     * 添加时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date addTime;
+    /**
+     * 咨询人名字
+     */
+    private String questionMan;
+    /**
+     * 同步时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date concactTime;
+
+    /**
+     * 图片列表
+     */
+    private List<String> imageList;
+
+    /**
+     * 文件列表
+     */
+    private List<RemarksFileVo> fileList;
+
+    /**
+     * 是否同步 1已同步2未同步
+     */
+    private String concat;
+
+    /**
+     * cm_visitor_remarks协销列表
+     */
+    private List<Server> serverList;
+
+    public String getClubName() {
+        return clubName;
+    }
+
+    public void setClubName(String clubName) {
+        this.clubName = clubName;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public List<Server> getServerList() {
+        return serverList;
+    }
+
+    public void setServerList(List<Server> serverList) {
+        this.serverList = serverList;
+    }
+
+    public String getConcat() {
+        return concat;
+    }
+
+    public void setConcat(String concat) {
+        this.concat = concat;
+    }
+
+    public Integer getRemarksId() {
+        return remarksId;
+    }
+
+    public void setRemarksId(Integer remarksId) {
+        this.remarksId = remarksId;
+    }
+
+    public String getQuestionManId() {
+        return questionManId;
+    }
+
+    public void setQuestionManId(String questionManId) {
+        this.questionManId = questionManId;
+    }
+
+    public Integer getServiceProviderId() {
+        return serviceProviderId;
+    }
+
+    public void setServiceProviderId(Integer serviceProviderId) {
+        this.serviceProviderId = serviceProviderId;
+    }
+
+    public String getClubId() {
+        return clubId;
+    }
+
+    public void setClubId(String clubId) {
+        this.clubId = clubId;
+    }
+
+    @Override
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @Override
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getQuestionMan() {
+        return questionMan;
+    }
+
+    public void setQuestionMan(String questionMan) {
+        this.questionMan = questionMan;
+    }
+
+    public Date getConcactTime() {
+        return concactTime;
+    }
+
+    public void setConcactTime(Date concactTime) {
+        this.concactTime = concactTime;
+    }
+
+    public List<String> getImageList() {
+        return imageList;
+    }
+
+    public void setImageList(List<String> imageList) {
+        this.imageList = imageList;
+    }
+
+    public List<RemarksFileVo> getFileList() {
+        return fileList;
+    }
+
+    public void setFileList(List<RemarksFileVo> fileList) {
+        this.fileList = fileList;
+    }
+}

+ 1 - 0
src/main/java/com/caimei/modules/user/service/NewCmClubService.java

@@ -93,6 +93,7 @@ public class NewCmClubService extends CrudService<NewCmClubDao, NewCmClub> {
         remarksList.forEach(remarks->{
             List<String> imageList = newCmClubDao.getRemarksImageList(remarks.getRemarksId());
             List<RemarksFileVo> fileList = newCmClubDao.getRemarksFileList(remarks.getRemarksId());
+            fileList.forEach(f->f.setFileUrl(OSSUtils.getOssUrl(f.getOssName())));
             remarks.setImageList(imageList);
             remarks.setFileList(fileList);
         });

+ 21 - 0
src/main/java/com/caimei/modules/user/service/VisitRemarkService.java

@@ -0,0 +1,21 @@
+package com.caimei.modules.user.service;
+
+import com.caimei.modules.user.dao.VisitRemarkDao;
+import com.caimei.modules.user.entity.Server;
+import com.caimei.modules.user.entity.VisitRemarkVo;
+import com.thinkgem.jeesite.common.service.CrudService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class VisitRemarkService extends CrudService<VisitRemarkDao, VisitRemarkVo> {
+
+    @Autowired
+    private VisitRemarkDao visitRemarkDao;
+
+    public List<Server> getServer() {
+        return visitRemarkDao.getServer();
+    }
+}

+ 87 - 0
src/main/java/com/caimei/modules/user/web/newUser/VisitRemarkController.java

@@ -0,0 +1,87 @@
+package com.caimei.modules.user.web.newUser;
+
+
+import com.caimei.modules.oss.utils.OSSUtils;
+import com.caimei.modules.user.dao.VisitRemarkDao;
+import com.caimei.modules.user.entity.RemarksFileVo;
+import com.caimei.modules.user.entity.VisitRemarkVo;
+import com.caimei.modules.user.service.VisitRemarkService;
+import com.thinkgem.jeesite.common.persistence.Page;
+import com.thinkgem.jeesite.common.utils.StringUtils;
+import com.thinkgem.jeesite.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+@Controller
+@RequestMapping(value = "${adminPath}/new/user/visit")
+public class VisitRemarkController extends BaseController {
+
+    @Autowired
+    private VisitRemarkDao visitRemarkDao;
+
+    @Autowired
+    private VisitRemarkService visitRemarkService;
+
+    @ModelAttribute
+    public VisitRemarkVo get(@RequestParam(required = false) String id) {
+        VisitRemarkVo entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = visitRemarkService.get(id);
+        }
+        if (entity == null) {
+            entity = new VisitRemarkVo();
+        }
+        entity.setServerList(visitRemarkService.getServer());
+        return entity;
+    }
+
+    @RequestMapping(value = {"list", ""})
+    public String list(VisitRemarkVo visit, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<VisitRemarkVo> page = visitRemarkService.findPage(new Page<VisitRemarkVo>(request, response, 20), visit);
+        model.addAttribute("visitRemark", visit);
+        model.addAttribute("page", page);
+        return "modules/userNew/cmVisitList";
+    }
+
+    /**
+     * 资料备注列表
+     */
+    @RequestMapping("remark")
+    public String remarksList(VisitRemarkVo visit, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<VisitRemarkVo> page = visitRemarkService.findPage(new Page<VisitRemarkVo>(request, response, 20), visit);
+        model.addAttribute("page", page);
+        model.addAttribute("visitRemark", visit);
+        return "modules/userNew/cmVisitList";
+    }
+
+    /**
+     * 资料备注列表
+     */
+    @RequestMapping("find")
+    public String find(VisitRemarkVo visit, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<VisitRemarkVo> page = visitRemarkService.findPage(new Page<VisitRemarkVo>(request, response, 20), visit);
+        visit.setPage(page);
+        List<VisitRemarkVo> remarksList = visitRemarkDao.findRemarksList(visit);
+        remarksList.forEach(remarks->{
+            List<String> imageList = visitRemarkDao.getRemarksImageList(remarks.getRemarksId());
+            List<RemarksFileVo> fileList = visitRemarkDao.getRemarksFileList(remarks.getRemarksId());
+            fileList.forEach(f->f.setFileUrl(OSSUtils.getOssUrl(f.getOssName())));
+            remarks.setImageList(imageList);
+            remarks.setFileList(fileList);
+        });
+        page.setList(remarksList);
+        model.addAttribute("page", page);
+        model.addAttribute("visit", visit);
+        return "modules/userNew/cmVisitRemarksList";
+    }
+
+}

+ 1 - 0
src/main/java/com/thinkgem/jeesite/common/service/CrudService.java

@@ -11,6 +11,7 @@ import com.caimei.modules.bulkpurchase.entity.PurchaseProduct;
 import com.caimei.modules.hehe.entity.HeheOrder;
 import com.caimei.modules.hehe.entity.HeheProduct;
 import com.caimei.modules.hehe.entity.HeheTransaction;
+import com.caimei.modules.order.entity.CmRefundShop;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 

+ 0 - 150
src/main/resources/config/alpha/caimei.properties

@@ -1,150 +0,0 @@
-#============================#
-#===== Database sttings =====#
-#============================#
-
-#oracle database settings
-#jdbc.type=oracle
-#jdbc.driver=oracle.jdbc.driver.OracleDriver
-#jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
-#jdbc.username=root
-#jdbc.password=123456
-
-#mysql database setting
-jdbc.type=mysql
-jdbc.driver=com.mysql.jdbc.Driver
-jdbc.url=jdbc:mysql://192.168.2.100:3306/caimei?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
-jdbc.username=developer
-jdbc.password=05bZ/OxTB:X+yd%1
-
-#mssql database settings
-#jdbc.type=mssql
-#jdbc.driver=net.sourceforge.jtds.jdbc.Driver
-#jdbc.url=jdbc:jtds:sqlserver://localhost:1433/jeesite
-#jdbc.username=sa
-#jdbc.password=sa
-
-#pool settings
-jdbc.pool.init=1
-jdbc.pool.minIdle=3
-jdbc.pool.maxActive=20
-
-#jdbc.testSql=SELECT 'x'
-jdbc.testSql=SELECT 'x' FROM DUAL
-
-#redis settings
-redis.keyPrefix=caimei
-redis.host=192.168.2.100
-redis.port=6379
-redis.pass=123456
-redis.timeout=100000
-#\u6700\u5927\u8FDE\u63A5\u6570
-redis.pool.maxActive=300
-#\u6700\u5927\u7A7A\u95F2\u6570
-redis.pool.maxIdle=100
-redis.pool.minIdle=10
-#\u6700\u5927\u5EFA\u7ACB\u8FDE\u63A5\u7B49\u5F85\u65F6\u95F4
-redis.pool.maxWait=1000
-redis.pool.maxTotal=6000
-
-#============================#
-#===== System settings ======#
-#============================#
-
-#\u4EA7\u54C1\u4FE1\u606F\u8BBE\u7F6E
-productName=\u91C7\u7F8E\u5FAE\u4FE1\u540E\u53F0
-copyrightYear=2014-2021
-version=V6.3.2
-
-#\u6F14\u793A\u6A21\u5F0F: \u4E0D\u80FD\u64CD\u4F5C\u548C\u4FDD\u5B58\u7684\u6A21\u5757\uFF1A sys: area/office/user/role/menu/dict, cms: site/category
-demoMode=false
-
-#\u7BA1\u7406\u57FA\u7840\u8DEF\u5F84, \u9700\u540C\u6B65\u4FEE\u6539\uFF1Aweb.xml
-adminPath=/a
-
-#\u524D\u7AEF\u57FA\u7840\u8DEF\u5F84
-frontPath=/f
-
-#\u7F51\u7AD9URL\u540E\u7F00
-urlSuffix=.html
-
-#\u662F\u5426\u4E0D\u5141\u8BB8\u5237\u65B0\u4E3B\u9875\uFF0C\u4E0D\u5141\u8BB8\u60C5\u51B5\u4E0B\uFF0C\u5237\u65B0\u4E3B\u9875\u4F1A\u5BFC\u81F4\u91CD\u65B0\u767B\u5F55
-notAllowRefreshIndex=false
-
-#\u662F\u5426\u5141\u8BB8\u591A\u8D26\u53F7\u540C\u65F6\u767B\u5F55
-user.multiAccountLogin=true
-
-#\u5206\u9875\u914D\u7F6E
-page.pageSize=30
-
-#\u7855\u6B63\u7EC4\u4EF6\u662F\u5426\u4F7F\u7528\u7F13\u5B58
-supcan.useCache=false
-
-#\u901A\u77E5\u95F4\u9694\u65F6\u95F4\u8BBE\u7F6E, \u5355\u4F4D\uFF1A\u6BEB\u79D2, 30s=30000ms, 60s=60000ms
-oa.notify.remind.interval=60000
-
-#============================#
-#==== Framework settings ====#
-#============================#
-
-#\u4F1A\u8BDD\u8D85\u65F6\uFF0C \u5355\u4F4D\uFF1A\u6BEB\u79D2\uFF0C 20m=1200000ms, 30m=1800000ms, 60m=3600000ms
-session.sessionTimeout=21600000
-#\u4F1A\u8BDD\u6E05\u7406\u95F4\u9694\u65F6\u95F4\uFF0C \u5355\u4F4D\uFF1A\u6BEB\u79D2\uFF0C2m=120000ms\u3002
-session.sessionTimeoutClean=120000
-
-#\u7F13\u5B58\u8BBE\u7F6E
-ehcache.configFile=cache/ehcache-local.xml
-#ehcache.configFile=cache/ehcache-rmi.xml
-
-#\u7D22\u5F15\u9875\u8DEF\u5F84
-web.view.index=/a
-
-#\u89C6\u56FE\u6587\u4EF6\u5B58\u653E\u8DEF\u5F84
-web.view.prefix=/WEB-INF/views/
-web.view.suffix=.jsp
-
-#\u6700\u5927\u6587\u4EF6\u4E0A\u4F20\u9650\u5236\uFF0C\u5355\u4F4D\u5B57\u8282. 30M=10*1024*1024*3(B)=10485760 bytes\uFF0C\u9700\u540C\u6B65\u4FEE\u6539\uFF1Ackfinder.xml
-web.maxUploadSize=104857600
-
-#\u65E5\u5FD7\u62E6\u622A\u8BBE\u7F6E\uFF0C\u6392\u9664\u7684URI\uFF1B\u5305\u542B @RequestMapping\u6CE8\u89E3\u7684value\u3002\uFF08\u5DF2\u4F5C\u5E9F\uFF09
-#web.logInterceptExcludeUri=/, /login, /sys/menu/tree, /sys/menu/treeData, /oa/oaNotify/self/count
-#web.logInterceptIncludeRequestMapping=save, delete, import, updateSort
-
-#\u9759\u6001\u6587\u4EF6\u540E\u7F00
-web.staticFile=.css,.js,.png,.jpg,.gif,.jpeg,.bmp,.ico,.swf,.psd,.htc,.htm,.html,.crx,.xpi,.exe,.ipa,.apk
-
-#\u5355\u70B9\u767B\u5F55CAS\u8BBE\u7F6E
-cas.server.url=http://127.0.0.1:8180/cas
-cas.project.url=http://127.0.0.1:8080/jeesite
-
-#\u5DE5\u4F5C\u6D41\u8BBE\u7F6E
-activiti.isSynActivitiIndetity=false
-activiti.export.diagram.path=c:/activiti_diagram
-#activiti font (windows font: \u5B8B\u4F53  linux font: simsun)
-activiti.diagram.activityFontName=\u5B8B\u4F53
-activiti.diagram.labelFontName=\u5B8B\u4F53
-#activiti\u5916\u90E8\u8868\u5355\u6839\u5730\u5740\u914D\u7F6E
-activiti.form.server.url=
-
-#\u4E0A\u4F20\u6587\u4EF6\u7EDD\u5BF9\u8DEF\u5F84, \u8DEF\u5F84\u4E2D\u4E0D\u5141\u8BB8\u5305\u542B\u201Cuserfiles\u201D
-#userfiles.basedir=D:/jeesite
-
-#\u5DE5\u7A0B\u8DEF\u5F84\uFF0C\u5728\u4EE3\u7801\u751F\u6210\u65F6\u83B7\u53D6\u4E0D\u5230\u5DE5\u7A0B\u8DEF\u5F84\u65F6\uFF0C\u53EF\u518D\u6B64\u6307\u5B9A\u7EDD\u5BF9\u8DEF\u5F84\u3002
-#projectPath=D\:\\workspace\\jeesite
-
-#\u7528\u6237\u5546\u54C1\u4EF7\u683C\u8FC7\u5C0F\u90AE\u4EF6\u63D0\u793A
-user.mails=jun.li@caimei365.com
-
-#\u6613\u5B9D\u652F\u4ED8
-yeepay.appkey=BM12345678902069
-yeepay.secretKey=OH6huQqihk0ZfGzWgR1WcQ==
-yeepay.secretRoot=https://openapi.yeepay.com/yop-center
-yeepay.divideCallback=http://localhost:8181/a/order/newShouldPay/divideCallback
-yeepay.mails=jun.li@caimei365.com
-
-#�˷���ƷĬ��ID
-freightProductID=999
-
-#商品资料库文件临时路径
-archive.tempPath=/mnt/newdatadrive/data/runtime/tomcat-instance/manager/tempFile/
-#ffmpeg路径
-ffmpeg.path=D:\\workSoftWare\\ffmpeg\\bin\\ffmpeg.exe

+ 0 - 62
src/main/resources/config/alpha/dfs_client.conf

@@ -1,62 +0,0 @@
-# connect timeout in seconds
-# default value is 30s
-connect_timeout=30
-
-# network timeout in seconds
-# default value is 30s
-network_timeout=60
-
-# the base path to store log files
-base_path=/home/yuqing/fastdfs
-
-# tracker_server can ocur more than once, and tracker_server format is
-#  "host:port", host can be hostname or ip address
-tracker_server=10.205.56.79:22122
-
-#standard log level as syslog, case insensitive, value list:
-### emerg for emergency
-### alert
-### crit for critical
-### error
-### warn for warning
-### notice
-### info
-### debug
-log_level=info
-
-# if use connection pool
-# default value is false
-# since V4.05
-use_connection_pool = false
-
-# connections whose the idle time exceeds this time will be closed
-# unit: second
-# default value is 3600
-# since V4.05
-connection_pool_max_idle_time = 3600
-
-# if load FastDFS parameters from tracker server
-# since V4.05
-# default value is false
-load_fdfs_parameters_from_tracker=false
-
-# if use storage ID instead of IP address
-# same as tracker.conf
-# valid only when load_fdfs_parameters_from_tracker is false
-# default value is false
-# since V4.05
-use_storage_id = false
-
-# specify storage ids filename, can use relative or absolute path
-# same as tracker.conf
-# valid only when load_fdfs_parameters_from_tracker is false
-# since V4.05
-storage_ids_filename = storage_ids.conf
-
-
-#HTTP settings
-http.tracker_server_port=80
-
-#use "#include" directive to include HTTP other settiongs
-##include http.conf
-

+ 0 - 7
src/main/resources/config/alpha/dfs_pool.properties

@@ -1,7 +0,0 @@
-### 连接池配置 ##############################################
-# 最大链接数
-pool.maxTotal=8
-# 最大空闲连接数
-pool.maxIdle=4
-# 最大等待时间(毫秒)
-pool.maxWaitMillis=5000

+ 0 - 33
src/main/resources/config/alpha/log4j.properties

@@ -1,33 +0,0 @@
-# Output pattern : date [thread] priority category - message   FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7
-log4j.rootLogger=WARN, Console, DailyRolling
-
-#Console
-log4j.appender.Console=org.apache.log4j.ConsoleAppender
-log4j.appender.Console.Target=System.out
-log4j.appender.Console.layout=org.apache.log4j.PatternLayout
-log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{3} >> %m%n
-
-#DailyRolling
-log4j.appender.DailyRolling=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.DailyRolling.File=${catalina.base}/logs/manager.log
-log4j.appender.DailyRolling.DatePattern='.'yyyy-MM-dd
-log4j.appender.DailyRolling.layout=org.apache.log4j.PatternLayout
-log4j.appender.DailyRolling.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] %c{3} >> %m%n
-
-#log4j.logger.java.sql=DEBUG
-
-#Springframework level
-#log4j.logger.org.springframework=ERROR
-
-#Hibernate level
-#log4j.logger.net.sf.ehcache.config.CacheConfiguration=ERROR
-
-#Project defalult level
-#log4j.logger.org.activiti.engine.impl.persistence=DEBUG
-#log4j.logger.org.apache.shiro=DEBUG
-log4j.logger.com.thinkgem.jeesite=DEBUG
-log4j.logger.com.caimei=DEBUG
-log4j.logger.com.thinkgem.jeesite.common.security.shiro=WARN
-log4j.logger.com.thinkgem.jeesite.common.utils.JedisUtils=WARN
-log4j.logger.com.thinkgem.jeesite.modules.sys.web.LoginController=WARN
-log4j.logger.com.thinkgem.jeesite.modules.oa.dao.OaNotifyDao.findCount=WARN

BIN
src/main/resources/export/refundShopList.xls


+ 2 - 2
src/main/resources/mappings/modules/hehe/CmHeheCouponMapper.xml

@@ -138,9 +138,9 @@
 	<select id="allUserList" resultType="com.caimei.modules.hehe.entity.CmHeheReceiveUser">
 		select u.userId as userId,u.nickName,u.mobile,u.userIdentity,count(rc.id) as receiveNum, count(chc.id) as ableNum
 		from cm_hehe_user u
-		    left join cm_hehe_receive_coupon rc on u.userId = rc.userId and rc.delFlag = 0
+		    left join cm_hehe_receive_coupon rc on u.userId = rc.userId and rc.delFlag = 0 and rc.couponId in (select id from cm_hehe_coupon where delFlag = 0)
 			left join cm_hehe_coupon chc on rc.couponId = chc.id
-			and NOW() <![CDATA[ < ]]> DATE_ADD(rc.receiveTime ,interval chc.usePeriod DAY)
+			and NOW() <![CDATA[ < ]]> DATE_ADD(rc.receiveTime ,interval chc.usePeriod DAY) and rc.status = 1
 			and chc.delFlag = 0
 		<where>
 			<if test="nickName != null and nickName != ''">

+ 9 - 3
src/main/resources/mappings/modules/order/CmDiscernReceiptMapper.xml

@@ -60,16 +60,22 @@
     </select>
 
     <select id="findList" resultType="CmDiscernReceipt">
+        -- 	relationType值为1是为子订单ID,为2时为主订单ID)
         SELECT
-        <include refid="cmDiscernReceiptColumns"/>
-        ,IF(a.receiptType='3',u_cr.userName,u.userName) AS "userName",IF(a.receiptType='3',u_cr.name,u.name) AS "name",
+        <include refid="cmDiscernReceiptColumns"/>,
+        (case when crr.relationType = '1' then u_cr.userName else u.userName
+        end) AS "userName",
+        (case when crr.relationType = '1' then u_cr.name else u.name
+        end) AS "name",
         cr.organizeID AS organizeID
         FROM cm_discern_receipt a
         left join cm_receipt_order_relation crr on crr.receiptID = a.id and crr.delFlag = '0'
+        -- 主订单
         left join cm_order cr on cr.orderID = crr.orderID
+        left join user u on u.userID = cr.userID
+        -- 子订单
         left join cm_shop_order cso on cso.shopOrderID = crr.orderID
         left join cm_order cso_cr on cso.orderID = cso_cr.orderID
-        left join user u on u.userID = cr.userID
         LEFT JOIN USER u_cr ON u_cr.userID = cso_cr.userID
         <where>
             <if test="id != null and id != '' and id != 0 ">

+ 18 - 14
src/main/resources/mappings/modules/order/CmRefundShopMapper.xml

@@ -1,7 +1,7 @@
 <?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.caimei.modules.order.dao.CmRefundShopDao">
-    
+
 	<sql id="cmRefundShopColumns">
 		a.id AS "id",
 		a.shopID AS "shopID",
@@ -14,31 +14,35 @@
 		a.refundBalanceAmount AS "refundBalanceAmount",
 		a.delFlag AS "delFlag"
 	</sql>
-	
+
 	<sql id="cmRefundShopJoins">
 	</sql>
-    
+
 	<select id="get" resultType="CmRefundShop">
-		SELECT 
+		SELECT
 			<include refid="cmRefundShopColumns"/>,
-			s.name AS shopName
+			s.name AS shopName,
+		    up.name AS crmOperatorName
 		FROM cm_refund_shop a
 		<include refid="cmRefundShopJoins"/>
 		left join shop s on s.shopID = a.shopID
+		left join receipt_user_permission up on up.id = a.operator
 		WHERE a.id = #{id}
 		AND a.delFlag='0'
 	</select>
-	
+
 	<select id="findList" resultType="CmRefundShop">
 		SELECT DISTINCT
 			<include refid="cmRefundShopColumns"/>,
 			crsr.refundType AS recordRefundType,
 			u.name AS operatorName,
+			up.name AS crmOperatorName,
 			s.name AS shopName
 		FROM cm_refund_shop a
 		LEFT JOIN cm_refund_shop_record crsr ON crsr.refundShopID = a.id
 		left join shop s on s.shopID = a.shopID
 		left join sys_user u on u.id = a.operator
+		left join receipt_user_permission up on up.id = a.operator
 		<where>
 			<if test="organizeID != null and organizeID != 9999 and organizeID != 0 ">
 				AND a.id IN (
@@ -102,15 +106,15 @@
 			</otherwise>
 		</choose>
 	</select>
-	
+
 	<select id="findAllList" resultType="CmRefundShop">
-		SELECT 
+		SELECT
 			<include refid="cmRefundShopColumns"/>
 		FROM cm_refund_shop a
 		<include refid="cmRefundShopJoins"/>
 		<where>
 			AND a.delFlag='0'
-		</where>		
+		</where>
 		<choose>
 			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
 				ORDER BY ${page.orderBy}
@@ -119,7 +123,7 @@
 			</otherwise>
 		</choose>
 	</select>
-	
+
 	<insert id="insert" parameterType="CmRefundShop"  keyProperty="id" useGeneratedKeys="true">
 		INSERT INTO cm_refund_shop(
 			id,
@@ -145,9 +149,9 @@
 			#{delFlag}
 		)
 	</insert>
-	
+
 	<update id="update">
-		UPDATE cm_refund_shop SET 	
+		UPDATE cm_refund_shop SET
 			shopID = #{shopID},
 			operator = #{operator},
 			operatTime = #{operatTime},
@@ -159,7 +163,7 @@
 			delFlag = #{delFlag}
 		WHERE id = #{id}
 	</update>
-	
+
 	<delete id="delete">
 		DELETE FROM cm_refund_shop
 		WHERE id = #{id}
@@ -192,4 +196,4 @@
 		group by cfs.id
 		ORDER BY cfs.operatTime desc;
 	</select>
-</mapper>
+</mapper>

+ 15 - 1
src/main/resources/mappings/modules/product/ProductMapper.xml

@@ -1380,6 +1380,12 @@
   <update id="updateByPrimaryKeySelective" parameterType="com.caimei.modules.product.entity.Product">
     update product
     <set>
+	   <if test="productDescribe != null and productDescribe != ''">
+	   productDescribe = #{productDescribe},
+	   </if>
+	  <if test="productDetail != null and productDetail != ''">
+		  productDetail = #{productDetail},
+      </if>
       <if test="brandID != null and brandID != ''">
         brandID = #{brandID},
       </if>
@@ -1616,6 +1622,9 @@
       <if test="detailInfo != null">
         detailInfo = #{detailInfo},
       </if>
+	  <if test="commonDetailInfo != null">
+		  commonDetailInfo = #{commonDetailInfo},
+	  </if>
       <if test="detailInfoTxt != null">
         detailInfoTxt = #{detailInfoTxt},
       </if>
@@ -1829,5 +1838,10 @@
 			</otherwise>
 		</choose>
 	</select>
-
+	<select id="findProductDetail" resultType="java.lang.String">
+		select productDetail from product where productID = #{productID}
+	</select>
+    <select id="findProductDescribe" resultType="java.lang.String">
+		select productDescribe from product where productID = #{productID}
+	</select>
 </mapper>

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

@@ -245,7 +245,6 @@
 			#{defaultServiceProviderID},
 			#{defaultServiceProviderUpdTime},
 			#{mainpro},
-			#{remark},
 			#{scanFlag},
 			#{headpic},
 			#{lastModify},
@@ -395,7 +394,7 @@
 		select serviceProviderID from serviceprovider where serviceProviderID = #{spID} and status = 90
 	</select>
     <select id="findRemarksList" resultType="com.caimei.modules.user.entity.CmClubRemarks">
-		select id as remarksId, remarks,s.linkMan as spName, ccr.addTime
+		select id as remarksId, remarks,s.linkMan as spName, ccr.addTime,ccr.questionMan
 		from cm_club_remarks ccr
 		left join serviceprovider s on ccr.serviceProviderId = s.serviceProviderID
 		where clubId = #{clubId}

+ 64 - 0
src/main/resources/mappings/modules/user/VisitRemarkMapper.xml

@@ -0,0 +1,64 @@
+<?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.caimei.modules.user.dao.VisitRemarkDao">
+
+    <select id="get" resultType="com.caimei.modules.user.entity.VisitRemarkVo">
+        SELECT id as remarksId,
+               questionManId,
+               serviceProviderId,
+               remarks,
+               addTime,
+               questionMan,
+               clubId,
+               concactTime
+        FROM cm_visitor_remarks a
+        WHERE a.id = #{id}
+    </select>
+    <select id="getServer" resultType="com.caimei.modules.user.entity.Server">
+        SELECT DISTINCT cvr.serviceProviderId, s.linkMan as name
+        FROM cm_visitor_remarks cvr
+        LEFT JOIN serviceprovider s ON s.serviceProviderID = cvr.serviceProviderId
+    </select>
+    <select id="findList" resultType="com.caimei.modules.user.entity.VisitRemarkVo">
+        SELECT cvr.id as remarksId,cvr.questionManId,cvr.serviceProviderId,cvr.remarks,cvr.addTime,cvr.questionMan,cvr.clubId,cvr.concactTime,c.name as clubName,s.linkMan as serviceName
+        FROM cm_visitor_remarks cvr
+        LEFT JOIN serviceprovider s  ON s.serviceProviderID = cvr.serviceProviderId
+        LEFT JOIN club c ON c.clubId= cvr.clubId
+        <where>
+            <if test="serviceProviderId != null and serviceProviderId != ''">
+                AND cvr.serviceProviderId = #{serviceProviderId}
+            </if>
+            <if test="concat == 1">
+                and cvr.clubId is not null
+            </if>
+            <if test="concat == 2">
+                and cvr.clubId is null
+            </if>
+            <if test="questionMan != null and questionMan != ''">
+                and cvr.questionMan LIKE concat('%',#{questionMan},'%')
+            </if>
+        </where>
+        GROUP BY cvr.questionManId
+        ORDER BY cvr.addTime DESC
+    </select>
+    <select id="findRemarksList" resultType="com.caimei.modules.user.entity.VisitRemarkVo">
+        select id as remarksId, remarks,s.linkMan as serviceName, cvr.addTime,cvr.questionMan
+        from cm_visitor_remarks cvr
+        left join serviceprovider s on cvr.serviceProviderId = s.serviceProviderID
+        where questionManId = #{questionManId}
+        and remarks is not null
+        order by addTime desc
+    </select>
+    <select id="getRemarksImageList" resultType="java.lang.String">
+        select imageUrl
+        from cm_visitor_remarks_file
+        where remarksId = #{remarksId}
+          and fileType = 1
+    </select>
+    <select id="getRemarksFileList" resultType="com.caimei.modules.user.entity.RemarksFileVo">
+        select fileName, ossName
+        from cm_visitor_remarks_file
+        where remarksId = #{remarksId}
+          and fileType = 2
+    </select>
+</mapper>

+ 3 - 3
src/main/webapp/WEB-INF/views/modules/order/cmDiscernReceiptList.jsp

@@ -220,12 +220,12 @@
                     <span class="org-note">星范</span>
                 </c:if>
                     ${cmDiscernReceipt.name}
+                <c:if test="${cmDiscernReceipt.name eq null or cmDiscernReceipt.name  == ''}">
+                    ${cmDiscernReceipt.userName}
+                </c:if>
                 <c:if test="${cmDiscernReceipt.receiptOrderType eq 2}">
                     <font color="red">(呵呵商城)</font>
                 </c:if>
-                <c:if test="${cmDiscernReceipt.organizeID == 3}">
-
-                </c:if>
             </td>
             <td>
                 <c:if test="${cmDiscernReceipt.receiptType != 6}">${cmDiscernReceipt.orderType}</c:if>

+ 9 - 3
src/main/webapp/WEB-INF/views/modules/order/cmRefundShopDetail.jsp

@@ -247,7 +247,7 @@
 					<label>接收退款方式:</label>
 					<div>
 						<div class="refund-wrapper">
-							<c:if test="${cmRefundShop.refundWay == '1'||cmRefundShop.refundWay == '3'}">
+							<c:if test="${cmRefundShop.refundWay == '1'||cmRefundShop.refundWay == '3'||cmRefundShop.refundWay == '4'}">
 								线下转账:
 								<c:if test="${cmRefundShop.refundType == '1'}">
 									建设银行7297
@@ -268,6 +268,9 @@
 									虚拟银行0000
 								</c:if>
 								,¥${cmRefundShop.refundAmount}
+								<c:if test="${cmRefundShop.refundWay eq 4}">
+									,${cmRefundShop.crmOperatorName}确认(CRM收款:${cmRefundShop.operatTime})
+								</c:if>
 							</c:if>
 						</div>
 						<div class="refund-wrapper">
@@ -290,13 +293,13 @@
 		<div style="font-weight: bold;width: 100%;float: left;"><span style="float: left;">${cmRefundShop.shopDifference.systemName}</span><span style="float: left;margin-left:10px;"><fmt:formatDate value="${cmRefundShop.shopDifference.updateTime}" pattern="yyyy-MM-dd HH:mm"/></span></div>
 		<br><br>
 		<div>
-			<ul><b>差价类型:</b>${cmRefundShop.shopDifference.type eq 1 ? "少付":"多付"}</ul>
+			<ul><b>差价类型:</b>${cmRefundShop.shopDifference.type eq 1 ? "成本上升":"成本降低"}</ul>
 			<ul><b>差价金额:</b>${cmRefundShop.shopDifference.differencePrice}</ul>
 			<c:if test="${not empty cmRefundShop}">
 				<ul><b>接收退款方式:</b></ul>
 				<div style="margin-left: 100px">
 					<div class="refund-wrapper">
-						<c:if test="${cmRefundShop.refundWay == '1'||cmRefundShop.refundWay == '3'}">
+						<c:if test="${cmRefundShop.refundWay == '1'||cmRefundShop.refundWay == '3'||cmRefundShop.refundWay == '4'}">
 							线下转账:
 							<c:if test="${cmRefundShop.refundType == '1'}">
 								建设银行7297
@@ -317,6 +320,9 @@
 								虚拟银行0000
 							</c:if>
 							,¥${cmRefundShop.refundAmount}
+							<c:if test="${cmRefundShop.refundWay eq 4}">
+								,${cmRefundShop.crmOperatorName}确认(CRM收款:${cmRefundShop.operatTime})
+							</c:if>
 						</c:if>
 					</div>
 					<div class="refund-wrapper">

+ 16 - 3
src/main/webapp/WEB-INF/views/modules/order/cmRefundShopList.jsp

@@ -40,6 +40,12 @@
 			$("#searchForm").submit();
         	return false;
         }
+		$(function () {
+			$('#export').click(function () {
+				var formData = $('#searchForm').serialize();
+				window.location.href = "${ctx}/order/cmRefundShop/export?" + formData;
+			});
+		})
 	</script>
 </head>
 <body>
@@ -82,7 +88,8 @@
 					<form:options items="${cmUserOrganizeList}" itemLabel="organizeName" itemValue="id"
 								  htmlEscape="false"/>
 				</form:select>
-				<input id="btnSubmit"  class="btn btn-primary"  type="submit" value="查询"  style="width:120px;margin-left:730px;"/>
+				<input id="btnSubmit"  class="btn btn-primary"  type="submit" value=" 查询 " style="padding-left:50px;padding-right:50px;margin:0 20px;"/>
+				<input id="export" class="btn btn-primary" value="导出筛选结果"/>
 				<div class="clearfix"></div>
 			</div>
 		</div>
@@ -114,11 +121,17 @@
 				</td>
 				<td>${cmRefundShop.shopOrderIDs}</td>
 				<td>${cmRefundShop.orderNo}</td>
-				<td>${cmRefundShop.operatorName}</td>
+				<td><c:if test="${cmRefundShop.refundWay ne 4}">
+						${cmRefundShop.operatorName}
+					</c:if>
+					<c:if test="${cmRefundShop.refundWay eq 4}">
+						${cmRefundShop.crmOperatorName}(CRM)
+					</c:if>
+				</td>
 				<td>${cmRefundShop.operatTime}</td>
 				<shiro:hasPermission name="order:cmRefundShop:view"><td>
     				<a href="${ctx}/order/cmRefundShop/toRefund?id=${cmRefundShop.id}">查看详情</a>&nbsp&nbsp
-					<c:if test="${cmRefundShop.recordRefundType ne 5}">
+					<c:if test="${cmRefundShop.recordRefundType ne 5 and cmRefundShop.refundWay ne 4}">
 						<a href="${ctx}/order/cmRefundShop/revocation?id=${cmRefundShop.id}" onclick="return confirmx('确定撤销此次退款吗?', this.href)">撤销退款</a>
 					</c:if>
 				</td></shiro:hasPermission>

+ 2 - 2
src/main/webapp/WEB-INF/views/modules/order/differencePriceForm.jsp

@@ -263,8 +263,8 @@
     <br>
     <div class="control-group">
         <label class="control-label">差价类型:</label>&nbsp;&nbsp;&nbsp;
-            <input type="radio" name="type" value="1" ${(payShopDifference.differencePrice > 0 && payShopDifference.type eq 2) ? 'disabled="disabled"':'checked="true"'} onclick="showInfo()">少付&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-            <input type="radio" name="type" value="2" ${(payShopDifference.differencePrice > 0 && payShopDifference.type eq 1) ? 'disabled="disabled"':'checked="true"'} onclick="showInfo()">多付&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+            <input type="radio" name="type" value="1" ${(payShopDifference.differencePrice > 0 && payShopDifference.type eq 2) ? 'disabled="disabled"':'checked="true"'} onclick="showInfo()">成本上升&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+            <input type="radio" name="type" value="2" ${(payShopDifference.differencePrice > 0 && payShopDifference.type eq 1) ? 'disabled="disabled"':'checked="true"'} onclick="showInfo()">成本降低&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
             <img src="/static/images/info.jpg" style="height: 20px;width: 20px" onclick="alertx('“少付”指成本变高了,按旧成本付款的话相当于会少付供应商,\n'+
 '在已不能修改成本的情况下,通过补差价的方式来弥补;\n'+
 '\n'+

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/order/differencePriceRemark.jsp

@@ -111,7 +111,7 @@
             <div style="font-weight: bold;width: 100%;float: left;"><span style="float: left;">${difference.systemName}</span><span style="float: left;margin-left:10px;"><fmt:formatDate value="${difference.updateTime}" pattern="yyyy-MM-dd HH:mm"/></span></div>
             <br><br>
             <div>
-                <ul>差价类型:${difference.type eq 1 ? "少付":"多付"}</ul>
+                <ul>差价类型:${difference.type eq 1 ? "成本上升":"成本降低"}</ul>
                 <ul>差价金额:${difference.differencePrice}</ul>
                 <c:if test="${not empty difference.payShopId}">
                     <ul>付款单名称:${difference.name}</ul>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 435 - 183
src/main/webapp/WEB-INF/views/modules/product-new/productEdit.jsp


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

@@ -258,7 +258,7 @@
                     </shiro:hasPermission>
                 </c:if>
                 <shiro:hasPermission name="club:cmAgency:remarks">
-                    <a href="${ctx}/new/user/agency/remarks?clubId=${newCmClubList.clubID}">资料备注</a>
+                    <a href="${ctx}/new/user/agency/remarks?clubId=${newCmClubList.clubID}">客户画像</a>
                 </shiro:hasPermission>
             </td>
         </tr>

+ 20 - 5
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyRemarksList.jsp

@@ -2,7 +2,7 @@
 <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
 <html>
 <head>
-	<title>机构资料备注</title>
+	<title>客户画像</title>
 	<meta name="decorator" content="default"/>
 	<script type="text/javascript">
 		$(document).ready(function() {
@@ -24,7 +24,16 @@
 			});
 		});
 
-
+		function previewFile(url) {
+			var index = url.lastIndexOf(".");
+			var suffix = url.substring(index);
+			if (suffix.startsWith(".png") || suffix.startsWith(".jpg") || suffix.startsWith(".pdf")) {
+				window.open(url, '_blank');
+			} else {
+				var previewUrl = "https://view.officeapps.live.com/op/view.aspx?src="+encodeURIComponent(url);
+				window.open(previewUrl, '_blank');
+			}
+		}
 		function page(n,s){
 			$("#pageNo").val(n);
 			$("#pageSize").val(s);
@@ -36,7 +45,7 @@
 <body>
 	<ul class="nav nav-tabs">
 		<li><a href="${ctx}/new/user/agency/">机构列表</a></li>
-		<li class="active"><a href="${ctx}/new/user/agency/remarks?clubId=${cmClubRemarks.clubId}">资料备注</a></li>
+		<li class="active"><a href="${ctx}/new/user/agency/remarks?clubId=${cmClubRemarks.clubId}">客户画像</a></li>
 	</ul><br/>
 <form:form id="searchForm" modelAttribute="cmClubRemarks" action="${ctx}/new/user/agency/remarks" method="post" class="breadcrumb form-search">
 	<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
@@ -52,7 +61,11 @@
 				<div style="font-weight: bold;width: 100%;float: left;"><span style="float: left;">${clubRemarks.spName}</span>
 					<span style="float: left;margin-left:10px;"><fmt:formatDate value="${clubRemarks.addTime}" pattern="yyyy-MM-dd HH:mm"/></span></div>
 				<div class="td-text" style="width: 100%;float: left;margin-top: 20px;">
-					<div style="width: 100px;font-weight: bold;margin: 10px 0;float: left;text-align: right;margin-right: 10px;">文字备注:</div>
+					<div style="width: 100px;font-weight: bold;margin: 10px 0;float: left;text-align: right;margin-right: 10px;">咨询人:</div>
+					<div style="width: 800px;float: left;margin: 10px 0;">${clubRemarks.questionMan}</div>
+				</div>
+				<div class="td-text" style="width: 100%;float: left;margin-top: 20px;">
+					<div style="width: 100px;font-weight: bold;margin: 10px 0;float: left;text-align: right;margin-right: 10px;">关键词记录:</div>
 					<div style="width: 800px;float: left;margin: 10px 0;">
 						${clubRemarks.remarks}
 					</div>
@@ -74,7 +87,9 @@
 						<div style="width: 100px;font-weight: bold;margin: 10px 0;float: left;text-align: right;margin-right: 10px;">文件:</div>
 						<div style="width: 1000px;float: left;margin: 10px 0;">
 							<c:forEach items="${clubRemarks.fileList}" var="item" varStatus="remarkFile">
-								<p>${item.fileName}&nbsp;&nbsp;&nbsp;&nbsp;<a href="${ctx}/new/user/agency/remarks/download?fileName=${item.fileName}&ossName=${item.ossName}">下载</a></p>
+								<p>${item.fileName}&nbsp;&nbsp;&nbsp;&nbsp;
+									<a onclick="previewFile('${item.fileUrl}')" target="_blank">预览</a>&nbsp;&nbsp;&nbsp;&nbsp;
+									<a href="${ctx}/new/user/agency/remarks/download?fileName=${item.fileName}&ossName=${item.ossName}">下载</a></p>
 							</c:forEach>
 						</div>
 					</c:if>

+ 335 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmVisitList.jsp

@@ -0,0 +1,335 @@
+<%@ 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 type="text/css">
+        .reg-row .new-tag.active {
+            border: 1px solid #de5801
+        }
+
+        .reg-row {
+            margin-bottom: 20px
+        }
+
+        .reg-row .reg-label {
+            display: inline-block;
+            width: 120px;
+            text-align: right;
+            font-size: 13px
+        }
+
+        .the-oradio {
+            display: inline-block;
+            vertical-align: top
+        }
+
+        .the-oradio div {
+            width: 85px;
+            display: inline-block;
+            font-size: 12px;
+            color: #666
+        }
+
+        .the-oradio div input[type="radio"] {
+            width: 17px;
+            height: 17px;
+            margin-right: 5px;
+            vertical-align: text-top
+        }
+
+        .med-option {
+            display: block;
+            margin: 10px 0 0 125px
+        }
+
+        .reg-row .business-license {
+            position: relative;
+            display: inline-block;
+            width: 166px;
+            height: 123px;
+            border-radius: 6px;
+            margin: 18px 0 0 125px
+        }
+
+        #medicalPracticeLicenseImgPreview {
+            display: inline-block
+        }
+
+        .qualification {
+            margin-top: 20px
+        }
+
+        .reg-row .tags-area {
+            display: inline-block;
+            width: 420px
+        }
+
+        .reg-row .new-tag {
+            display: inline-block;
+            width: 70px;
+            border: 1px solid #e5e5e5;
+            border-radius: 6px;
+            padding: 5px;
+            margin-right: 14px;
+            margin-bottom: 14px;
+            text-align: center;
+            font-size: 10px;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            cursor: pointer
+        }
+
+        .reg-row .tags-operate {
+            margin-left: 125px
+        }
+
+        .reg-row .reg-input {
+            width: 336px;
+            height: 32px;
+            padding: 0 8px;
+            margin-right: 20px;
+            border: 1px solid #dcdcdc;
+            border-radius: 6px
+        }
+
+        .reg-row .tags-operate .tag-input {
+            width: 159px;
+            margin-right: 13px;
+            display: none;
+            vertical-align: top
+        }
+
+        .reg-row .tags-operate .tag-add {
+            line-height: 20px;
+            vertical-align: middle;
+            margin-bottom: 0;
+            vertical-align: top
+        }
+
+        .reg-row .tags-area {
+            vertical-align: top
+        }
+
+        .tag-add {
+            display: none
+        }
+
+        .table th {
+            text-align: center
+        }
+
+        .table td {
+            text-align: center
+        }
+
+        .modal {
+            width: 700px;
+            margin-left: -350px
+        }
+
+        #myModal {
+            display: none
+        }
+
+        .modal-body {
+            max-height: 300px !important
+        }
+
+        .modal.fade.in {
+            top: 0 !important
+        }
+
+        #btnSubmit {
+            margin-left: 20px
+        }
+
+        .flex-wrap .item {
+            margin-right: 20px
+        }
+
+        #auditBox {
+            padding: 20px;
+            line-height: 30px
+        }
+
+        #auditBox .bd-row {
+            display: flex;
+            margin-bottom: 15px
+        }
+
+        #auditBox .bd-row > span {
+            display: inline-block;
+            width: 60px
+        }
+
+        #auditBox .auditCheckBox {
+            width: 250px
+        }
+
+        #auditBox .auditCheckBox label {
+            margin: 0 5px 5px 0
+        }
+
+        #auditBox .auditCheckBox input {
+            display: none
+        }
+
+        #auditBox .auditCheckBox input + span {
+            display: inline-block;
+            line-height: 24px;
+            padding: 0 12px;
+            border: 1px solid #666;
+            border-radius: 5px
+        }
+
+        #auditBox .auditCheckBox input:checked + span {
+            background-color: #E6633A
+        }
+
+        #alertModal {
+            width: 300px;
+            height: 200px;
+            border: 1px solid #ebebeb;
+            border-radius: 10px;
+            position: fixed;
+            top: 0;
+            bottom: 0;
+            left: 0;
+            right: 0;
+            margin: auto;
+            background: #FFFFFF;
+            display: none
+        }
+
+        #alertModal .title {
+            height: 50px;
+            line-height: 50px;
+            font-size: 14px;
+            font-weight: bold;
+            text-align: center;
+            position: relative;
+            border-bottom: 1px solid #EBEBEB
+        }
+
+        #alertModal .close {
+            width: 50px;
+            height: 50px;
+            display: block;
+            position: absolute;
+            right: 0;
+            top: 0;
+            line-height: 50px;
+            color: #000;
+            font-weight: bold;
+            text-align: center;
+            font-style: normal;
+            font-size: 18px
+        }
+
+        #alertModal .alert-content {
+            width: 260px;
+            height: 60px;
+            padding: 20px
+        }
+
+        #alertModal .alertModal-btn {
+            width: 260px;
+            height: 49px;
+            padding: 0 20px;
+            border-top: 1px solid #EBEBEB
+        }
+
+        #alertModal .alertModal-btn button {
+            float: right;
+            margin: 5px
+        }
+    </style>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li class="active"><a href="${ctx}/new/user/visit/">潜在用户画像信息</a></li>
+</ul>
+<form:form id="searchForm" modelAttribute="visitRemark" action="${ctx}/new/user/visit/remark" method="post"
+           class="breadcrumb form-search">
+    <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+    <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+    <div class="flex-wrap">
+        <div class="item">
+            <label>咨询人:</label>
+            <form:input path="questionMan" htmlEscape="false" maxlength="50" class="input-medium"/>
+        </div>
+        <div class="item">
+            <label> 所属协销:</label>
+            <form:select path="serviceProviderId" class="input-medium">
+                <form:option value="" label="请选择"/>
+                <c:forEach items="${visitRemark.serverList}" var="service">
+                    <form:option value="${service.serviceProviderId}">${service.name}</form:option>
+                </c:forEach>
+            </form:select>
+        </div>
+        <div class="item">
+            <label>同步至机构:</label>
+            <form:select path="concat" 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="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+        </div>
+    </div>
+</form:form>
+<sys:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    <tr>
+        <th>咨询人</th>
+        <th>所属协销</th>
+        <th>同步至机构</th>
+        <th>创建时间</th>
+        <th>同步时间</th>
+        <th>操作</th>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${page.list}" var="visit">
+        <tr>
+            <td>
+                    ${visit.questionMan}
+            </td>
+            <td>
+                    ${visit.serviceName}
+            </td>
+            <td>
+                <c:if test="${not empty visit.clubId}">
+                    已同步(${visit.clubName})
+                </c:if>
+                <c:if test="${empty visit.clubId}">
+                    未同步
+                </c:if>
+            </td>
+            <td>
+                <fmt:formatDate value="${visit.addTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
+            </td>
+            <td>
+                <fmt:formatDate value="${visit.concactTime}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>
+            </td>
+            <td>
+                <c:if test="${empty visit.clubId}">
+                    <a href="${ctx}/new/user/visit/find?questionManId=${visit.questionManId}">查看信息</a>
+                </c:if>
+                <c:if test="${not empty visit.clubId}">
+                    <a href="${ctx}/new/user/agency/remarks?clubId=${visit.clubId}">查看信息</a>
+                </c:if>
+            </td>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${page}</div>
+</body>
+</html>

+ 107 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmVisitRemarksList.jsp

@@ -0,0 +1,107 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>信息详情</title>
+	<meta name="decorator" content="default"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			//$("#name").focus();cmOrderRemarksFormNew.jsp
+			$("#inputForm").validate({
+				submitHandler: function(form){
+					loading('正在提交,请稍等...');
+					form.submit();
+				},
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+		});
+
+		function previewFile(url) {
+			var index = url.lastIndexOf(".");
+			var suffix = url.substring(index);
+			if (suffix.startsWith(".png") || suffix.startsWith(".jpg") || suffix.startsWith(".pdf")) {
+				window.open(url, '_blank');
+			} else {
+				var previewUrl = "https://view.officeapps.live.com/op/view.aspx?src="+encodeURIComponent(url);
+				window.open(previewUrl, '_blank');
+			}
+		}
+		function page(n,s){
+			$("#pageNo").val(n);
+			$("#pageSize").val(s);
+			$("#searchForm").submit();
+			return false;
+		}
+	</script>
+</head>
+<body>
+	<ul class="nav nav-tabs">
+		<li><a href="${ctx}/new/user/visit/">潜在用户画像信息</a></li>
+		<li class="active">   <a href="${ctx}/new/user/visit/find?questionManId=${visit.questionManId}">信息详情</a></li>
+	</ul><br/>
+<form:form id="questionManId" modelAttribute="visit" action="${ctx}/new/user/visit/find" method="post" class="breadcrumb form-search">
+	<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+	<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+	<form:hidden path="questionManId"/>
+</form:form>
+<form:form id="inputForm" modelAttribute="visit" action="${ctx}" method="post" class="form-horizontal">
+	<sys:message content="${message}"/>
+	<c:if test="${not empty page.list}">
+	<div style="overflow-x: hidden;word-break:break-all">
+		<c:forEach items="${page.list}" var="visitRemarks" varStatus="remark">
+			<div class="td clear" style="dashed #0066CC;">
+				<div style="font-weight: bold;width: 100%;float: left;"><span style="float: left;">${visitRemarks.serviceName}</span>
+					<span style="float: left;margin-left:10px;"><fmt:formatDate value="${visitRemarks.addTime}" pattern="yyyy-MM-dd HH:mm"/></span></div>
+				<div class="td-text" style="width: 100%;float: left;margin-top: 20px;">
+					<div style="width: 100px;font-weight: bold;margin: 10px 0;float: left;text-align: right;margin-right: 10px;">咨询人:</div>
+					<div style="width: 800px;float: left;margin: 10px 0;">${visitRemarks.questionMan}</div>
+				</div>
+				<div class="td-text" style="width: 100%;float: left;margin-top: 20px;">
+					<div style="width: 100px;font-weight: bold;margin: 10px 0;float: left;text-align: right;margin-right: 10px;">关键词记录:</div>
+					<div style="width: 800px;float: left;margin: 10px 0;">
+						${visitRemarks.remarks}
+					</div>
+				</div>
+				<div class="td-text" style="width: 100%;float: left;">
+					<c:if test="${not empty visitRemarks.imageList}">
+						<div style="width: 100px;font-weight: bold;margin: 10px 0;float: left;text-align: right;margin-right: 10px;">图片:</div>
+						<div style="width: 1000px;float: left;">
+							<c:forEach items="${visitRemarks.imageList}" var="imageUrl" varStatus="remarkImage">
+								<a href="${imageUrl}" target="_blank">
+									<img class="enlarge-pic" style="height: 150px;width: 150px;margin-top: 10px" src="${imageUrl}">&nbsp;
+								</a>
+							</c:forEach>
+						</div>
+					</c:if>
+				</div>
+				<div class="td-text" style="width: 100%;float: left;margin-top: 20px;border-bottom:1px dashed #999999;padding: 10px 0;">
+					<c:if test="${not empty visitRemarks.fileList}">
+						<div style="width: 100px;font-weight: bold;margin: 10px 0;float: left;text-align: right;margin-right: 10px;">文件:</div>
+						<div style="width: 1000px;float: left;margin: 10px 0;">
+							<c:forEach items="${visitRemarks.fileList}" var="item" varStatus="remarkFile">
+								<p>${item.fileName}&nbsp;&nbsp;&nbsp;&nbsp;
+									<a onclick="previewFile('${item.fileUrl}')" target="_blank">预览</a>&nbsp;&nbsp;&nbsp;&nbsp;
+									<a href="${ctx}/new/user/agency/remarks/download?fileName=${item.fileName}&ossName=${item.ossName}">下载</a></p>
+							</c:forEach>
+						</div>
+					</c:if>
+				</div>
+			</div>
+		</c:forEach>
+	</div>
+	<div class="pagination">${page}</div>
+	</c:if>
+	<c:if test="${empty page.list}">
+		<font size="3" style="text-align: center;display: block;line-height: 80px;" color="#0066CC">暂无任何备注..</font>
+	</c:if>
+</form:form>
+</body>
+</html>

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä