Browse Source

谁是舞王

xiongzhu 7 years ago
parent
commit
d18a569ce5

+ 3 - 1
src/main/java/com/thmodel/dao/ParttyInfoDao.java

@@ -44,7 +44,7 @@ public interface ParttyInfoDao {
      * @param fee      费用
      * @param fee      费用
      * @return
      * @return
      */
      */
-    public int insertParttyInfo(int pk, int parttyPk, String people, String tel, int pCount, String fee);
+    public int insertParttyInfo(int pk, int parttyPk, String people, String tel, int pCount, String fee, String pic, String video, String desc);
 
 
     /**
     /**
      * 根据会员pk和活动pk  设置签到时间
      * 根据会员pk和活动pk  设置签到时间
@@ -104,4 +104,6 @@ public interface ParttyInfoDao {
 
 
     List<JSONObject> signList(int pk, int page, int size);
     List<JSONObject> signList(int pk, int page, int size);
 
 
+    JSONObject getActivity(int pk, int memberpk);
+
 }
 }

+ 51 - 12
src/main/java/com/thmodel/dao/impl/ParttyInfoDaoImpl.java

@@ -1,10 +1,11 @@
 package com.thmodel.dao.impl;
 package com.thmodel.dao.impl;
 
 
+import java.math.BigDecimal;
 import java.sql.SQLException;
 import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.*;
 
 
 import javax.sql.rowset.CachedRowSet;
 import javax.sql.rowset.CachedRowSet;
 
 
@@ -14,7 +15,8 @@ import com.thmodel.entity.ParttyInfo;
 import com.thmodel.util.CommentUtils;
 import com.thmodel.util.CommentUtils;
 import com.thmodel.util.DBRecordsPack;
 import com.thmodel.util.DBRecordsPack;
 import net.sf.json.JSONObject;
 import net.sf.json.JSONObject;
-import org.jooq.DSLContext;
+import org.apache.commons.lang.StringUtils;
+import org.jooq.*;
 import org.jooq.impl.DSL;
 import org.jooq.impl.DSL;
 
 
 import static com.thmodel.jooq.Tables.*;
 import static com.thmodel.jooq.Tables.*;
@@ -218,13 +220,30 @@ public class ParttyInfoDaoImpl implements ParttyInfoDao {
     }
     }
 
 
     @Override
     @Override
-    public int insertParttyInfo(int pk, int parttyPk, String people,
-                                String tel, int pCount, String fee) {
-        String sql = "insert into ParttySign(ParttyPK, MemberPK, enrollDate, people, Tel, pCount, Fee, IsSign, AccFlag)" +
-                " values('" + parttyPk + "', '" + pk + "', now(), '" + people + "','" + tel + "', '" + pCount + "', '" + fee + "', 0, 1);";
-        DbConnection db = new DbConnection();
-        int result_pk = db.executeUpdate(sql);
-        return result_pk;
+    public int insertParttyInfo(int pk, int parttyPk, String people, String tel, int pCount, String fee, String pic, String video, String desc) {
+        DSLContext ctx = DSL.using(DbConnection.getPara("MySQLURL"));
+        InsertSetMoreStep step = ctx.insertInto(PARTTYSIGN)
+                .set(PARTTYSIGN.PARTTYPK, parttyPk)
+                .set(PARTTYSIGN.MEMBERPK, pk)
+                .set(PARTTYSIGN.ENROLLDATE, Timestamp.valueOf(LocalDateTime.now()))
+                .set(PARTTYSIGN.PEOPLE, people)
+                .set(PARTTYSIGN.TEL, tel)
+                .set(PARTTYSIGN.PCOUNT, pCount)
+                .set(PARTTYSIGN.FEE, BigDecimal.valueOf(Double.valueOf(fee)))
+                .set(PARTTYSIGN.ISSIGN, 0)
+                .set(PARTTYSIGN.ACCFLAG, 1);
+        if (StringUtils.isNotEmpty(pic)) {
+            step.set(PARTTYSIGN.PIC, pic);
+        }
+        if (StringUtils.isNotEmpty(video)) {
+            step.set(PARTTYSIGN.VIDEO, video);
+        }
+        if (StringUtils.isNotEmpty(desc)) {
+            step.set(PARTTYSIGN.TEXT, desc);
+        }
+        Record record = step.returning(PARTTYINFO.PK).fetchOne();
+        ctx.close();
+        return record.get(PARTTYINFO.PK);
     }
     }
 
 
     @Override
     @Override
@@ -348,4 +367,24 @@ public class ParttyInfoDaoImpl implements ParttyInfoDao {
         return list;
         return list;
     }
     }
 
 
+    @Override
+    public JSONObject getActivity(int pk, int memberpk) {
+        DSLContext ctx = DSL.using(DbConnection.getPara("MySQLURL"));
+        Field<Object> signed = ctx.selectCount().from(PARTTYSIGN).where(PARTTYSIGN.PARTTYPK.equal(pk)).and(PARTTYSIGN.MEMBERPK.equal(memberpk)).asField("signed");
+        List<Field> fields = new ArrayList<>(Arrays.asList(PARTTYINFO.fields()));
+        fields.add(signed);
+        Record record = ctx.select(fields).from(PARTTYINFO).where(PARTTYINFO.PK.equal(pk)).fetchAny();
+        JSONObject jsonObject = new JSONObject();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        for (Field field : record.fields()) {
+            Object value = field.getValue(record);
+            if (value instanceof Timestamp) {
+                value = sdf.format(new Date(((Timestamp) value).getTime()));
+            }
+            jsonObject.put(field.getName().toLowerCase(), value);
+        }
+        ctx.close();
+        return jsonObject;
+    }
+
 }
 }

+ 3 - 1
src/main/java/com/thmodel/service/ActivityService.java

@@ -46,7 +46,7 @@ public interface ActivityService {
      * @param fee      费用
      * @param fee      费用
      * @return 0:失败, 1:成功,2:已报名,3:余额不足,4:活动报名时间未开始,5:结算金额错误
      * @return 0:失败, 1:成功,2:已报名,3:余额不足,4:活动报名时间未开始,5:结算金额错误
      */
      */
-    public Map<String, Object> enroll(int pk, int parttyPk, String people, String tel, int pCount, String fee);
+    public Map<String, Object> enroll(int pk, int parttyPk, String people, String tel, int pCount, String fee, String pic, String video, String desc);
 
 
     /**
     /**
      * 活动签到
      * 活动签到
@@ -65,4 +65,6 @@ public interface ActivityService {
     public List<Map<String, Object>> getBanner();
     public List<Map<String, Object>> getBanner();
 
 
     public List<JSONObject> signList(int pk, int page, int size);
     public List<JSONObject> signList(int pk, int page, int size);
+
+    public JSONObject getActivity(int pk, int memberpk);
 }
 }

+ 7 - 2
src/main/java/com/thmodel/service/impl/ActivityServiceImpl.java

@@ -58,7 +58,7 @@ public class ActivityServiceImpl implements ActivityService {
 
 
     @Override
     @Override
     public Map<String, Object> enroll(int pk, int parttyPk, String people, String tel,
     public Map<String, Object> enroll(int pk, int parttyPk, String people, String tel,
-                                      int pCount, String fee) {
+                                      int pCount, String fee, String pic, String video, String desc) {
         if (StringUtils.isEmpty(fee)) {
         if (StringUtils.isEmpty(fee)) {
             fee = "0";
             fee = "0";
         }
         }
@@ -77,7 +77,7 @@ public class ActivityServiceImpl implements ActivityService {
                 if (isParttySign) {
                 if (isParttySign) {
                     MemberInfo memberpk = memberinfoDao.findMemberinfoByPK(pk);
                     MemberInfo memberpk = memberinfoDao.findMemberinfoByPK(pk);
                     if (memberpk.getCoin_a() >= Double.parseDouble(fee)) {
                     if (memberpk.getCoin_a() >= Double.parseDouble(fee)) {
-                        int result_pk = parttyInfoDao.insertParttyInfo(pk, parttyPk, people, tel, pCount, fee);
+                        int result_pk = parttyInfoDao.insertParttyInfo(pk, parttyPk, people, tel, pCount, fee, pic, video, desc);
                         if (result_pk > 0) {
                         if (result_pk > 0) {
 							/*boolean isPaySuccess = sysPay.payToActivity(pk, Double.parseDouble(fee));
 							/*boolean isPaySuccess = sysPay.payToActivity(pk, Double.parseDouble(fee));
 							if(isPaySuccess) {
 							if(isPaySuccess) {
@@ -136,5 +136,10 @@ public class ActivityServiceImpl implements ActivityService {
         return parttyInfoDao.signList(pk, page, size);
         return parttyInfoDao.signList(pk, page, size);
     }
     }
 
 
+    @Override
+    public JSONObject getActivity(int pk, int memberpk) {
+        return parttyInfoDao.getActivity(pk, memberpk);
+    }
+
 
 
 }
 }

+ 83 - 3
src/main/java/com/thmodel/servlet/ActivityServlet.java

@@ -1,8 +1,11 @@
 package com.thmodel.servlet;
 package com.thmodel.servlet;
 
 
+import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.IOException;
-import java.util.List;
-import java.util.Map;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 
 import javax.servlet.ServletException;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServlet;
@@ -17,7 +20,11 @@ import com.thmodel.service.impl.ActivityServiceImpl;
 import com.thmodel.util.CommentUtils;
 import com.thmodel.util.CommentUtils;
 import com.thmodel.util.JsonUtils;
 import com.thmodel.util.JsonUtils;
 
 
+import com.thmodel.util.MD5Util;
 import net.sf.json.JSONObject;
 import net.sf.json.JSONObject;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
 
 
 /**
 /**
  * 活动接口请求名:activity
  * 活动接口请求名:activity
@@ -143,8 +150,67 @@ public class ActivityServlet extends HttpServlet {
                 String tel = CommentUtils.myToString(request.getParameter("Tel"));
                 String tel = CommentUtils.myToString(request.getParameter("Tel"));
                 int pCount = Integer.parseInt(CommentUtils.myToString(request.getParameter("pCount")));
                 int pCount = Integer.parseInt(CommentUtils.myToString(request.getParameter("pCount")));
                 String fee = CommentUtils.myToString(request.getParameter("Fee"));
                 String fee = CommentUtils.myToString(request.getParameter("Fee"));
+                String desc = CommentUtils.myToString(request.getParameter("desc"));
+                String pic = null, video = null;
+
+                DiskFileItemFactory factory = new DiskFileItemFactory();
+                ServletFileUpload sfu = new ServletFileUpload(factory);
+                List items = sfu.parseRequest(request);// 从request得到所有上传域的列表
+                for (Iterator iter = items.iterator(); iter.hasNext(); ) {
+                    FileItem fileitem = (FileItem) iter.next();
+                    if (!fileitem.isFormField()) {
+                        String rootPath = request.getRealPath("/");
+                        String relativePath;
+                        String fileName;
+                        if (fileitem.getContentType().contains("video")) {
+                            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+                            relativePath = "upload/video/" + sdf.format(new Date()) + "/";
+                            File file = new File(rootPath + relativePath);
+                            if (!file.exists()) {
+                                file.mkdirs();
+                            }
+                            String uuid = MD5Util.MD5(UUID.randomUUID().toString() + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).toString());
+                            fileName = uuid + ".mov";
+
+                            InputStream fin = fileitem.getInputStream();
+                            FileOutputStream fout = new FileOutputStream(rootPath + relativePath + fileName);
+                            byte[] b = new byte[1024];
+                            int length = 0;
+                            while ((length = fin.read(b)) > 0) {
+                                fout.write(b, 0, length);
+                            }
+                            fin.close();
+                            fout.close();
+                            video = relativePath + fileName;
+                            System.out.println("file:" + relativePath + fileName);
+                        } else if (fileitem.getContentType().contains("image")) {
+                            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+                            relativePath = "upload/photo/" + sdf.format(new Date()) + "/";
+                            File file = new File(rootPath + relativePath);
+                            if (!file.exists()) {
+                                file.mkdirs();
+                            }
+                            String uuid = MD5Util.MD5(UUID.randomUUID().toString() + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).toString());
+                            fileName = uuid + ".jpg";
+
+                            InputStream fin = fileitem.getInputStream();
+                            FileOutputStream fout = new FileOutputStream(rootPath + relativePath + fileName);
+                            byte[] b = new byte[1024];
+                            int length = 0;
+                            while ((length = fin.read(b)) > 0) {
+                                fout.write(b, 0, length);
+                            }
+                            fin.close();
+                            fout.close();
+                            pic = relativePath + fileName;
+                            System.out.println("file:" + relativePath + fileName);
+                        } else {
+                            break;
+                        }
+                    }
+                }
 
 
-                Map<String, Object> map = activityService.enroll(pk, parttyPk, people, tel, pCount, fee);
+                Map<String, Object> map = activityService.enroll(pk, parttyPk, people, tel, pCount, fee, pic, video, desc);
                 int code = (int) map.get("result");
                 int code = (int) map.get("result");
 
 
                 if (code == 1) {
                 if (code == 1) {
@@ -208,6 +274,20 @@ public class ActivityServlet extends HttpServlet {
                 }
                 }
             }
             }
 
 
+            //10.4	获取横幅活动
+            else if (action.equalsIgnoreCase("getactivity")) {
+                int pk = CommentUtils.myToInt(request.getParameter("pk"));
+                int memberpk = CommentUtils.myToInt(request.getParameter("memberpk"));
+
+                JSONObject jsonObject = activityService.getActivity(pk, memberpk);
+                if (jsonObject != null) {
+                    resultJson.put("msg", Constants.success);
+                    resultJson.put("data", jsonObject);
+                } else {
+                    resultJson.put("msg", Constants.fail);
+                }
+            }
+
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
             resultJson.put("msg", Constants.error);
             resultJson.put("msg", Constants.error);

+ 2 - 2
src/main/java/com/thmodel/servlet/UploadServlet.java

@@ -157,7 +157,7 @@ public class UploadServlet extends HttpServlet {
 	 * @param name 文件夹名称
 	 * @param name 文件夹名称
 	 * @return
 	 * @return
 	 */
 	 */
-	public String getRelativeImgPath(String pathRoot, String name) {
+	public static String getRelativeImgPath(String pathRoot, String name) {
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 		// 相对路径
 		// 相对路径
 		String relativePath = "upload/" + name + "/" + sdf.format(new Date()) + "/";
 		String relativePath = "upload/" + name + "/" + sdf.format(new Date()) + "/";
@@ -180,7 +180,7 @@ public class UploadServlet extends HttpServlet {
 	 *            全路径
 	 *            全路径
 	 * @return 成功:全路径/失败:null
 	 * @return 成功:全路径/失败:null
 	 */
 	 */
-	public String printFile(InputStream fin, String path) {
+	public static String printFile(InputStream fin, String path) {
 		try {
 		try {
 			// 定义图片输出流
 			// 定义图片输出流
 			FileOutputStream fout = new FileOutputStream(path);
 			FileOutputStream fout = new FileOutputStream(path);

+ 125 - 41
src/main/webapp/dancer/activityDetail.jsp

@@ -11,51 +11,52 @@
     <title>活动详情</title>
     <title>活动详情</title>
     <jsp:include page="meta.jsp"/>
     <jsp:include page="meta.jsp"/>
     <style>
     <style>
-        .container{
+        .container {
             background-color: #FF4095;
             background-color: #FF4095;
-            display:flex;
+            display: flex;
             flex-direction: column;
             flex-direction: column;
         }
         }
-        .content{
+
+        .content {
             flex-grow: 1;
             flex-grow: 1;
-            overflow: hidden;
-            background:rgba(255,255,255,1);
-            border-radius:12px 12px 0 0;
+            overflow: auto;
+            background: rgba(255, 255, 255, 1);
+            border-radius: 12px 12px 0 0;
             margin: 0 20px;
             margin: 0 20px;
             padding: 20px 15px;
             padding: 20px 15px;
             display: flex;
             display: flex;
             flex-direction: column;
             flex-direction: column;
         }
         }
 
 
-        .main{
-            overflow: auto;
+        .main {
             flex-grow: 1;
             flex-grow: 1;
         }
         }
-        .titleFirst{
-            font-size:22px;
+
+        .titleFirst {
+            font-size: 22px;
             font-weight: bold;
             font-weight: bold;
             text-align: center;
             text-align: center;
-            color:rgba(0,0,0,1);
-            line-height:30px;
+            color: rgba(0, 0, 0, 1);
+            line-height: 30px;
             padding-bottom: 15px;
             padding-bottom: 15px;
         }
         }
 
 
-        .main .titleSe:not(:first-child){
+        .main .titleSe:not(:first-child) {
             margin-top: 20px;
             margin-top: 20px;
         }
         }
 
 
-        .titleSe{
-            font-size:16px;
-         font-weight: bold;
-            color:rgba(0,0,0,1);
-            line-height:22px;
+        .titleSe {
+            font-size: 16px;
+            font-weight: bold;
+            color: rgba(0, 0, 0, 1);
+            line-height: 22px;
 
 
         }
         }
 
 
-        .message{
-            font-size:13px;
-            color:rgba(51,51,51,1);
-            line-height:18px;
+        .message {
+            font-size: 13px;
+            color: rgba(51, 51, 51, 1);
+            line-height: 18px;
             margin-top: 10px;
             margin-top: 10px;
         }
         }
     </style>
     </style>
@@ -64,25 +65,108 @@
 <div class="container" id="app">
 <div class="container" id="app">
     <template>
     <template>
         <tabber :tab-list="tabList" :now-tab="nowTab" :tab-width="70" @choose-tab="chooseTab"></tabber>
         <tabber :tab-list="tabList" :now-tab="nowTab" :tab-width="70" @choose-tab="chooseTab"></tabber>
-        <div class="content">
-            <div class="titleFirst">
-                一级大标题内容
+        <div class="content" v-if="nowTab == 0">
+            <div class="main">
+                <div class="titleFirst">活动简介</div>
+                <div class="message">
+                    谁是舞王是由千模通告联合多个影视剧组及优秀企业共同发起的全国性线上为主线下为辅的舞蹈大赛,活动宗旨以发现新人,对接企业资源,促进文化产业多元化发展为基础。<br>
+                    谁是舞王大赛特别感谢中国台港电影研究会演艺工作委员会的指导,感谢娱乐行业协会的指导。
+                    <div class="titleSe">报名要求:</div>
+                    年龄:18岁—28岁(女性)<br>
+                    身高:162--175cm<br>
+                    有一定的舞蹈基础,舞种不限,有一定社交圈层或粉丝数大于10万(平台不限)者优先。<br>
+                    作品:30秒舞蹈视频为参赛作品,参赛作品版权为大赛主办方所有。<br>
+
+                    <div class="titleSe">总决赛评委:</div>
+                    神秘电影导演:19年单片投资8亿的3D院线巨制。(招募演员)<br>
+                    中国台港电影研究协会:夏会长<br>
+                    娱乐明星:小沈龙(暂定)<br>
+                    北京电影学院:舞蹈专业导师等<br>
+                    备注:入围的18名优秀选手进入总决赛,总决赛暂定在游轮上举行,选手免费,粉丝代表可现场助威。<br>
+                    <div class="titleSe">礼品:</div>
+                    粉丝或嘉宾为选手送虚拟礼物,均可用累计所送金额的等值积分,兑换礼品。礼品由福建广林福白茶提供。广林福新中国第一个国营白茶品牌,60多年历史,以国礼身份出访过13个国家。老厂长林伯是福鼎白茶的非遗传承人。礼品为60周年纪念版,统一售价598元,598个积分兑换一盒。
+                    <div class="titleSe">后续活动主题:</div>
+                    《谁是戏王》:经典电影桥段翻拍重现评比,为影视剧组输送新人。<br>
+                    《谁是歌王》:发现你的成名曲,短视频评比,为各大综艺节目发现新人。<br>
+                    《谁是T王》:职业模特的秀场,对接知名秀场及各大服装展。<br>
+                    <div class="titleSe">感谢媒体:</div>
+                    <img src="${pageContext.request.contextPath}/image/thanks.png" style="width: 100%;">
+                </div>
             </div>
             </div>
+        </div>
+        <div class="content" v-if="nowTab == 1">
             <div class="main">
             <div class="main">
-                <template v-for="item in 100">
-                    <div class="titleSe">
-                        二级标题
-                    </div>
-
-                    <div class="message">
-                        1:详细文字内容详细文字内容,详细文字内容详细文字。内容详细文字内容详细文字内
-                    </div>
-                    <div class="message">
-                        1:详细文字内容详细文字内容,详细文字内容详细文字。内容详细文字内容详细文字内
-                    </div>
-                </template>
+                <div class="titleFirst">谁是舞王赛事规则</div>
+                <div class="message">
+                    <div class="titleSe">赛事进程:</div>
+                    <br>
+                    19年1月10日起选手可以申请报名,截止2月10日不在接受选手报名。选手上传30秒舞蹈作品,审核通过后即视为进入海选赛。<br>
+                    19年2月20日,确定晋级赛60人名单。(匹配6家优秀企业赞助入围选手)<br>
+                    19年2月25日,确定晋级赛战队名单<br>
+                    19年3月30日,确定决赛18人名单,进入决赛。<br>
+
+                    <div class="titleSe">海选赛:</div>
+                    海选赛期间,以选手获得的礼物票数为排名依据,所收礼物的提现比例为50%,系统自动按比例显示在“我的钱包”里面,比赛期间选手可按规则申请提现。<br>
+                    <div class="titleSe">晋级赛:</div>海选赛期间须完成300位粉丝后援团,且礼物总数排名前60位,进入晋级赛。<br>
+                    进入晋级赛,60名优秀选手将分成6个企业冠名战队,选手将得到冠名企业礼物、拉票、活动等支持,选手获得更多经济收益和优异的名次。<br>
+                    <div class="titleSe">决赛:</div>累计票数前18名选手参加决赛,决赛以专业评委的现场评分,结合粉丝投票的综合分为评选依据。6支赞助企业各保留一名选手推荐的名额。<br>
+
+                    <div class="titleSe">决赛场地:赛琳娜游轮(日韩线)选手免费。</div>
+                    备注:<br>
+                    选手奖励:<br>
+                    A:每位选手获得的礼物支持,可50%提现。例如:粉丝李某为选手A送了价值598元的礼物,选手可提现299元。李某产生598积分,积分可兑换由总冠名企业提供的市场价值598元的福鼎白茶一盒。<br>
+                    B:获奖奖金<br>
+                    <br>
+                    选手咨询:15010248035(微信同号)<br>
+                    赞助合作:13730857677(微信同号)<br>
+                    解释权:大赛组委会拥有法律范围内的最终解释权。
+                </div>
+
             </div>
             </div>
+        </div>
+        <div class="content" v-if="nowTab == 2">
+            <div class="titleFirst">
+                奖项设置
+            </div>
+            <div class="main">
+                <div class="titleSe">
+                    选手礼物提现为所收礼物金额的50%,提现金额不计入奖品范围。
+                </div>
+                <div class="message">
+                    <div class="titleSe">获胜奖:<br></div>
+                    A:冠军奖:20000元<br>
+                    B:亚军奖:10000元<br>
+                    C:季军奖:8000元<br>
+                    <div class="titleSe">个人单项奖:各奖励5000元(万元赞助礼品)<br></div>
+                    A:最佳身材奖<br>
+                    B:最佳舞姿奖<br>
+                    C:最佳笑容奖<br>
+                    D:最受欢迎奖<br>
+                    E:最佳编舞奖<br>
+                    <div class="titleSe">特别奖:奖金8万元<br></div>
+                    备注:选手累计投票总数大于88万票以上获得。<br>
+                    <div class="titleSe">团队奖:<br></div>
+                    1、5万元培训基金(冠军团队进入半决赛的前10名选手共同享有)(舞蹈学校赞助)<br>
+                    2、赞助企业团队:冠军战队:20000元、亚军战队10000元、季军战队5000元(赞助企业获得)<br>
 
 
+                    <div class="titleSe">证书:<br></div>
+                    A:进入晋级赛60名,优秀选手证书;<br>
+                    B:冠亚季军及单项奖证书。<br>
+                    梦想奖:<br>
+                    1:推荐一名选手进入3D院线巨制电影剧组<br>
+                    2:推荐多名选手对接多家电影剧组。<br>
+                    本次活动特别推荐的剧组:<br>
+                    电影《诡宅》,计划投资3000万,开机时间19年6月。<br>
+                    院线巨制3D《极震区》,计划投资8亿,开机时间19年3月。<br>
+                    <div class="titleSe">粉丝支持奖:<br></div>
+                    凡为支持选手而送礼物投票的粉丝,累计支持金额可有等值积分,积分可换取积分商城的等值礼品。如李先生为选手A送礼物花费5980元,李先生可用5980积分兑换福鼎白茶20周年纪念版10盒。<br>
+                    <br>
+                    选手咨询:15010248035(微信同号)<br>
+                    赞助合作:13730857677(微信同号)<br>
+
+                    解释权:大赛组委会拥有法律范围内的最终解释权。<br>
+                </div>
+            </div>
         </div>
         </div>
     </template>
     </template>
 </div>
 </div>
@@ -94,7 +178,7 @@
         data() {
         data() {
             return {
             return {
                 tabList: ['介绍', '规则', '奖品'],
                 tabList: ['介绍', '规则', '奖品'],
-                nowTab: 0,
+                nowTab: 0
             }
             }
         },
         },
         mounted() {
         mounted() {
@@ -105,11 +189,11 @@
                 this.nowTab = index
                 this.nowTab = index
 
 
 
 
-                var list=[]
+                var list = []
             }
             }
         },
         },
-        components:{
-            'tabber':tabContent
+        components: {
+            'tabber': tabContent
         },
         },
     })
     })
 </script>
 </script>

+ 32 - 3
src/main/webapp/dancer/index.jsp

@@ -202,7 +202,7 @@
             border-radius: 20px 20px 0 0;
             border-radius: 20px 20px 0 0;
             background: rgba(255, 255, 255, 1);
             background: rgba(255, 255, 255, 1);
             transform: translateY(-20px);
             transform: translateY(-20px);
-            padding: 20px;
+            padding: 20px 20px 60px 20px;
         }
         }
 
 
         .mainTitle {
         .mainTitle {
@@ -227,6 +227,22 @@
             width: 56px;
             width: 56px;
             z-index: 50;
             z-index: 50;
         }
         }
