Browse Source

Merge branch 'product' into dev

XMTT 6 years ago
parent
commit
e771d45aeb

+ 4 - 4
src/main/java/com/ekexiu/portal/dao/DemandDao.java

@ -44,14 +44,14 @@ public abstract class DemandDao {
44 44
	@SetSentence("STATE='3'")
45 45
	@IncludeFixSet
46 46
	@From(Demand.class)
47
	public abstract int close(Connection con,String id,@Set String modifier)throws SQLException;
47
	public abstract int close(Connection con,String id)throws SQLException;
48 48
	
49 49
	@UpdateWith
50 50
	@Where("STATE IN ('0','1')")
51 51
	@SetSentence("STATE='3'")
52 52
	@IncludeFixSet
53 53
	@From(Demand.class)
54
	public abstract int closeByCreator(Connection con,String creator,@Set String modifier)throws SQLException;
54
	public abstract int closeByCreator(Connection con,String creator)throws SQLException;
55 55
	
56 56
	
57 57
	
@ -61,14 +61,14 @@ public abstract class DemandDao {
61 61
	@SetSentence("STATE='2'")
62 62
	@IncludeFixSet
63 63
	@From(Demand.class)
64
	public abstract int over(Connection con,String id,@Set String modifier)throws SQLException;
64
	public abstract int over(Connection con,String id)throws SQLException;
65 65
	
66 66
	@UpdateWith
67 67
	@Where("STATE IN ('0','1')")
68 68
	@SetSentence("STATE='1'")
69 69
	@IncludeFixSet
70 70
	@From(Demand.class)
71
	public abstract int defer(Connection con,String id,@Set String modifier,@Set String invalidDay)throws SQLException;
71
	public abstract int defer(Connection con,String id,@Set String invalidDay)throws SQLException;
72 72
	
73 73
	
74 74
	

+ 0 - 12
src/main/java/com/ekexiu/portal/po/Demand.java

@ -25,7 +25,6 @@ public class Demand implements CreateTimeSupported,ModifyTimeSupported {
25 25
	
26 26
	private String state;
27 27
	private String orgName;
28
	private String modifier;
29 28
	private String creator;
30 29
	private String createTime;
31 30
	private String modifyTime;
@ -159,17 +158,6 @@ public class Demand implements CreateTimeSupported,ModifyTimeSupported {
159 158
	public void setSource(String source) {
160 159
		this.source = source;
161 160
	}
162
	/**
163
	 * 最后修改人
164
	 * @return
165
	 */
166
	@Column(handlerClass=FixLenStringHandler.class,dbType="CHAR(32)",insertable=true,nullable=false,queryable=true,renewable=true)	
167
	public String getModifier() {
168
		return modifier;
169
	}
170
	public void setModifier(String modifier) {
171
		this.modifier = modifier;
172
	}
173 161
	/**
174 162
	 * 发布人ID
175 163
	 * @return

+ 16 - 0
src/main/java/com/ekexiu/portal/product/CountProduct.java

@ -0,0 +1,16 @@
1
package com.ekexiu.portal.product;
2
3
/**
4
 * Created by TT on 2018/7/9.
5
 */
6
public class CountProduct extends Product {
7
    private long num;
8
9
    public long getNum() {
10
        return num;
11
    }
12
13
    public void setNum(long num) {
14
        this.num = num;
15
    }
16
}

+ 197 - 0
src/main/java/com/ekexiu/portal/product/Product.java

@ -0,0 +1,197 @@
1
package com.ekexiu.portal.product;
2
3
import com.ekexiu.portal.basepo.CreateTimeSupported;
4
import com.ekexiu.portal.basepo.ModifyTimeSupported;
5
import org.jfw.apt.orm.annotation.entry.Column;
6
import org.jfw.apt.orm.annotation.entry.PrimaryKey;
7
import org.jfw.apt.orm.annotation.entry.Table;
8
import org.jfw.apt.orm.core.defaultImpl.LongHandler;
9
import org.jfw.apt.orm.core.defaultImpl.StringHandler;
10
import org.jfw.apt.orm.core.enums.DE;
11
12
/**
13
 * Created by TT on 2018/7/6.
14
 */
15
16
@PrimaryKey("id")
17
@Table
18
public class Product implements CreateTimeSupported, ModifyTimeSupported {
19
    private String id;
20
    private String name;
21
    /**
22
     * 关键字
23
     */
24
    private String keywords;
25
26
    /**
27
     *产品简介
28
     */
29
    private String cnt;
30
31
    /**
32
     *详细描述
33
     */
34
    private String descp;
35
36
    /**
37
     *合作备注
38
     */
39
    private String cooperation;
40
41
    /**
42
     *发布者
43
     */
44
    private String owner;
45
46
    /**
47
     *图片
48
     */
49
    private String images;
50
51
    /***
52
     *状态 0:删除,1:发布的 ,2:草稿
53
     */
54
    private String state;
55
56
    /**
57
     *创建时间
58
     */
59
    private String createTime;
60
61
    /**
62
     *最后修改时间
63
     */
64
    private String modifyTime;
65
66
    private long shareId;
67
    private long pageViews;
68
    private long sorgFirst;
69
70
    @Column(DE.id_32)
71
    public String getId() {
72
        return id;
73
    }
74
75
    public void setId(String id) {
76
        this.id = id;
77
    }
78
79
    @Column(DE.text_de)
80
    public String getName() {
81
        return name;
82
    }
83
84
    public void setName(String name) {
85
        this.name = name;
86
    }
87
88
    @Column(DE.Text_de)
89
    public String getKeywords() {
90
        return keywords;
91
    }
92
93
    public void setKeywords(String keywords) {
94
        this.keywords = keywords;
95
    }
96
97
    @Column(DE.Text_de)
98
    public String getCnt() {
99
        return cnt;
100
    }
101
102
    public void setCnt(String cnt) {
103
        this.cnt = cnt;
104
    }
105
106
    @Column(DE.Text_de)
107
    public String getDescp() {
108
        return descp;
109
    }
110
111
    public void setDescp(String descp) {
112
        this.descp = descp;
113
    }
114
115
    @Column(DE.Text_de)
116
    public String getCooperation() {
117
        return cooperation;
118
    }
119
120
    public void setCooperation(String cooperation) {
121
        this.cooperation = cooperation;
122
    }
123
124
    @Column(handlerClass = StringHandler.class, dbType = "TEXT", insertable = true, nullable = false, queryable = true, renewable = false)
125
    public String getOwner() {
126
        return owner;
127
    }
128
129
    public void setOwner(String owner) {
130
        this.owner = owner;
131
    }
132
133
    @Column(DE.Text_de)
134
    public String getImages() {
135
        return images;
136
    }
137
138
    public void setImages(String images) {
139
        this.images = images;
140
    }
141
142
    @Column(DE.singleChar)
143
    public String getState() {
144
        return state;
145
    }
146
147
    public void setState(String state) {
148
        this.state = state;
149
    }
150
151
    @Column(DE.bigSerial)
152
    public long getShareId() {
153
        return shareId;
154
    }
155
156
    public void setShareId(long shareId) {
157
        this.shareId = shareId;
158
    }
159
160
    @Column(handlerClass = LongHandler.class, dbType = "INT8", nullable = true, renewable = false, fixSqlValueWithInsert = "0")
161
    public long getPageViews() {
162
        return pageViews;
163
    }
164
165
    public void setPageViews(long pageViews) {
166
        this.pageViews = pageViews;
167
    }
168
169
    @Column(handlerClass = LongHandler.class, dbType = "INT8", fixSqlValueWithInsert = "0", insertable = true, renewable = false, queryable = true, nullable = false)
170
    public long getSorgFirst() {
171
        return sorgFirst;
172
    }
173
174
    public void setSorgFirst(long sorgFirst) {
175
        this.sorgFirst = sorgFirst;
176
    }
177
178
    @Override
179
    public String getModifyTime() {
180
        return null;
181
    }
182
183
    @Override
184
    public void setModifyTime(String modifyTime) {
185
186
    }
187
188
    @Override
189
    public String getCreateTime() {
190
        return null;
191
    }
192
193
    @Override
194
    public void setCreateTime(String createTime) {
195
196
    }
197
}

+ 116 - 0
src/main/java/com/ekexiu/portal/product/ProductDao.java

@ -0,0 +1,116 @@
1
package com.ekexiu.portal.product;
2
3
import org.jfw.apt.annotation.DefaultValue;
4
import org.jfw.apt.annotation.Nullable;
5
import org.jfw.apt.orm.annotation.dao.Column;
6
import org.jfw.apt.orm.annotation.dao.DAO;
7
import org.jfw.apt.orm.annotation.dao.method.From;
8
import org.jfw.apt.orm.annotation.dao.method.LimitColumn;
9
import org.jfw.apt.orm.annotation.dao.method.OrderBy;
10
import org.jfw.apt.orm.annotation.dao.method.Select;
11
import org.jfw.apt.orm.annotation.dao.method.SetSentence;
12
import org.jfw.apt.orm.annotation.dao.method.Where;
13
import org.jfw.apt.orm.annotation.dao.method.operator.DeleteWith;
14
import org.jfw.apt.orm.annotation.dao.method.operator.Insert;
15
import org.jfw.apt.orm.annotation.dao.method.operator.LimitSelect;
16
import org.jfw.apt.orm.annotation.dao.method.operator.PageSelect;
17
import org.jfw.apt.orm.annotation.dao.method.operator.QueryList;
18
import org.jfw.apt.orm.annotation.dao.method.operator.QueryVal;
19
import org.jfw.apt.orm.annotation.dao.method.operator.SelectList;
20
import org.jfw.apt.orm.annotation.dao.method.operator.SelectOne;
21
import org.jfw.apt.orm.annotation.dao.method.operator.Update;
22
import org.jfw.apt.orm.annotation.dao.method.operator.UpdateWith;
23
import org.jfw.apt.orm.annotation.dao.param.GroupSqlColumn;
24
import org.jfw.apt.orm.annotation.dao.param.In;
25
import org.jfw.apt.orm.annotation.dao.param.LessThan;
26
import org.jfw.apt.orm.annotation.dao.param.UnEquals;
27
import org.jfw.apt.orm.core.defaultImpl.LongHandler;
28
import org.jfw.apt.orm.core.defaultImpl.StringHandler;
29
import org.jfw.util.PageQueryResult;
30
31
import java.sql.Connection;
32
import java.sql.SQLException;
33
import java.util.List;
34
35
/**
36
 * Created by TT on 2018/7/6.
37
 */
38
@DAO
39
public interface ProductDao {
40
41
    @Insert
42
    int insert(Connection con, Product product) throws SQLException;
43
44
    @Insert
45
    int insert(Connection con, ProductPro productPro) throws SQLException;
46
47
    @DeleteWith
48
    @From(ProductPro.class)
49
    int deleteProductPro(Connection con, String id) throws SQLException;
50
51
    @DeleteWith
52
    @From(ProductPro.class)
53
    int deletePro(Connection con, String id, String professor) throws SQLException;
54
55
    @Update
56
    int update(Connection con, Product product) throws SQLException;
57
58
    @UpdateWith
59
    @From(Product.class)
60
    @Where("STATE<>'0'")
61
    @SetSentence("STATE = '0'")
62
    int logicDelete(Connection con, String id) throws SQLException;
63
64
    @UpdateWith
65
    @From(Product.class)
66
    @SetSentence("PAGE_VIEWS=PAGE_VIEWS+1")
67
    int incPageViews(Connection con, String id) throws SQLException;
68
69
    @SelectList
70
    List<ProductPro> queryPro(Connection con, String id) throws SQLException;
71
72
    @DefaultValue("0")
73
    @QueryVal
74
    @Column(value = "COUNT(1)", handlerClass = LongHandler.class)
75
    @From(Product.class)
76
    long countPublish(Connection con, String owner) throws SQLException;
77
78
    @SelectOne
79
    @Nullable
80
    Product queryById(Connection con, String id) throws SQLException;
81
82
    @SelectOne
83
    @Nullable
84
    Product queryByShareId(Connection con, long shareId) throws SQLException;
85
86
    @SelectList
87
    List<Product> queryById(Connection con, @In String[] id) throws SQLException;
88
89
    @LimitSelect
90
    @Where("STATE='1'")
91
    List<Product> queryPublish(Connection con, String owner, @LessThan String modifyTime, int rows) throws SQLException;
92
93
    @PageSelect
94
    @OrderBy("ORDER BY STATE DESC,MODIFY_TIME DESC")
95
    @Where(" STATE = '1' OR STATE='2' ")
96
    PageQueryResult<Product> pageQuery(Connection con, @Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = {"NAME LIKE ?", "CNT LIKE ?", "KEYWORDS LIKE ?"}, isAnd = false) String key, String owner, int pageSize, int pageNo) throws SQLException;
97
98
    @QueryList
99
    @From(Product.class)
100
    @Select(Product.class)
101
    @Where(" STATE='1' OR STATE='2' ")
102
    @OrderBy("ORDER BY STATE DESC,MODIFY_TIME DESC")
103
    List<CountProduct> queryByOwner(Connection con, @Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = {"NAME LIKE ?", "CNT LIKE ?", "KEYWORDS LIKE ?"}, isAnd = false) String key, String owner) throws SQLException;
104
105
    @LimitSelect
106
    @Where("STATE = '1'")
107
    @OrderBy(cols = {@LimitColumn(value = "sortFirst", asc = false, handlerClass = LongHandler.class), @LimitColumn(value = "modifyTime", asc = false), @LimitColumn(value = "id", asc = false)}, value = "")
108
    List<Product> indexSearch(Connection con, @Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = {"NAME LIKE ?", "CNT LIKE ?", "KEYWORDS LIKE ?", "OWNER IN (SELECT ID FROM ORGANIZATION WHERE NAME LIKE ? FOR_SHORT LIKE ?"}, additional = 1, isAnd = false, force = true) String key, long sortFirst, String modifyTime, String id, int rows) throws SQLException;
109
110
111
    @LimitSelect
112
    @OrderBy(" ORDER BY PAGE_VIEWS DESC")
113
    @Where("STATE='1'")
114
    List<Product> queryByOwnerWithPageViews(Connection con, String owner, @Nullable @UnEquals String id, int rows)
115
            throws SQLException;
116
}

+ 32 - 0
src/main/java/com/ekexiu/portal/product/ProductKeyWord.java

@ -0,0 +1,32 @@
1
package com.ekexiu.portal.product;
2
3
import org.jfw.apt.orm.annotation.entry.Column;
4
import org.jfw.apt.orm.annotation.entry.Table;
5
import org.jfw.apt.orm.core.enums.DE;
6
7
/**
8
 * Created by TT on 2018/7/9.
9
 */
10
@Table
11
public class ProductKeyWord {
12
    private String id;
13
    private String kw;
14
15
    @Column(DE.id_32)
16
    public String getId() {
17
        return id;
18
    }
19
20
    public void setId(String id) {
21
        this.id = id;
22
    }
23
24
    @Column(DE.text_de)
25
    public String getKw() {
26
        return kw;
27
    }
28
29
    public void setKw(String kw) {
30
        this.kw = kw;
31
    }
32
}

+ 25 - 0
src/main/java/com/ekexiu/portal/product/ProductKeyWordDao.java

@ -0,0 +1,25 @@
1
package com.ekexiu.portal.product;
2
3
import org.jfw.apt.orm.annotation.dao.Batch;
4
import org.jfw.apt.orm.annotation.dao.DAO;
5
import org.jfw.apt.orm.annotation.dao.method.From;
6
import org.jfw.apt.orm.annotation.dao.method.operator.DeleteWith;
7
import org.jfw.apt.orm.annotation.dao.method.operator.Insert;
8
9
import java.sql.Connection;
10
import java.sql.SQLException;
11
12
/**
13
 * Created by TT on 2018/7/9.
14
 */
15
@DAO
16
public interface ProductKeyWordDao {
17
18
    @Insert
19
    @Batch
20
    int[] insert(Connection con, ProductKeyWord[] productKeyWords) throws SQLException;
21
22
    @DeleteWith
23
    @From(ProductKeyWord.class)
24
    int delete(Connection con, String id) throws SQLException;
25
}

+ 32 - 0
src/main/java/com/ekexiu/portal/product/ProductPro.java

@ -0,0 +1,32 @@
1
package com.ekexiu.portal.product;
2
3
import org.jfw.apt.orm.annotation.entry.Column;
4
import org.jfw.apt.orm.annotation.entry.Table;
5
import org.jfw.apt.orm.core.enums.DE;
6
7
/**
8
 * Created by TT on 2018/7/6.
9
 */
10
@Table
11
public class ProductPro {
12
    private String id;
13
    private String professor;
14
15
    @Column(DE.text_de)
16
    public String getId() {
17
        return id;
18
    }
19
20
    public void setId(String id) {
21
        this.id = id;
22
    }
23
24
    @Column(DE.text_de)
25
    public String getProfessor() {
26
        return professor;
27
    }
28
29
    public void setProfessor(String professor) {
30
        this.professor = professor;
31
    }
32
}

+ 635 - 0
src/main/java/com/ekexiu/portal/product/ProductService.java

@ -0,0 +1,635 @@
1
package com.ekexiu.portal.product;
2
3
import com.ekexiu.portal.dao.WatchDao;
4
import com.ekexiu.portal.service.KeyWordService;
5
import org.jfw.apt.annotation.Autowrie;
6
import org.jfw.apt.annotation.DefaultValue;
7
import org.jfw.apt.annotation.Nullable;
8
import org.jfw.apt.web.annotation.Path;
9
import org.jfw.apt.web.annotation.operate.Get;
10
import org.jfw.apt.web.annotation.operate.Post;
11
import org.jfw.apt.web.annotation.param.JdbcConn;
12
import org.jfw.apt.web.annotation.param.RequestParam;
13
import org.jfw.apt.web.annotation.param.Upload;
14
import org.jfw.util.JpgUtil;
15
import org.jfw.util.ListUtil;
16
import org.jfw.util.PageQueryResult;
17
import org.jfw.util.StringUtil;
18
import org.jfw.util.io.IoUtil;
19
import org.jfw.util.jdbc.JdbcUtil;
20
import org.jfw.util.jdbc.PreparedStatementConfig;
21
import org.jfw.util.jdbc.ResultSetExtractor;
22
import org.jfw.util.web.fileupload.Item;
23
import org.jfw.util.web.fileupload.UploadItemIterator;
24
25
import java.io.ByteArrayInputStream;
26
import java.io.File;
27
import java.io.FileInputStream;
28
import java.io.FileOutputStream;
29
import java.io.IOException;
30
import java.io.InputStream;
31
import java.io.OutputStream;
32
import java.sql.Connection;
33
import java.sql.PreparedStatement;
34
import java.sql.ResultSet;
35
import java.sql.SQLException;
36
import java.util.Collections;
37
import java.util.Comparator;
38
import java.util.LinkedList;
39
import java.util.List;
40
import java.util.concurrent.atomic.AtomicInteger;
41
42
/**
43
 * Created by TT on 2018/7/9.
44
 */
45
@Path("/product")
46
public class ProductService {
47
    private static final AtomicInteger FN_IDX = new AtomicInteger(1);
48
49
    private File imgPath;
50
51
    private int imgMaxWidth = 70;
52
53
    @Autowrie
54
    private ProductDao productDao;
55
    @Autowrie
56
    private WatchDao watchDao;
57
58
    @Autowrie
59
    private KeyWordService keyWordService;
60
61
    public ProductDao getProductDao() {
62
        return productDao;
63
    }
64
65
    public void setProductDao(ProductDao productDao) {
66
        this.productDao = productDao;
67
    }
68
69
    public WatchDao getWatchDao() {
70
        return watchDao;
71
    }
72
73
    public void setWatchDao(WatchDao watchDao) {
74
        this.watchDao = watchDao;
75
    }
76
77
    public KeyWordService getKeyWordService() {
78
        return keyWordService;
79
    }
80
81
    public void setKeyWordService(KeyWordService keyWordService) {
82
        this.keyWordService = keyWordService;
83
    }
84
85
    public File getImgPath() {
86
        return imgPath;
87
    }
88
89
    public void setImgPath(File imgPath) {
90
        this.imgPath = imgPath;
91
    }
92
93
    public int getImgMaxWidth() {
94
        return imgMaxWidth;
95
    }
96
97
    public void setImgMaxWidth(int imgMaxWidth) {
98
        this.imgMaxWidth = imgMaxWidth;
99
    }
100
101
    /**
102
     * 上传文件
103
     *
104
     * @param it
105
     * @return
106
     * @throws Exception
107
     */
108
    @Path("/upload")
109
    @Post
110
    public List<UploadFile> upload(@Upload UploadItemIterator it) throws Exception {
111
        List<UploadFile> ret = new LinkedList<>();
112
        try {
113
            while (it.hasNext()) {
114
                Item item = it.next();
115
                if (!item.isFormField()) {
116
                    String name = normalizeFileName(item.getName());
117
                    int index = name.lastIndexOf('.');
118
                    String ext = index >= 0 ? name.substring(index + 1) : "";
119
                    ext = ext.trim();
120
                    long fileLen = 0;
121
                    int len = 0;
122
                    UploadFile uf = this.buildTargetFile(ext);
123
                    uf.setName(name);
124
                    File file = uf.getFn();
125
                    ret.add(uf);
126
                    byte[] buf = new byte[8092];
127
                    OutputStream of = new FileOutputStream(file);
128
                    try {
129
                        InputStream in = item.getInputStream();
130
                        try {
131
                            while ((len = in.read(buf)) >= 0) {
132
                                if (len > 0) {
133
                                    of.write(buf, 0, len);
134
                                    fileLen += len;
135
                                }
136
                            }
137
                            uf.setSize(fileLen);
138
                        } finally {
139
                            in.close();
140
                        }
141
                    } finally {
142
                        of.close();
143
                    }
144
                }
145
            }
146
            return ret;
147
        } catch (Exception e) {
148
            this.remove(ret);
149
            throw e;
150
        } finally {
151
            if (it != null)
152
                it.clean();
153
        }
154
    }
155
156
    public String insert(Connection con, Product product, String[] professor) throws SQLException, IOException {
157
        String id = StringUtil.buildUUID();
158
        product.setId(id);
159
        this.productDao.insert(con, product);
160
        this.saveSmallImg(product.getImages());
161
        String[] kws = null;
162
        if (product.getKeywords() != null) {
163
            kws = ListUtil.splitTrimExcludeEmpty(product.getKeywords(), ',').toArray(new String[0]);
164
        }
165
        if (product.getState().equals("1")) {
166
            keyWordService.refreshProduct(con, id, kws);
167
        }
168
        if (professor != null && professor.length > 0) {
169
            for (String pid : professor) {
170
                ProductPro productPro = new ProductPro();
171
                productPro.setId(id);
172
                productPro.setProfessor(pid);
173
                productDao.insert(con, productPro);
174
            }
175
        }
176
        return id;
177
    }
178
179
    public boolean update(Connection con, Product product, String[] professor) throws SQLException, IOException {
180
        String id = product.getId();
181
        if (productDao.update(con, product) > 0) {
182
            this.saveSmallImg(product.getImages());
183
            String[] kws = null;
184
            if (product.getKeywords() != null) {
185
                kws = ListUtil.splitTrimExcludeEmpty(product.getKeywords(), ',').toArray(new String[0]);
186
            }
187
            if (product.getState().equals("1")) {
188
                keyWordService.refreshProduct(con, id, kws);
189
            } else {
190
                keyWordService.deleteProduct(con, id);
191
            }
192
            productDao.deleteProductPro(con, id);
193
            if (professor != null && professor.length > 0) {
194
                for (String pid : professor) {
195
                    ProductPro pp = new ProductPro();
196
                    pp.setId(id);
197
                    pp.setProfessor(pid);
198
                    productDao.insert(con, pp);
199
                }
200
            }
201
            return true;
202
        }
203
        return false;
204
    }
205
206
    /**
207
     * 新增发布状态的产品
208
     *
209
     * @param con
210
     * @param product
211
     * @param professor
212
     * @return
213
     * @throws SQLException
214
     * @throws IOException
215
     */
216
    @Post
217
    @Path("/publish")
218
    public String publish(@JdbcConn(true) Connection con, @RequestParam(excludeFields = {"id", "state", "createTime", "modifytime", "shareid", "pageViews", "sortFirst"}) Product product, @Nullable String[] professor) throws SQLException, IOException {
219
        product.setState("1");
220
        return insert(con, product, professor);
221
    }
222
223
    /**
224
     * 新增草稿状态的产品
225
     *
226
     * @param con
227
     * @param product
228
     * @param professor
229
     * @return
230
     * @throws SQLException
231
     * @throws IOException
232
     */
233
    @Post
234
    @Path("/draft")
235
    public String draft(@JdbcConn(true) Connection con, @RequestParam(excludeFields = {"id", "state", "createTime", "modifyTime", "shareId", "pageViews", "sortFirst"}) Product product, @Nullable String[] professor) throws SQLException, IOException {
236
        product.setState("2");
237
        return insert(con, product, professor);
238
    }
239
240
    /**
241
     * 修改为草稿状态产品
242
     *
243
     * @param con
244
     * @param product
245
     * @return
246
     * @throws SQLException
247
     * @throws IOException
248
     */
249
    @Post
250
    @Path("/draft/update")
251
    public boolean updateDraft(@JdbcConn(true) Connection con, @RequestParam(excludeFields = {"id", "state", "createTime", "modifyTime", "shareId", "pageViews", "sortFirst"}) Product product) throws SQLException, IOException {
252
        product.setState("2");
253
        return update(con, product, null);
254
    }
255
256
    /**
257
     * 修改为发布状态产品
258
     *
259
     * @param con
260
     * @param product
261
     * @param professor
262
     * @return
263
     * @throws SQLException
264
     * @throws IOException
265
     */
266
    @Post
267
    @Path("/publish/update")
268
    public boolean updatePublish(@JdbcConn(true) Connection con, @RequestParam(excludeFields = {"id", "state", "createTime", "modifyTime", "shareId", "pageViews", "sortFirst"}) Product product, @Nullable String[] professor) throws SQLException, IOException {
269
        product.setState("1");
270
        return update(con, product, professor);
271
    }
272
273
    /**
274
     * 查询指定的产品(单个)
275
     *
276
     * @param con
277
     * @param id
278
     * @param shareId
279
     * @return
280
     * @throws SQLException
281
     */
282
    @Get
283
    @Path("/qo")
284
    public Product queryOne(@JdbcConn Connection con, @Nullable String id, @DefaultValue("-1") long shareId) throws SQLException {
285
        if (id != null) {
286
            return productDao.queryById(con, id);
287
        } else {
288
            return productDao.queryByShareId(con, shareId);
289
        }
290
    }
291
292
    /**
293
     * 查询指定的服务(多个)
294
     *
295
     * @param con
296
     * @param id
297
     * @return
298
     * @throws SQLException
299
     */
300
    @Get
301
    @Path("/qm")
302
    public List<Product> queryByIds(@JdbcConn Connection con, String[] id) throws SQLException {
303
        return productDao.queryById(con, id);
304
    }
305
306
    /**
307
     * 查询产品联系人
308
     *
309
     * @param con
310
     * @param id
311
     * @return
312
     * @throws SQLException
313
     */
314
    @Get
315
    @Path("/pro")
316
    public List<ProductPro> queryPro(@JdbcConn Connection con, String id) throws SQLException {
317
        return productDao.queryPro(con, id);
318
    }
319
320
    /**
321
     * 根据产品名称、内容、关键词查询指定企业的产品(草稿在前,按最后修改时间由新到旧排序;已发布产品在后,其中未设置联系人的在前,按发布时间由新到旧排序)
322
     * @param con
323
     * @param key
324
     * @param oid
325
     * @param pageSize
326
     * @param pageNo
327
     * @return
328
     * @throws SQLException
329
     */
330
    @Get
331
    @Path("/pq/org/search")
332
    public PageQueryResult<CountProduct> pageQueryOrg(@JdbcConn Connection con, @Nullable String key, String oid, int pageSize, int pageNo) throws SQLException {
333
        if (key != null) {
334
            key = "%" + key + "%";
335
        }
336
        final List<CountProduct> list = productDao.queryByOwner(con, key, oid);
337
        final PageQueryResult<CountProduct> result = new PageQueryResult<>();
338
        if (list != null && list.size() > 0) {
339
            StringBuilder sb = new StringBuilder();
340
            sb.append("SELECT ID,COUNT(1) FROM PRODUCT_PRO WHERE ID IN (");
341
            for (int i = 0; i < list.size(); ++i) {
342
                sb.append("?,");
343
            }
344
            sb.setCharAt(sb.length() - 1, ')');
345
            sb.append(" GROUP BY ID");
346
            JdbcUtil.queryList(con, sb.toString(), new ResultSetExtractor<CountProduct>() {
347
                @Override
348
                public CountProduct extractData(ResultSet resultSet) throws SQLException {
349
                    String id = resultSet.getString(1);
350
                    long c = resultSet.getLong(2);
351
                    for (CountProduct cp : list) {
352
                        if (cp.getId().equals(id)) {
353
                            cp.setNum(c);
354
                            return cp;
355
                        }
356
                    }
357
                    return null;
358
                }
359
            }, new PreparedStatementConfig() {
360
                @Override
361
                public void config(PreparedStatement preparedStatement) throws SQLException {
362
                    int i = 1;
363
                    for (CountProduct cp : list) {
364
                        preparedStatement.setString(i++, cp.getId());
365
                    }
366
                }
367
            });
368
            Collections.sort(list, COUNT_PRODUCT_COMPARATOR);
369
            result.setTotal(list.size());
370
            if (pageNo == 1) {
371
                result.setPageNo(1);
372
                if (pageSize >= pageNo) {
373
                    result.setData(list);
374
                } else {
375
                    result.setData(list.subList(0, pageSize));
376
                }
377
            } else if (pageNo > 1) {
378
                int index = list.size() / pageSize;
379
                if (list.size() % pageSize != 0) {
380
                    ++index;
381
                }
382
                if (pageNo > index) {
383
                    pageNo = index;
384
                }
385
                result.setPageNo(pageNo);
386
                --pageNo;
387
                int begin = pageNo * pageSize - 1;
388
                int end = begin + pageSize;
389
                if (end > list.size()) {
390
                    end = list.size();
391
                }
392
                result.setData(list.subList(begin, end));
393
            }
394
        } else {
395
            result.setTotal(0);
396
        }
397
        return result;
398
    }
399
400
    /**
401
     * 逻辑删除产品
402
     *
403
     * @param con
404
     * @param id
405
     * @return
406
     * @throws SQLException
407
     */
408
    @Post
409
    @Path("/delete")
410
    public int delete(@JdbcConn(true)Connection con,String id)throws SQLException {
411
        watchDao.deleteWatch(con,(short)10, id);
412
        return productDao.logicDelete(con, id);
413
    }
414
415
    /**
416
     * 制定所有者下发布状态下的产品数量
417
     * @param con
418
     * @param owner
419
     * @return
420
     * @throws SQLException
421
     */
422
    @Get
423
    @Path("/count/publish")
424
    public long countPublish(@JdbcConn Connection con,String owner)throws SQLException {
425
        return productDao.countPublish(con, owner);
426
    }
427
428
    /**
429
     * 指定所有者下发布状态下的产品(下拉加载,modifyTime)
430
     * @param con
431
     * @param owner
432
     * @param modifyTime
433
     * @param rows
434
     * @return
435
     * @throws SQLException
436
     */
437
    @Get
438
    @Path("/publish")
439
    public List<Product> queryPublish(@JdbcConn Connection con,String owner,@DefaultValue("\"9\"")String modifyTime,int rows)throws SQLException {
440
        return productDao.queryPublish(con, owner, modifyTime, rows);
441
    }
442
443
    /**
444
     * 增加浏览量
445
     * @param con
446
     * @param id
447
     * @return
448
     * @throws SQLException
449
     */
450
    @Post
451
    @Path("/incPageViews")
452
    public int incPageViews(@JdbcConn(true)Connection con,String id)throws SQLException {
453
        return productDao.incPageViews(con, id);
454
    }
455
456
    /**
457
     * 搜索产品(下拉加载,sortFirst,time,id)
458
     *
459
     * @param con
460
     * @param key
461
     * @param sortFirst
462
     * @param time
463
     * @param id
464
     * @param rows
465
     * @return
466
     * @throws SQLException
467
     */
468
    @Get
469
    @Path("/index/search")
470
    public List<Product> indexSearch(@JdbcConn Connection con,@Nullable String key,@DefaultValue("Long.MAX_VALUE")long sortFirst,@DefaultValue("\"9\"")String time,@DefaultValue("\"Z\"")String id,int rows)throws SQLException {
471
        if (key != null) {
472
            key = "%" + key + "%";
473
        }
474
        return productDao.indexSearch(con, key, sortFirst, time, id, rows);
475
    }
476
477
    /**
478
     * 指定发布人发布中的产品 浏览量倒序
479
     * @param con
480
     * @param owner
481
     * @param id
482
     * @param rows
483
     * @return
484
     * @throws SQLException
485
     */
486
    @Get
487
    @Path("/byOwnerWithPageViews")
488
    public List<Product> queryBySameKwWithPageViews(@JdbcConn Connection con, String owner, @Nullable String id, int rows)throws SQLException {
489
        return productDao.queryByOwnerWithPageViews(con, owner, id, rows);
490
    }
491
492
493
494
495
    private static final Comparator<CountProduct> COUNT_PRODUCT_COMPARATOR = new Comparator<CountProduct>() {
496
        @Override
497
        public int compare(CountProduct o1, CountProduct o2) {
498
            int v = o1.getState().compareTo(o2.getState());
499
            if (v == 0) {
500
                long l1 = o1.getNum();
501
                long l2 = o2.getNum();
502
                if (l1 == 0 && l2 != 0) {
503
                    return 1;
504
                } else if (l2 == 0 && l1 != 0) {
505
                    return -1;
506
                } else {
507
                    return o1.getModifyTime().compareTo(o2.getModifyTime());
508
                }
509
            }
510
            return v;
511
        }
512
    };
513
514
515
    private void saveSmallImg(String imgs) throws IOException {
516
        if (imgs != null) {
517
            List<String> list = ListUtil.splitTrimExcludeEmpty(imgs, ',');
518
            if (list.size() > 0) {
519
                String oname = list.get(0);
520
                if (oname != null) {
521
                    if (oname.startsWith("/")) {
522
                        oname = oname.substring(1);
523
                        int idx = oname.indexOf('.');
524
                        if (idx > 0) {
525
                            String dname = oname.substring(0, idx) + "_s.jpg";
526
                            File dest = new File(this.imgPath, dname);
527
                            if (dest.exists())
528
                                return;
529
                            File src = new File(this.imgPath, oname);
530
                            if (src.exists()) {
531
                                byte[] obs = IoUtil.readStream(new FileInputStream(src), true);
532
                                obs = JpgUtil.read(obs);
533
                                FileOutputStream out = new FileOutputStream(dest);
534
                                try {
535
                                    JpgUtil.scalingZoom(new ByteArrayInputStream(obs), out, this.imgMaxWidth);
536
                                    out.flush();
537
                                } finally {
538
                                    IoUtil.close(out);
539
                                }
540
                            }
541
                        }
542
                    }
543
                }
544
            }
545
        }
546
    }
547
548
    private void remove(List<UploadFile> list) {
549
        for (UploadFile file : list) {
550
            if (file.fn != null)
551
                file.fn.delete();
552
        }
553
    }
554
555
    private UploadFile buildTargetFile(String ext) {
556
        StringBuilder sb = new StringBuilder();
557
        sb.append(System.currentTimeMillis() / (1000 * 60 * 60 * 24));
558
        File path = new File(this.imgPath, sb.toString());
559
        if (!path.exists()) {
560
            synchronized (this) {
561
                if (!path.mkdirs())
562
                    throw new RuntimeException("mkdir error[" + path + "]");
563
                FN_IDX.set(1);
564
            }
565
        }
566
        File file;
567
        do {
568
            String fn = FN_IDX.toString();
569
            if (ext.isEmpty()) {
570
                file = new File(path, fn);
571
            } else {
572
                file = new File(path, fn + "." + ext);
573
            }
574
            FN_IDX.incrementAndGet();
575
        } while (file.exists());
576
        sb.append("/").append(file.getName());
577
        UploadFile uf = new UploadFile();
578
        uf.setFn(file);
579
        uf.setUri("/" + sb.toString());
580
        return uf;
581
    }
582
583
    private String normalizeFileName(String fn) {
584
        int index = fn.indexOf('\\');
585
        if (index >= 0) {
586
            fn = fn.substring(fn.lastIndexOf('\\') + 1);
587
        }
588
        index = fn.indexOf('/');
589
        if (index >= 0) {
590
            fn = fn.substring(fn.lastIndexOf('/') + 1);
591
        }
592
        if (fn.length() == 0)
593
            throw new RuntimeException("invalid filename in Multipart/data request");
594
        return fn;
595
    }
596
597
    public static class UploadFile {
598
        private String name;
599
        private String uri;
600
        private long size;
601
        private transient File fn;
602
603
        public File getFn() {
604
            return fn;
605
        }
606
607
        public void setFn(File fn) {
608
            this.fn = fn;
609
        }
610
611
        public String getName() {
612
            return name;
613
        }
614
615
        public void setName(String name) {
616
            this.name = name;
617
        }
618
619
        public String getUri() {
620
            return uri;
621
        }
622
623
        public void setUri(String uri) {
624
            this.uri = uri;
625
        }
626
627
        public long getSize() {
628
            return size;
629
        }
630
631
        public void setSize(long size) {
632
            this.size = size;
633
        }
634
    }
635
}

+ 5 - 11
src/main/java/com/ekexiu/portal/service/DemandService.java

@ -95,7 +95,6 @@ public class DemandService {
95 95
		if (demand.getDuration() == null) {
96 96
			demand.setDuration("0");
97 97
		}
98
		demand.setModifier(demand.getCreator());
99 98
		this.demandDao.insert(con, demand);
100 99
		return demandId;
101 100
	}
@ -189,7 +188,6 @@ public class DemandService {
189 188
				demand.setDuration("0");
190 189
			}
191 190
			demand.setCreator(user.getId());
192
			demand.setModifier(user.getId());
193 191
			this.demandDao.insert(con, demand);
194 192
			con.commit();
195 193
		} catch (Exception e) {
@ -251,15 +249,13 @@ public class DemandService {
251 249
	 * @param con
252 250
	 * @param id
253 251
	 *            需求ID
254
	 * @param uid
255
	 *            操作用户ID
256 252
	 * @return
257 253
	 * @throws SQLException
258 254
	 */
259 255
	@Post
260 256
	@Path("/over")
261
	public boolean over(@JdbcConn(true) Connection con, String id, String uid) throws SQLException {
262
		return this.demandDao.over(con, id, uid) > 0;
257
	public boolean over(@JdbcConn(true) Connection con, String id) throws SQLException {
258
		return this.demandDao.over(con, id) > 0;
263 259
	}
264 260

265 261
	/**
@ -276,7 +272,7 @@ public class DemandService {
276 272
	@Post
277 273
	@Path("/close")
278 274
	public boolean close(@JdbcConn(true) Connection con, String id, String uid) throws SQLException {
279
		return this.demandDao.close(con, id, uid) > 0;
275
		return this.demandDao.close(con, id) > 0;
280 276
	}
281 277

282 278
	/**
@ -285,8 +281,6 @@ public class DemandService {
285 281
	 * @param con
286 282
	 * @param id
287 283
	 *            需求ID
288
	 * @param uid
289
	 *            操作用户ID
290 284
	 * @param day
291 285
	 *            延期日期 YYYYMMD
292 286
	 * @return
@ -294,8 +288,8 @@ public class DemandService {
294 288
	 */
295 289
	@Post
296 290
	@Path("/defer")
297
	public boolean defer(@JdbcConn(true) Connection con, String id, String uid, String day) throws SQLException {
298
		return this.demandDao.defer(con, id, uid, day) > 0;
291
	public boolean defer(@JdbcConn(true) Connection con, String id, String day) throws SQLException {
292
		return this.demandDao.defer(con, id, day) > 0;
299 293
	}
300 294

301 295
	/**

+ 37 - 8
src/main/java/com/ekexiu/portal/service/KeyWordService.java

@ -1,12 +1,5 @@
1 1
package com.ekexiu.portal.service;
2 2

3
import java.sql.Connection;
4
import java.sql.SQLException;
5
import java.util.ArrayList;
6

7
import org.jfw.apt.annotation.Autowrie;
8
import org.jfw.apt.annotation.Bean;
9

10 3
import com.ekexiu.portal.dao.ArtKeyWordDao;
11 4
import com.ekexiu.portal.dao.OrgKeyWordDao;
12 5
import com.ekexiu.portal.dao.PapKeyWordDao;
@ -19,8 +12,16 @@ import com.ekexiu.portal.po.PapKeyWord;
19 12
import com.ekexiu.portal.po.PatKeyWord;
20 13
import com.ekexiu.portal.po.ProKeyWord;
21 14
import com.ekexiu.portal.po.ResKeyWord;
15
import com.ekexiu.portal.product.ProductKeyWord;
16
import com.ekexiu.portal.product.ProductKeyWordDao;
22 17
import com.ekexiu.portal.ware.WreKeyWord;
23 18
import com.ekexiu.portal.ware.WreKeyWordDao;
19
import org.jfw.apt.annotation.Autowrie;
20
import org.jfw.apt.annotation.Bean;
21

22
import java.sql.Connection;
23
import java.sql.SQLException;
24
import java.util.ArrayList;
24 25

25 26
@Bean
26 27
public class KeyWordService {
@ -39,6 +40,8 @@ public class KeyWordService {
39 40
	private PapKeyWordDao papKeyWordDao;
40 41
	@Autowrie
41 42
	private WreKeyWordDao wreKeyWordDao;
43
	@Autowrie
44
	private ProductKeyWordDao productKeyWordDao;
42 45
	
43 46
	
44 47

@ -98,7 +101,15 @@ public class KeyWordService {
98 101
		this.papKeyWordDao = papKeyWordDao;
99 102
	}
100 103

101
	public void refreshWrae(Connection con,String id,String[] kws)throws SQLException{
104
	public ProductKeyWordDao getProductKeyWordDao() {
105
		return productKeyWordDao;
106
	}
107

108
	public void setProductKeyWordDao(ProductKeyWordDao productKeyWordDao) {
109
		this.productKeyWordDao = productKeyWordDao;
110
	}
111

112
	public void refreshWrae(Connection con, String id, String[] kws)throws SQLException{
102 113
		wreKeyWordDao.delete(con, id);
103 114
		if (kws != null && kws.length > 0) {
104 115
			WreKeyWord[] okws = new WreKeyWord[kws.length];
@ -198,6 +209,24 @@ public class KeyWordService {
198 209
		}
199 210
	}
200 211

212
	public void refreshProduct(Connection con,String id,String[] kws)throws SQLException {
213
		productKeyWordDao.delete(con, id);
214
		if (kws != null && kws.length > 0) {
215
			ProductKeyWord[] productKeyWords = new ProductKeyWord[kws.length];
216
			for (int i = 0;i<kws.length;++i) {
217
				ProductKeyWord productKeyWord = new ProductKeyWord();
218
				productKeyWord.setId(id);
219
				productKeyWord.setKw(kws[i]);
220
				productKeyWords[i] = productKeyWord;
221
			}
222
			productKeyWordDao.insert(con, productKeyWords);
223
		}
224
	}
225

226
	public void deleteProduct(Connection con,String id)throws SQLException {
227
		productKeyWordDao.delete(con, id);
228
	}
229

201 230
	public static String[] splitKeyWord(String kws) {
202 231
		if (kws == null || kws.trim().length() == 0)
203 232
			return null;

+ 30 - 1
src/main/java/com/ekexiu/portal/service/ProfessorService.java

@ -1,7 +1,6 @@
1 1
package com.ekexiu.portal.service;
2 2

3 3
import com.ekexiu.portal.dao.ArticleDao;
4
//import com.ekexiu.portal.dao.DemandDao;
5 4
import com.ekexiu.portal.dao.HonorDao;
6 5
import com.ekexiu.portal.dao.ImageDao;
7 6
import com.ekexiu.portal.dao.OrgDao;
@ -19,6 +18,7 @@ import com.ekexiu.portal.dao.ResearchAreaLogDao;
19 18
import com.ekexiu.portal.dao.ResourceDao;
20 19
import com.ekexiu.portal.dao.UserDao;
21 20
import com.ekexiu.portal.dao.WatchDao;
21
import com.ekexiu.portal.org.OrgLinkManDao;
22 22
import com.ekexiu.portal.po.Organization;
23 23
import com.ekexiu.portal.po.Professor;
24 24
import com.ekexiu.portal.po.Resource;
@ -28,6 +28,7 @@ import com.ekexiu.portal.pojo.EditResearchAreaLog;
28 28
import com.ekexiu.portal.pojo.ProfessorInfo;
29 29
import com.ekexiu.portal.pojo.SortedPro;
30 30
import com.ekexiu.portal.pojo.UserInfo;
31
import com.ekexiu.portal.product.ProductDao;
31 32
import com.ekexiu.portal.util.Calculate;
32 33
import com.ekexiu.portal.ware.WareDao;
33 34
import org.jfw.apt.annotation.Autowrie;
@ -115,6 +116,12 @@ public class ProfessorService {
115 116
	@Autowrie
116 117
	private WareDao wareDao;
117 118

119
	@Autowrie
120
	private OrgLinkManDao orgLinkManDao;
121

122
	@Autowrie
123
	private ProductDao productDao;
124

118 125
//	@Autowrie
119 126
//	private DemandDao demandDao;
120 127
//
@ -326,6 +333,22 @@ public class ProfessorService {
326 333
		this.wareDao = wareDao;
327 334
	}
328 335

336
	public OrgLinkManDao getOrgLinkManDao() {
337
		return orgLinkManDao;
338
	}
339

340
	public void setOrgLinkManDao(OrgLinkManDao orgLinkManDao) {
341
		this.orgLinkManDao = orgLinkManDao;
342
	}
343

344
	public ProductDao getProductDao() {
345
		return productDao;
346
	}
347

348
	public void setProductDao(ProductDao productDao) {
349
		this.productDao = productDao;
350
	}
351

329 352
	@Post
330 353
	@Path
331 354
	public String insert(@JdbcConn(true) Connection con, Professor professor, @Nullable String orgName) throws SQLException, IOException {
@ -717,6 +740,10 @@ public class ProfessorService {
717 740
	@Post
718 741
	@Path("/joinAndPassOrgAuth")
719 742
	public void passOrgAuth(@JdbcConn(true) Connection con, String pid,String oid) throws SQLException {
743
		this.orgLinkManDao.deleteByPid(con, pid);
744
		this.wareDao.deleteWarePro(con, pid);
745
		this.orgResStaffDao.deletePro(con, pid);
746
		this.productDao.deleteProductPro(con, pid);
720 747
		this.professorDao.joinAndPassOrgAuth(con, pid, oid, "1");
721 748
	}
722 749

@ -725,6 +752,8 @@ public class ProfessorService {
725 752
	public void removeOrgAuth(@JdbcConn(true) Connection con, String id) throws SQLException {
726 753
		this.professorDao.updateOrgAuth(con, id, "0");
727 754
		this.wareDao.deletePro(con, id);
755
		this.productDao.deleteProductPro(con, id);
756
		this.orgLinkManDao.deleteByPid(con, id);
728 757
		this.orgResStaffDao.deletePro(con, id);
729 758
	}
730 759


+ 4 - 3
src/main/resources/project-test-dev.properties

@ -280,6 +280,7 @@ com_ekexiu_portal_question_Service.imgPath::java.io.File=/kexiu/webdata1/data/qu
280 280
com_ekexiu_portal_ware_WareService.imgPath::java.io.File=/kexiu/webdata1/data/ware
281 281
com_ekexiu_portal_platform_PlatformService.imgPath::java.io.File=/kexiu/webdata1/data/platform
282 282
com_ekexiu_portal_article_file_ArticleFileService.imgPath::java.io.File=/kexiu/webdata1/data/article/file
283
com_ekexiu_portal_product_ProductService.imgPath::java.io.File=/kexiu/webdata1/data/product
283 284
com_ekexiu_portal_platform_PlatformService.urlWithRestPasswordWithEmail=MAIL_REST_URL
284 285
com_ekexiu_portal_platform_PlatformService.stateCodeWithRestPasswordWithEmail=MAIL_REST_SC
285 286
com_ekexiu_portal_platform_PlatformService.templateWithRestPasswordWithEmail=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u6B63\u5728\u901A\u8FC7\u90AE\u7BB1\u9A8C\u8BC1\u91CD\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u91CD\u7F6E\u5BC6\u7801\u3002</p><p><a style\="color\:\#ff9900" href\="MAIL_REST_URL\=MAIL_REST_SC" target\="_blank">MAIL_REST_URL\=MAIL_REST_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
@ -288,6 +289,6 @@ com_ekexiu_portal_platform_PlatformService.urlWithBindEmail=MAIL_BIND_URL
288 289
com_ekexiu_portal_platform_PlatformService.stateCodeWithBindEmail=MAIL_BIND_SC
289 290
com_ekexiu_portal_platform_PlatformService.templateWithBindEmail=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u6B63\u5728\u7ED1\u5B9A\u65B0\u90AE\u7BB1\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u7ED1\u5B9A\u3002</p><p><a style\="color\:\#ff9900" href\="MAIL_BIND_URL\=MAIL_BIND_SC" target\="_blank">MAIL_BIND_URL\=MAIL_BIND_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
290 291
com_ekexiu_portal_platform_PlatformService.subjectWithBindEmail=\u300C\u79D1\u8896\u300D\u5E73\u53F0\u8D26\u6237\u90AE\u7BB1\u7ED1\u5B9A
291
com_ekexiu_portal_platform_system_SysMailService.orgInviteCodeKey=MAIL_SC
292
com_ekexiu_portal_platform_system_SysMailService.orgInviteNameKey=MAIL_ORG_NAME
293
com_ekexiu_portal_platform_system_SysMailService.orgInviteTemplate=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u7684\u4F01\u4E1AMAIL_ORG_NAME\u9080\u8BF7\u60A8\u6210\u4E3A\u4F01\u4E1A\u8BA4\u8BC1\u5458\u5DE5\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u64CD\u4F5C\u3002</p><p><a style\="color\:\#ff9900" href\="http\://192.168.3.233:81/emaiFindPwdOk.html?sc\=MAIL_SC" target\="_blank">http\://192.168.3.233:81/emaiFindPwdOk.html?sc\=MAIL_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
292
com_ekexiu_portal_system_SysMailService.orgInviteCodeKey=MAIL_SC
293
com_ekexiu_portal_system_SysMailService.orgInviteNameKey=MAIL_ORG_NAME
294
com_ekexiu_portal_system_SysMailService.orgInviteTemplate=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u7684\u4F01\u4E1AMAIL_ORG_NAME\u9080\u8BF7\u60A8\u6210\u4E3A\u4F01\u4E1A\u8BA4\u8BC1\u5458\u5DE5\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u64CD\u4F5C\u3002</p><p><a style\="color\:\#ff9900" href\="http\://192.168.3.233:81/emaiFindPwdOk.html?sc\=MAIL_SC" target\="_blank">http\://192.168.3.233:81/emaiFindPwdOk.html?sc\=MAIL_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>

+ 4 - 3
src/main/resources/project-test.properties

@ -280,6 +280,7 @@ com_ekexiu_portal_question_Service.imgPath::java.io.File=/kexiu/webdata/data/que
280 280
com_ekexiu_portal_ware_WareService.imgPath::java.io.File=/kexiu/webdata/data/ware
281 281
com_ekexiu_portal_platform_PlatformService.imgPath::java.io.File=/kexiu/webdata/data/platform
282 282
com_ekexiu_portal_article_file_ArticleFileService.imgPath::java.io.File=/kexiu/webdata/data/article/file
283
com_ekexiu_portal_product_ProductService.imgPath::java.io.File=/kexiu/webdata/data/product
283 284
com_ekexiu_portal_platform_PlatformService.urlWithRestPasswordWithEmail=MAIL_REST_URL
284 285
com_ekexiu_portal_platform_PlatformService.stateCodeWithRestPasswordWithEmail=MAIL_REST_SC
285 286
com_ekexiu_portal_platform_PlatformService.templateWithRestPasswordWithEmail=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u6B63\u5728\u901A\u8FC7\u90AE\u7BB1\u9A8C\u8BC1\u91CD\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u91CD\u7F6E\u5BC6\u7801\u3002</p><p><a style\="color\:\#ff9900" href\="MAIL_REST_URL\=MAIL_REST_SC" target\="_blank">MAIL_REST_URL\=MAIL_REST_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
@ -288,6 +289,6 @@ com_ekexiu_portal_platform_PlatformService.urlWithBindEmail=MAIL_BIND_URL
288 289
com_ekexiu_portal_platform_PlatformService.stateCodeWithBindEmail=MAIL_BIND_SC
289 290
com_ekexiu_portal_platform_PlatformService.templateWithBindEmail=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u6B63\u5728\u7ED1\u5B9A\u65B0\u90AE\u7BB1\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u7ED1\u5B9A\u3002</p><p><a style\="color\:\#ff9900" href\="MAIL_BIND_URL\=MAIL_BIND_SC" target\="_blank">MAIL_BIND_URL\=MAIL_BIND_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
290 291
com_ekexiu_portal_platform_PlatformService.subjectWithBindEmail=\u300C\u79D1\u8896\u300D\u5E73\u53F0\u8D26\u6237\u90AE\u7BB1\u7ED1\u5B9A
291
com_ekexiu_portal_platform_system_SysMailService.orgInviteCodeKey=MAIL_SC
292
com_ekexiu_portal_platform_system_SysMailService.orgInviteNameKey=MAIL_ORG_NAME
293
com_ekexiu_portal_platform_system_SysMailService.orgInviteTemplate=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u7684\u4F01\u4E1AMAIL_ORG_NAME\u9080\u8BF7\u60A8\u6210\u4E3A\u4F01\u4E1A\u8BA4\u8BC1\u5458\u5DE5\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u64CD\u4F5C\u3002</p><p><a style\="color\:\#ff9900" href\="http\://192.168.3.233/emaiFindPwdOk.html?sc\=MAIL_SC" target\="_blank">http\://192.168.3.233/emaiFindPwdOk.html?sc\=MAIL_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
292
com_ekexiu_portal_system_SysMailService.orgInviteCodeKey=MAIL_SC
293
com_ekexiu_portal_system_SysMailService.orgInviteNameKey=MAIL_ORG_NAME
294
com_ekexiu_portal_system_SysMailService.orgInviteTemplate=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u7684\u4F01\u4E1AMAIL_ORG_NAME\u9080\u8BF7\u60A8\u6210\u4E3A\u4F01\u4E1A\u8BA4\u8BC1\u5458\u5DE5\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u64CD\u4F5C\u3002</p><p><a style\="color\:\#ff9900" href\="http\://192.168.3.233/emaiFindPwdOk.html?sc\=MAIL_SC" target\="_blank">http\://192.168.3.233/emaiFindPwdOk.html?sc\=MAIL_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>

+ 4 - 3
src/main/resources/project.properties

@ -284,6 +284,7 @@ com_ekexiu_portal_question_Service.imgPath::java.io.File=/kexiu/webdata/data/que
284 284
com_ekexiu_portal_ware_WareService.imgPath::java.io.File=/kexiu/webdata/data/ware
285 285
com_ekexiu_portal_platform_PlatformService.imgPath::java.io.File=/kexiu/webdata/data/platform
286 286
com_ekexiu_portal_article_file_ArticleFileService.imgPath::java.io.File=/kexiu/webdata/data/article/file
287
com_ekexiu_portal_product_ProductService.imgPath::java.io.File=/kexiu/webdata/data/product
287 288
com_ekexiu_portal_platform_PlatformService.urlWithRestPasswordWithEmail=MAIL_REST_URL
288 289
com_ekexiu_portal_platform_PlatformService.stateCodeWithRestPasswordWithEmail=MAIL_REST_SC
289 290
com_ekexiu_portal_platform_PlatformService.templateWithRestPasswordWithEmail=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u6B63\u5728\u901A\u8FC7\u90AE\u7BB1\u9A8C\u8BC1\u91CD\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u91CD\u7F6E\u5BC6\u7801\u3002</p><p><a style\="color\:\#ff9900" href\="MAIL_REST_URL\=MAIL_REST_SC" target\="_blank">MAIL_REST_URL\=MAIL_REST_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
@ -292,9 +293,9 @@ com_ekexiu_portal_platform_PlatformService.urlWithBindEmail=MAIL_BIND_URL
292 293
com_ekexiu_portal_platform_PlatformService.stateCodeWithBindEmail=MAIL_BIND_SC
293 294
com_ekexiu_portal_platform_PlatformService.templateWithBindEmail=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u6B63\u5728\u7ED1\u5B9A\u65B0\u90AE\u7BB1\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u7ED1\u5B9A\u3002</p><p><a style\="color\:\#ff9900" href\="MAIL_BIND_URL\=MAIL_BIND_SC" target\="_blank">MAIL_BIND_URL\=MAIL_BIND_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
294 295
com_ekexiu_portal_platform_PlatformService.subjectWithBindEmail=\u300C\u79D1\u8896\u300D\u5E73\u53F0\u8D26\u6237\u90AE\u7BB1\u7ED1\u5B9A
295
com_ekexiu_portal_platform_system_SysMailService.orgInviteCodeKey=MAIL_SC
296
com_ekexiu_portal_platform_system_SysMailService.orgInviteNameKey=MAIL_ORG_NAME
297
com_ekexiu_portal_platform_system_SysMailService.orgInviteTemplate=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u7684\u4F01\u4E1AMAIL_ORG_NAME\u9080\u8BF7\u60A8\u6210\u4E3A\u4F01\u4E1A\u8BA4\u8BC1\u5458\u5DE5\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u64CD\u4F5C\u3002</p><p><a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/emaiFindPwdOk.html?sc\=MAIL_SC" target\="_blank">http\://www.ekexiu.com/emaiFindPwdOk.html?sc\=MAIL_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
296
com_ekexiu_portal_system_SysMailService.orgInviteCodeKey=MAIL_SC
297
com_ekexiu_portal_system_SysMailService.orgInviteNameKey=MAIL_ORG_NAME
298
com_ekexiu_portal_system_SysMailService.orgInviteTemplate=<html style\="height\:auto;"><head><meta name\="viewport" content\="width\=device-width, initial-scale\=1" /><meta http-equiv\="Content-Type" content\="text/html;charset\=UTF-8"><style type\="text/css">html,body {font\: 14px/1.666 Tahoma, Arial;border\: 0;margin\: 0;padding\: 0;color\: \#000000;scrollbar-base-color\: \#dddddd;scrollbar-3dlight-color\: \#ffffff;scrollbar-highlight-color\: \#dddddd;scrollbar-shadow-color\: \#ffffff;scrollbar-darkshadow-color\: \#ffffff;scrollbar-track-color\: \#ffffff;scrollbar-arrow-color\: \#999999;}        div,form,input,textarea,span,img,iframe {margin\: 0;padding\: 0;border\: 0;outline\: 0;}input {cursor\: pointer;}blockquote { margin-left\: 30px;margin-right\: 0; padding\: 0; border\: 0;}blockquote blockquote { margin-left\: 0px;}pre { white-space\: pre-wrap;white-space\: -moz-pre-wrap;white-space\: -pre-wrap;white-space\: -o-pre-wrap;}@media only screen and (max-width\: 600px) {\tdiv[class\="img-responsive"]{\t\ttext-align\:center\!important;}}</style></head><body style\="height\:auto;padding\:0;margin\:0;border\:0;overflow\:hidden;background\:\#d9dfe2;"><div class\="img-responsive" style\="margin-top\:40px;padding\:20px;background\:\#ECF0F5;width\:100%;"><img src\="http\://www.ekexiu.com/images/logo4.png"></div><div style\="width\:100.0%;"><div class\="wrapper" style\="width\: auto; margin\: auto; background\: rgb(255, 255, 255);" _ow\="600px"><div style\="margin\:auto"><div class\="row" style\="text-align\:left;"></div><div class\="row"><div style\="position\:relative;padding\:15.0px 50.0px 10.0px 50.0px;"><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u5C0A\u656C\u7684\u7528\u6237\uFF1A</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u597D\uFF01</p><p class\="start" style\="color\:\#555555;font-size\:14.0px;line-height\:24.0px;padding-top\:10.0px;text-justify\:inter-ideograph;text-align\:justify;">\u60A8\u7684\u4F01\u4E1AMAIL_ORG_NAME\u9080\u8BF7\u60A8\u6210\u4E3A\u4F01\u4E1A\u8BA4\u8BC1\u5458\u5DE5\uFF0C\u8BF7\u8BBF\u95EE\u4E0B\u9762\u7684\u7F51\u5740\u5B8C\u6210\u64CD\u4F5C\u3002</p><p><a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/emaiFindPwdOk.html?sc\=MAIL_SC" target\="_blank">http\://www.ekexiu.com/emaiFindPwdOk.html?sc\=MAIL_SC</a></p><p style\="margin-top\:30.0px;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;border-top\:1.0px solid \#eeeded;padding-top\:15.0px;">\u7CFB\u7EDF\u53D1\u4FE1\uFF0C\u8BF7\u52FF\u56DE\u590D</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u7535\u8BDD\: 010-62343359</p><p style\="margin-top\:0;margin-bottom\:0;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u90AE\u7BB1\: service@ekexiu.com</p><p style\="margin-top\:0;margin-bottom\:30.0px;font-size\:14.0px;line-height\:24.0px;color\:\#555555;">\u5B98\u7F51\: <a style\="color\:\#ff9900" href\="http\://www.ekexiu.com/" target\="_blank">www.ekexiu.com</a></p></div></div></div><\!--footer\u5E95\u90E8--><div style\="background\:\#ECF0F5;width\:100.0%;color\:\#999999;padding\:10px 20px;font-size\:12.0px;"><p style\="padding-bottom\:0;margin-bottom\:0;">&copy; 2016 \u5317\u4EAC\u79D1\u8896\u79D1\u6280\u6709\u9650\u516C\u53F8 &nbsp; | &nbsp; \u4EACICP\u590716042588\u53F7-1 &nbsp; | &nbsp;<a class\="beianbox" style\="color\:\#399A9B;" target\="_black" rel\="nofollow" href\="http\://www.beian.gov.cn/portal/registerSystemInfo?recordcode\=11010802022306"><span class\="beian-icon"></span> \u4EAC\u516C\u7F51\u5B89\u590711010802022306\u53F7</a></p><p style\="padding-top\:0;margin-top\:0;">\u610F\u89C1\u5EFA\u8BAE\uFF1A<strong><a style\="color\:\#399A9B;" rel\="nofollow" href\="mailto\:service@ekexiu.com">service@ekexiu.com</a></strong>&nbsp;&nbsp;&nbsp; \u5BA2\u670D\u7535\u8BDD\uFF1A  010-62343359\uFF089\:00-17\:00\uFF09 </p></div><\!--footer\u5E95\u90E8--></div></div></body></html>
298 299
299 300
300 301