src/main/java/com/yeshi/buwan/controller/admin/api/VipAdminController.java
@@ -116,8 +116,8 @@ } } List<OrderRecord> list = orderService.listOrderRecord(uid, state, page, Constant.pageCount); long count = orderService.countOrderRecord(uid, state); List<OrderRecord> list = orderService.listOrderRecord(uid,null, state, page, Constant.pageCount); long count = orderService.countOrderRecord(uid,null, state); JSONObject data = new JSONObject(); data.put("pageEntity", new PageEntity(page, Constant.pageCount, (int) count)); data.put("list", getGson().toJson(list)); src/main/java/com/yeshi/buwan/controller/api/VIPController.java
@@ -125,12 +125,12 @@ }).create(); JSONObject root = new JSONObject(); List<OrderRecord> list = orderService.listOrderRecord(loginUid, null, page, Constant.pageCount); List<OrderRecord> list = orderService.listOrderRecord(loginUid, OrderType.vip,null, page, Constant.pageCount); for (OrderRecord record : list) { record.setIpInfo(null); record.setUpdateTime(null); } long count = orderService.countOrderRecord(loginUid, null); long count = orderService.countOrderRecord(loginUid, OrderType.vip,null); root.put("list", gson.toJson(list)); root.put("count", count); return JsonUtilV2.loadTrueJson(root.toString()); src/main/java/com/yeshi/buwan/controller/api/VideoInfoController.java
New file @@ -0,0 +1,213 @@ package com.yeshi.buwan.controller.api; import com.google.gson.*; import com.ks.goldcorn.service.remote.GoldCornBalanceService; import com.yeshi.buwan.domain.VideoInfo; import com.yeshi.buwan.domain.user.LoginUser; import com.yeshi.buwan.domain.vip.*; import com.yeshi.buwan.exception.goldcorn.GoldCornException; import com.yeshi.buwan.exception.order.OrderException; import com.yeshi.buwan.exception.order.PayException; import com.yeshi.buwan.pptv.PPTVUtil; import com.yeshi.buwan.pptv.entity.PPTVSeries; import com.yeshi.buwan.pptv.entity.VideoPPTVMap; import com.yeshi.buwan.service.inter.LoginUserService; import com.yeshi.buwan.service.inter.juhe.PPTVService; import com.yeshi.buwan.service.inter.order.OrderService; import com.yeshi.buwan.service.inter.system.SystemConfigService; import com.yeshi.buwan.service.inter.vip.VIPPriceService; import com.yeshi.buwan.service.inter.vip.VIPService; import com.yeshi.buwan.service.manager.GoldCornManager; import com.yeshi.buwan.util.*; import com.yeshi.buwan.util.factory.VideoInfoFactory; import com.yeshi.buwan.util.user.VipUtil; import com.yeshi.buwan.util.vip.VIPOrderUtil; import com.yeshi.buwan.vo.AcceptData; import com.yeshi.buwan.vo.client.user.UserInfoVO; import net.sf.json.JSONObject; import org.apache.dubbo.config.annotation.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.yeshi.utils.StringUtil; import org.yeshi.utils.annotation.RequestSerializableByKey; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Type; import java.util.Date; import java.util.List; import java.util.UUID; @Controller @RequestMapping("api/v2/videoinfo") public class VideoInfoController { Logger logger = LoggerFactory.getLogger(VideoInfoController.class); @Resource private PPTVService pptvService; @Resource private LoginUserService loginUserService; @Resource private OrderService orderService; @Resource private VIPService vipService; @Resource private GoldCornManager goldCornManager; private String getDurationDesc(int duration) { int h = duration / (60 * 60); int m = (duration % (60 * 60)) / 60; int s = duration % 60; String st = ""; if (h > 0) st += h + "时"; if (st.length() > 0 || m > 0) { st += m + "分"; } st += s + "秒"; return st; } @RequestMapping("getPPVideoInfo") @ResponseBody public String getPPVideoInfo(AcceptData acceptData, String loginUid, String infoId) { //获取PPTV的视频详情 PPTVSeries series = pptvService.getSeriesDetail(infoId); if (series == null) { return JsonUtilV2.loadFalseJson("当前影片不存在"); } if (!"add".equalsIgnoreCase(series.getStatus()) && !"update".equalsIgnoreCase(series.getStatus())) { return JsonUtilV2.loadFalseJson("当前影片已下线"); } if (series.getGoodsInfo() == null || StringUtil.isNullOrEmpty(series.getGoodsInfo().getGoodsNo())) { return JsonUtilV2.loadFalseJson("当前影片不能购买"); } PPTVSimpleVideoInfo videoInfo = new PPTVSimpleVideoInfo(); videoInfo.setInfoId(series.getInfoID()); videoInfo.setName(series.getName()); videoInfo.setPicture(series.getCover()); videoInfo.setCategory(series.getProgramcategory().replace("-电视剧", "").replace("-电影", "").replace("-动漫", "").replace("-少儿", "")); videoInfo.setActors(series.getActor()); videoInfo.setDirectors(series.getDirector()); if (series.getSeries() != null && series.getSeries().size() > 0 && !StringUtil.isNullOrEmpty(series.getSeries().get(0).getDuration())) videoInfo.setDuration(getDurationDesc(Integer.parseInt(series.getSeries().get(0).getDuration()))); videoInfo.setDesc(series.getDescription()); Gson gson = new GsonBuilder().create(); JSONObject data = new JSONObject(); data.put("video", gson.toJson(videoInfo)); //加载价格信息 JSONObject priceInfo=new JSONObject(); priceInfo.put("discount","6折"); priceInfo.put("actualPrice","3.9"); data.put("price", priceInfo); if (!StringUtil.isNullOrEmpty(loginUid)) { LoginUser user = loginUserService.getLoginUser(loginUid); if (user != null) { JSONObject userInfo = new JSONObject(); userInfo.put("portrait", user.getPortrait()); userInfo.put("nickName", user.getName()); userInfo.put("id", user.getId()); long count = orderService.countOrderRecord(loginUid, OrderType.video, OrderRecord.STATE_PAY); userInfo.put("vip", vipService.isVIP(loginUid)); userInfo.put("videoCount", count); //影视豆 userInfo.put("goldCorn", goldCornManager.getBalance(loginUid)); data.put("user", userInfo); } } return JsonUtilV2.loadTrueJson(data.toString()); } class PPTVSimpleVideoInfo { private String infoId; private String picture; private String name; private String category; private String actors; private String directors; private String duration; private String desc; public String getInfoId() { return infoId; } public void setInfoId(String infoId) { this.infoId = infoId; } public String getPicture() { return picture; } public void setPicture(String picture) { this.picture = picture; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public String getActors() { return actors; } public void setActors(String actors) { this.actors = actors; } public String getDirectors() { return directors; } public void setDirectors(String directors) { this.directors = directors; } public String getDuration() { return duration; } public void setDuration(String duration) { this.duration = duration; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } } } src/main/java/com/yeshi/buwan/controller/api/VideoPlayController.java
@@ -1,6 +1,8 @@ package com.yeshi.buwan.controller.api; import com.google.gson.Gson; import com.yeshi.buwan.domain.jump.JumpDetail; import com.yeshi.buwan.domain.jump.JumpTypeEnum; import com.yeshi.buwan.domain.video.VideoWatchHistory; import com.yeshi.buwan.pptv.PPTVApiUtil; import com.yeshi.buwan.pptv.entity.PPTVProgram; @@ -11,9 +13,11 @@ import com.yeshi.buwan.service.inter.push.PushDeviceTokenService; import com.yeshi.buwan.service.inter.video.VideoWatchHistoryService; import com.yeshi.buwan.util.JsonUtil; import com.yeshi.buwan.util.VersionUtil; import com.yeshi.buwan.vo.AcceptData; import com.yeshi.buwan.vo.video.PPTVVideoActivityInfoVO; import com.yeshi.buwan.vo.video.PPTVWatchVIPVideoActivityWay; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; @@ -114,6 +118,28 @@ way.setTextColor("#885E24"); way.setType("vip"); wayList.add(way); //3.9.2后返回单片购买 if (VersionUtil.isGraterThan392(acceptData.getPlatform(), acceptData.getVersion())) { way = new PPTVWatchVIPVideoActivityWay(); way.setEndBgColor("#DCE8FF"); way.setStartBgColor("#DCE8FF"); // way.setEndPrice(new BigDecimal("77.8")); way.setIcon("http://img.ysdq.yeshitv.com/resource/icon_free_money.png"); way.setStartPrice(new BigDecimal("0")); way.setSubTitle("畅享海量高清"); way.setTitle("0元看单片"); way.setTextColor("#0052F6"); way.setType("video"); JumpDetail jumpDetail = new JumpDetail(); jumpDetail.setType(JumpTypeEnum.web); way.setJumpDetail(jumpDetail); JSONObject params = new JSONObject(); params.put("url", "http://192.168.3.122:8848/BuWanWeb/buyVideo/index.html?infoId=23099"); way.setParams(params.toString().replace("\"","\\" + "\"")); wayList.add(way); } vo.setWayList(wayList); return JsonUtil.loadTrueJson(new Gson().toJson(vo)); } src/main/java/com/yeshi/buwan/dao/user/LoginUserDao.java
@@ -1,6 +1,9 @@ package com.yeshi.buwan.dao.user; import com.yeshi.buwan.dao.base.BaseDao; import org.hibernate.HibernateException; import org.hibernate.Session; import org.springframework.orm.hibernate4.HibernateCallback; import org.springframework.stereotype.Repository; import com.yeshi.buwan.domain.user.LoginUser; @@ -14,6 +17,19 @@ public class LoginUserDao extends BaseDao<LoginUser> { public LoginUser selectByPrimaryKeyForUpdate(String id) { return (LoginUser) excute(new HibernateCallback<LoginUser>() { @Override public LoginUser doInHibernate(Session session) throws HibernateException { List<LoginUser> userList = session.createSQLQuery("select * from wk_loginuser lu where lu.id=? for update").addEntity(LoginUser.class).setParameter(0, id).list(); if (userList != null && userList.size() > 0) return userList.get(0); return null; } }); } public void updateSelective(LoginUser loginUser) { String hql = "update LoginUser u set "; src/main/java/com/yeshi/buwan/dao/vip/OrderRecordDao.java
@@ -24,7 +24,7 @@ } if (daoQuery.orderType != null) { hql += " and r.orderType=" + daoQuery.orderType; hql += " and r.orderType='" + daoQuery.orderType+"'"; } hql += " order by r.createTime desc"; src/main/java/com/yeshi/buwan/service/imp/order/OrderServiceImpl.java
@@ -336,22 +336,23 @@ @Override public List<OrderRecord> listOrderRecord(String uid, Integer state, int page, int pageSize) { public List<OrderRecord> listOrderRecord(String uid, OrderType orderType, Integer state, int page, int pageSize) { OrderRecordDao.DaoQuery query = new OrderRecordDao.DaoQuery(); query.start = (page - 1) * pageSize; query.count = pageSize; query.uid = uid; query.state = state; query.orderType = orderType; return vipOrderRecordDao.list(query); } @Override public long countOrderRecord(String uid, Integer state) { public long countOrderRecord(String uid, OrderType orderType, Integer state) { OrderRecordDao.DaoQuery query = new OrderRecordDao.DaoQuery(); query.uid = uid; query.state = state; query.orderType = orderType; return vipOrderRecordDao.count(query); } src/main/java/com/yeshi/buwan/service/inter/order/OrderService.java
@@ -1,6 +1,7 @@ package com.yeshi.buwan.service.inter.order; import com.yeshi.buwan.domain.vip.OrderRecord; import com.yeshi.buwan.domain.vip.OrderType; import com.yeshi.buwan.dto.order.PayWayInfoDTO; import com.yeshi.buwan.exception.PPTVException; import com.yeshi.buwan.exception.goldcorn.GoldCornException; @@ -32,7 +33,7 @@ * @param state * @return */ public List<OrderRecord> listOrderRecord(String uid, Integer state, int page, int pageSize); public List<OrderRecord> listOrderRecord(String uid, OrderType orderType, Integer state, int page, int pageSize); /** @@ -40,7 +41,7 @@ * @param state * @return */ public long countOrderRecord(String uid, Integer state); public long countOrderRecord(String uid, OrderType orderType, Integer state); /** src/main/java/com/yeshi/buwan/service/manager/GoldCornManager.java
@@ -3,6 +3,7 @@ import com.ks.goldcorn.exception.GoldAppException; import com.ks.goldcorn.exception.GoldTradeException; import com.ks.goldcorn.exception.GoldUserException; import com.ks.goldcorn.service.remote.GoldCornBalanceService; import com.ks.goldcorn.service.remote.GoldCornTradeService; import com.yeshi.buwan.domain.vip.OrderType; import com.yeshi.buwan.domain.vip.OrderRecord; @@ -23,6 +24,9 @@ @Reference(version = "1.0",check = false) private GoldCornTradeService goldCornTradeService; @Reference(version = "1.0", check = false) private GoldCornBalanceService goldCornBalanceService; /** @@ -48,6 +52,16 @@ return appCode; } public long getBalance(String uid) { try { Long count = goldCornBalanceService.getBalance(getAppCode(), getUid(uid)); return count==null?0:count; } catch (Exception e) { e.printStackTrace(); } return 0; } /** * 金币消耗 src/main/java/com/yeshi/buwan/service/manager/SeataManagerTest.java
@@ -1,32 +1,42 @@ package com.yeshi.buwan.service.manager; import com.ks.goldcorn.pojo.DO.GoldCornGetSource; import com.ks.goldcorn.service.remote.GoldCornGetSourceService; import com.yeshi.buwan.dao.user.LoginUserDao; import com.yeshi.buwan.domain.user.LoginUser; import io.seata.core.context.RootContext; import io.seata.spring.annotation.GlobalTransactional; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Component; import javax.annotation.Resource; @Component public class SeataManagerTest { // // @Resource // private LoginUserDao loginUserDao; // // @Reference(version = "1.0") // private GoldCornGetSourceService goldCornGetSourceService; // // @GlobalTransactional(timeoutMills = 30000, name = "buwan-order", rollbackFor = Exception.class) // public void addGetResource() throws Exception { // System.out.println("开始全局事务,XID = " + RootContext.getXID()); // LoginUser loginUser = new LoginUser(); // loginUser.setId("50134"); // loginUser.setName("test3"); // loginUserDao.updateSelective(loginUser); // // GoldCornGetSource get = new GoldCornGetSource(); // get.setAppId(15L); // get.setSourceCode("test1"); // get.setSourceName("测试"); // get.setGoldCorn(1); // // goldCornGetSourceService.addSource(get); // throw new Exception("手动报错"); // } @Resource private LoginUserDao loginUserDao; @Reference(version = "1.0") private GoldCornGetSourceService goldCornGetSourceService; @GlobalTransactional(timeoutMills = 30000, name = "buwan-order", rollbackFor = Exception.class) public void addGetResource() throws Exception { // loginUserDao.selectByPrimaryKeyForUpdate("50134"); System.out.println("开始全局事务,XID = " + RootContext.getXID()); LoginUser loginUser = new LoginUser(); loginUser.setId("50134"); loginUser.setName("test9"); loginUserDao.updateSelective(loginUser); GoldCornGetSource get = new GoldCornGetSource(); get.setAppId(15L); get.setSourceCode("test5"); get.setSourceName("测试"); get.setGoldCorn(1); goldCornGetSourceService.addSource(get); throw new Exception("手动报错"); } } src/main/java/com/yeshi/buwan/util/SpringContext.java
@@ -1,5 +1,6 @@ package com.yeshi.buwan.util; import com.alibaba.druid.pool.DruidDataSource; import com.yeshi.buwan.domain.ResourceVideo; import com.yeshi.buwan.domain.VideoInfo; import com.yeshi.buwan.domain.VideoResource; @@ -18,9 +19,11 @@ import com.yeshi.buwan.service.manager.SolrAlbumVideoDataManager; import com.yeshi.buwan.service.manager.SolrInternetSearchVideoDataManager; import com.yeshi.buwan.util.mq.CMQManager; import io.seata.rm.datasource.DataSourceProxy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Bean; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; @@ -65,6 +68,11 @@ } } @Bean public DataSourceProxy dataSourceProxy(DruidDataSource druidDataSource) { return new DataSourceProxy(druidDataSource); } private synchronized void onApplication(ContextRefreshedEvent context) { if (!isInited) { src/main/java/com/yeshi/buwan/util/VersionUtil.java
@@ -33,4 +33,10 @@ return true; return false; } public static boolean isGraterThan392(String platform, int version) { if ("android".equalsIgnoreCase(platform) && version >= 111) return true; return false; } } src/main/java/com/yeshi/buwan/vo/baidu/BaiDuCPUTypeVO.java
@@ -1,9 +1,11 @@ package com.yeshi.buwan.vo.baidu; import java.io.Serializable; /** * 百度内容联盟分类 */ public class BaiDuCPUTypeVO { public class BaiDuCPUTypeVO implements Serializable { private String name; private int id; src/main/resources/seata.xml
@@ -8,9 +8,7 @@ </bean> <bean id="dataSourceProxy" class=" io.seata.rm.datasource.DataSourceProxy"> <constructor-arg name="targetDataSource" ref="dataSource"/> </bean> </beans> src/main/resources/spring.xml
@@ -212,6 +212,7 @@ <constructor-arg name="database" value="${redis.database}"></constructor-arg> </bean> <!-- Solr搜索引擎数据管理 --> <import resource="solr.xml"></import> <import resource="xxl-job.xml"></import> src/test/java/com/hxh/spring/test/dubbo/SeataTest.java
@@ -21,7 +21,7 @@ @Test public void getApp() { try { // seataManagerTest.addGetResource(); seataManagerTest.addGetResource(); } catch (Exception e) { e.printStackTrace(); } src/test/java/com/hxh/spring/test/vip/VIPTest.java
@@ -119,19 +119,19 @@ @Test public void listRecord() { List<OrderRecord> list = orderService.listOrderRecord(null, null, 1, 10); long count = orderService.countOrderRecord(null, null); List<OrderRecord> list = orderService.listOrderRecord(null, null,null, 1, 10); long count = orderService.countOrderRecord(null, null,null); list = orderService.listOrderRecord(766693 + "", null, 1, 10); count = orderService.countOrderRecord(766693 + "", null); list = orderService.listOrderRecord(766693 + "", null,null, 1, 10); count = orderService.countOrderRecord(766693 + "", null,null); list = orderService.listOrderRecord(766693 + "", OrderRecord.STATE_NOT_PAY, 1, 10); count = orderService.countOrderRecord(766693 + "", OrderRecord.STATE_NOT_PAY); list = orderService.listOrderRecord(766693 + "", null,OrderRecord.STATE_NOT_PAY, 1, 10); count = orderService.countOrderRecord(766693 + "", null,OrderRecord.STATE_NOT_PAY); list = orderService.listOrderRecord(766693 + "", OrderRecord.STATE_PAY, 1, 10); count = orderService.countOrderRecord(766693 + "", OrderRecord.STATE_PAY); list = orderService.listOrderRecord(766693 + "", null,OrderRecord.STATE_PAY, 1, 10); count = orderService.countOrderRecord(766693 + "",null, OrderRecord.STATE_PAY); System.out.println(list); }