+
+        .btn-apply {
+            height: 44px;
+            line-height: 44px;
+            color: #ffffff;
+            font-size: 16px;
+            font-weight: 700;
+            border-radius: 22px;
+            box-shadow: 0px 8px 10px 0px rgba(255, 64, 149, 0.36);
+            background: rgba(255, 64, 149, 1);
+            position: fixed;
+            left: 20px;
+            right: 20px;
+            bottom: 10px;
+            text-align: center;
+        }
     </style>
     </style>
 </head>
 </head>
 <body>
 <body>
@@ -296,8 +312,10 @@
             </div>
             </div>
         </div>
         </div>
         <a href="rankingList.jsp?activitypk=<%=activitypk%>&memberpk=<%=memberpk%>">
         <a href="rankingList.jsp?activitypk=<%=activitypk%>&memberpk=<%=memberpk%>">
-            <img src="${pageContext.request.contextPath}/image/dancer/icon_paihang.png" class="ranking" alt="">
+            <img src="${pageContext.request.contextPath}/image/dancer/icon_paihang.png" class="ranking" alt=""
+                 :style="{bottom: isModel ? '60px' : '5px'}">
         </a>
         </a>
+        <div class="btn-apply" v-if="isModel" @click="signUp">我要报名</div>
     </template>
     </template>
 </div>
 </div>
 
 
@@ -330,7 +348,8 @@
                 currentPage: 1,
                 currentPage: 1,
                 notJoin: [],
                 notJoin: [],
                 joinFlag: true,
                 joinFlag: true,
-                notFlag: true
+                notFlag: true,
+                isModel: /chmoModel/i.test(navigator.userAgent)
             }
             }
         },
         },
         mounted() {
         mounted() {
@@ -383,6 +402,16 @@
                     }
                     }
 
 
                 }
                 }
+            },
+            signUp: function () {
+                try {
+                    window.webkit.messageHandlers.chmo.postMessage({
+                        action: 'signUp',
+                        activitypk: <%=activitypk%>
+                    })
+                } catch (e) {
+                    console.log(e)
+                }
             }
             }
         }
         }
     })
     })

+ 20 - 6
src/main/webapp/dancer/modelDetail.jsp

@@ -270,7 +270,6 @@
         }
         }
 
 
         .content > .cover {
         .content > .cover {
-            background-image: url("https://ws1.sinaimg.cn/large/0065oQSqgy1fy58bi1wlgj30sg10hguu.jpg");
             background-position: center;
             background-position: center;
             background-size: cover;
             background-size: cover;
             background-repeat: no-repeat;
             background-repeat: no-repeat;
@@ -290,17 +289,20 @@
         .video-container {
         .video-container {
             display: none;
             display: none;
             position: fixed;
             position: fixed;
+            width: 100%;
+            height: 100%;
             left: 0;
             left: 0;
             top: 0;
             top: 0;
             right: 0;
             right: 0;
             border: 0;
             border: 0;
             z-index: 999;
             z-index: 999;
+            background: black;
         }
         }
 
 
         .video-container video {
         .video-container video {
             width: 100%;
             width: 100%;
             height: 100%;
             height: 100%;
-            object-fit: cover;
+            object-fit: contain;
         }
         }
 
 
         .video-container .close {
         .video-container .close {
@@ -555,7 +557,8 @@
         <div style="font-size:16px;font-weight:700;text-align: center;line-height: 24px;"><span
         <div style="font-size:16px;font-weight:700;text-align: center;line-height: 24px;"><span
                 style="font-size: 24px;vertical-align: middle;">·</span>&nbsp;参赛视频&nbsp;<span
                 style="font-size: 24px;vertical-align: middle;">·</span>&nbsp;参赛视频&nbsp;<span
                 style="font-size: 24px;vertical-align: middle;">·</span></div>
                 style="font-size: 24px;vertical-align: middle;">·</span></div>
-        <div class="cover" @click="play">
+        <div class="cover" @click="play"
+             :style="{backgroundImage: 'url(${pageContext.request.contextPath}/<%=signInfo.getString("pic")%>)'}">
             <img src="${pageContext.request.contextPath}/image/icon_play.png" class="play">
             <img src="${pageContext.request.contextPath}/image/icon_play.png" class="play">
         </div>
         </div>
         <div class="intro"><%=signInfo.getOrDefault("text", "")%>
         <div class="intro"><%=signInfo.getOrDefault("text", "")%>
@@ -570,7 +573,7 @@
             <img src="${pageContext.request.contextPath}/image/icon_into.png" class="into">
             <img src="${pageContext.request.contextPath}/image/icon_into.png" class="into">
         </div>
         </div>
         <div class="apply-container">
         <div class="apply-container">
-            <button class="apply">我也要参加</button>
+            <button class="apply" v-if="isModel" @click="signUp">我也要参加</button>
         </div>
         </div>
         <div style="font-size:16px;font-weight:700;text-align: center;line-height: 24px;margin-top: 30px;margin-bottom: 15px"><span
         <div style="font-size:16px;font-weight:700;text-align: center;line-height: 24px;margin-top: 30px;margin-bottom: 15px"><span
                 style="font-size: 24px;vertical-align: middle;">·</span>&nbsp;礼物列表&nbsp;<span
                 style="font-size: 24px;vertical-align: middle;">·</span>&nbsp;礼物列表&nbsp;<span
@@ -616,7 +619,7 @@
 </div>
 </div>
 <div class="video-container" id="video-container">
 <div class="video-container" id="video-container">
     <video id="video"
     <video id="video"
-           src="${pageContext.request.contextPath}/image/test.MP4"
+           src="${pageContext.request.contextPath}/<%=signInfo.getString("video")%>"
            controls="none"
            controls="none"
            preload="auto"
            preload="auto"
            loop="loop"
            loop="loop"
@@ -666,7 +669,8 @@
             },
             },
             isFollow: ${isFollow},
             isFollow: ${isFollow},
             isIOS: /iPhone/i.test(navigator.userAgent),
             isIOS: /iPhone/i.test(navigator.userAgent),
-            inApp: /chmo/i.test(navigator.userAgent)
+            inApp: /chmo/i.test(navigator.userAgent),
+            isModel: /chmoModel/i.test(navigator.userAgent)
         },
         },
         methods: {
         methods: {
             play: function () {
             play: function () {
@@ -754,6 +758,16 @@
                         console.log(e)
                         console.log(e)
                     }
                     }
                 }
                 }
+            },
+            signUp: function () {
+                try {
+                    window.webkit.messageHandlers.chmo.postMessage({
+                        action: 'signUp',
+                        activitypk: <%=activitypk%>
+                    })
+                } catch (e) {
+                    console.log(e)
+                }
             }
             }
         }
         }
     })
     })

BIN
src/main/webapp/image/thanks.png