From 4cb15e222cd7d099d533ccbeb7f9a8cd99bf180c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 十二月 2018 16:35:18 +0800
Subject: [PATCH] 替换原来老的资金详情

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java        |   36 +++
 fanli/src/main/java/com/yeshi/fanli/entity/money/UserMoneyDetail.java                 |   10 +
 fanli/src/main/java/com/yeshi/fanli/mapping/AccountDetailsMapper.xml                  |    4 
 fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java        |   45 ++--
 fanli/src/main/java/com/yeshi/fanli/util/factory/AccountDetailsFactory.java           |  108 +++++++--
 fanli/src/main/java/com/yeshi/fanli/controller/h5/H5StrategyPictureController.java    |   25 ++
 fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoMapper.xml                 |   38 +++
 fanli/src/main/java/com/yeshi/fanli/dao/mybatis/hongbao/HongBaoMapper.java            |   13 +
 fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java         |   70 ++++--
 fanli/src/main/java/com/yeshi/fanli/mapping/money/UserMoneyDetailMapper.xml           |   84 +++++++
 fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserMoneyDetailService.java    |   18 +
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java |   10 +
 fanli/src/main/java/com/yeshi/fanli/vo/money/UserMoneyStatisticVO.java                |   87 ++++++++
 fanli/src/main/java/com/yeshi/fanli/dao/mybatis/money/UserMoneyDetailMapper.java      |   15 +
 14 files changed, 464 insertions(+), 99 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java
index 0935fbe..5d17922 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserInfoController.java
@@ -16,9 +16,6 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
 import org.apache.commons.beanutils.PropertyUtils;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -57,6 +54,7 @@
 import com.yeshi.fanli.entity.common.Config;
 import com.yeshi.fanli.entity.goods.CollectionGoodsV2;
 import com.yeshi.fanli.entity.goods.CommonGoods;
+import com.yeshi.fanli.entity.money.UserMoneyDetail;
 import com.yeshi.fanli.entity.system.System;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
@@ -77,7 +75,6 @@
 import com.yeshi.fanli.service.inter.order.LostOrderService;
 import com.yeshi.fanli.service.inter.order.OrderItemServcie;
 import com.yeshi.fanli.service.inter.order.OrderService;
-import com.yeshi.fanli.service.inter.user.AccountDetailsService;
 import com.yeshi.fanli.service.inter.user.AccountMessageService;
 import com.yeshi.fanli.service.inter.user.BindingAccountService;
 import com.yeshi.fanli.service.inter.user.ExtractRecordService;
@@ -88,6 +85,7 @@
 import com.yeshi.fanli.service.inter.user.UserAccountService;
 import com.yeshi.fanli.service.inter.user.UserActiveLogService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
 import com.yeshi.fanli.service.inter.user.WxDownService;
 import com.yeshi.fanli.util.AESUtil;
 import com.yeshi.fanli.util.Constant;
@@ -100,9 +98,13 @@
 import com.yeshi.fanli.util.Utils;
 import com.yeshi.fanli.util.account.UserUtil;
 import com.yeshi.fanli.util.email.MailSenderUtil;
+import com.yeshi.fanli.util.factory.AccountDetailsFactory;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
 import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
 import com.yeshi.fanli.util.wx.WXLoginUtil;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 
 @Controller
 @RequestMapping("api/v1/customer")
@@ -150,8 +152,6 @@
 	@Resource
 	private OrderItemServcie orderItemServcie;
 
-	@Resource
-	private AccountDetailsService accountDetailsService;
 
 	@Resource
 	private AccountMessageService accountMessageService;
@@ -179,6 +179,9 @@
 
 	@Resource
 	private AdminUserService adminUserService;
+
+	@Resource
+	private UserMoneyDetailService userMoneyDetailService;
 
 	private static final String PASSWORD_MAX_ERROR = "password_max_error";
 	private static final String EXTRACT_MIN_MONEY = "extract_min_money";
@@ -1518,17 +1521,15 @@
 				Constant.PAGE_SIZE);
 
 		List<TaoBaoGoodsBriefExtra> list = new ArrayList<TaoBaoGoodsBriefExtra>();
-		
-		
+
 		long count = collectionGoodsV2Service.getCollectionGoodsCount(uid);
 		JSONObject data = new JSONObject();
-	
-		
+
 		List<TaoBaoGoodsBrief> listTaoKeGoods = new ArrayList<TaoBaoGoodsBrief>();
 		if (collectionGoodsList != null && collectionGoodsList.size() > 0) {
-			
+
 			BigDecimal proportion = hongBaoManageService.getFanLiRate();
-			
+
 			List<Long> listGid = new ArrayList<Long>();
 			for (CollectionGoodsV2 collectionGoodsV2 : collectionGoodsList) {
 				CommonGoods commonGoods = collectionGoodsV2.getCommonGoods();
@@ -1537,7 +1538,7 @@
 				}
 				listGid.add(commonGoods.getGoodsId());
 			}
-			
+
 			try {
 				// API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭
 				listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
@@ -1548,17 +1549,17 @@
 			} catch (Exception e) {
 				e.printStackTrace();
 			}
-			
+
 			for (CollectionGoodsV2 collectionGoodsV2 : collectionGoodsList) {
 				CommonGoods commonGoods = collectionGoodsV2.getCommonGoods();
 				if (commonGoods == null) {
 					continue;
 				}
-				
-				if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 ) {
-					int state = 1;  // 榛樿鍋滃敭
+
+				if (listTaoKeGoods != null && listTaoKeGoods.size() > 0) {
+					int state = 1; // 榛樿鍋滃敭
 					Long goodsId = commonGoods.getGoodsId();
-					for (TaoBaoGoodsBrief taoKeGoods: listTaoKeGoods) {
+					for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
 						Long auctionId = taoKeGoods.getAuctionId();
 						if (goodsId == auctionId || goodsId.equals(auctionId)) {
 							state = 0; // 鍦ㄥ敭
@@ -1567,18 +1568,18 @@
 					}
 					commonGoods.setState(state);
 				}
-				
+
 				TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
 				goodsBrief.setSalesCount(TaoBaoUtil.getSaleCount(goodsBrief.getBiz30day()));
 				TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief,
 						proportion.toString(), "");
 				taoBaoGoodsBriefExtra.setCreatetime(collectionGoodsV2.getCreateTime());
-				
+
 				list.add(taoBaoGoodsBriefExtra);
 			}
-			
+
 		}
-		
+
 		GsonBuilder builder = new GsonBuilder().registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
 			@Override
 			public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
@@ -1640,8 +1641,11 @@
 
 	@RequestMapping("findAccountDetailsList")
 	public void findAccountDetailsList(AcceptData acceptData, long uid, int page, PrintWriter out) {
-		List<AccountDetails> list = accountDetailsService.findAccountDetailsList(uid, page);
-		int count = accountDetailsService.getCount(uid);
+		List<UserMoneyDetail> detailList = userMoneyDetailService.listByUidWithState(uid, page, Constant.PAGE_SIZE);
+		List<AccountDetails> list = new ArrayList<>();
+		for (UserMoneyDetail detail : detailList)
+			list.add(AccountDetailsFactory.create(detail));
+		long count = userMoneyDetailService.countByUidWithState(uid);
 		JSONObject data = new JSONObject();
 		data.put("list", GsonUtil.toJsonExpose(list));
 		data.put("count", count);
@@ -1649,9 +1653,21 @@
 	}
 
 	@RequestMapping("findAccountDetailsListV2")
-	public void findAccountDetailsListNew(AcceptData acceptData, long uid, int page, PrintWriter out) {
-		List<AccountDetails> list = accountDetailsService.findAccountDetailsListWithState(uid, page);
-		long count = accountDetailsService.getCountWithState(uid);
+	public void findAccountDetailsListNew(AcceptData acceptData, Long uid, int page, PrintWriter out) {
+
+		if (uid == null) {
+			out.print(JsonUtil.loadFalseResult(1, "UID涓虹┖"));
+			return;
+		}
+
+		List<UserMoneyDetail> detailList = userMoneyDetailService.listByUidWithState(uid, page, Constant.PAGE_SIZE);
+
+		List<AccountDetails> list = new ArrayList<>();
+		for (UserMoneyDetail detail : detailList)
+			list.add(AccountDetailsFactory.create(detail));
+
+		long count = userMoneyDetailService.countByUidWithState(uid);
+
 		JSONObject data = new JSONObject();
 		JSONArray array = new JSONArray();
 		for (AccountDetails ad : list) {
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java
index 14b3d61..6f42de3 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java
@@ -3,6 +3,7 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.lang.reflect.Type;
+import java.math.BigDecimal;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
@@ -23,11 +24,14 @@
 import com.google.gson.stream.JsonReader;
 import com.google.gson.stream.JsonWriter;
 import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.money.UserMoneyDetail;
 import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
 import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
+import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.vo.money.UserMoneyDetailHistoryVO;
+import com.yeshi.fanli.vo.money.UserMoneyStatisticVO;
 
 import net.sf.json.JSONObject;
 
@@ -82,8 +86,7 @@
 
 		List<UserMoneyDetailHistoryVO> list = userMoneyDetailService.listUserMoneyDetailForClient(uid, index, date);
 		long count = userMoneyDetailService.countUserMoneyDetailForClient(uid, index, date);
-		GsonBuilder gsonBuilder = JsonUtil.getConvertBigDecimalToStringBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation();
+		GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
 		gsonBuilder.registerTypeAdapter(UserMoneyDetailTypeEnum.class, new TypeAdapter<UserMoneyDetailTypeEnum>() {
 			@Override
 			public UserMoneyDetailTypeEnum read(JsonReader arg0) throws IOException {
@@ -107,6 +110,15 @@
 					return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm"));
 				}
 			}
+		}).registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
+			@Override
+			public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
+				if (value == null) {
+					return new JsonPrimitive("");
+				} else {
+					return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value).toString());
+				}
+			}
 		});
 
 		Gson gson = gsonBuilder.create();
@@ -117,4 +129,24 @@
 		out.print(JsonUtil.loadTrueResult(data));
 	}
 
+	@RequestMapping(value = "getUserMoneyStatistic")
+	public void getUserMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) {
+		if (uid == null || uid == 0) {
+			out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�"));
+			return;
+		}
+		UserMoneyStatisticVO vo = new UserMoneyStatisticVO();
+		vo.setBalanceMoney(new BigDecimal("0.02"));
+		vo.setLastMonthExtractMoney(new BigDecimal("0.03"));
+		vo.setLastMonthRecievedMoney(new BigDecimal("0.04"));
+		vo.setLatestThreeMonthRecievedMoney(new BigDecimal("0.05"));
+		vo.setMonthExtractMoney(new BigDecimal("0.06"));
+		vo.setMonthRecievedMoney(new BigDecimal("0.07"));
+		vo.setTotalInviteMoney(new BigDecimal("0.08"));
+		vo.setTotalRecievedMoney(new BigDecimal("0.09"));
+		vo.setTotalShareMoney(new BigDecimal("0.10"));
+		Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create();
+		out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
+	}
+
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/h5/H5StrategyPictureController.java b/fanli/src/main/java/com/yeshi/fanli/controller/h5/H5StrategyPictureController.java
index 927aa11..3109545 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/h5/H5StrategyPictureController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/h5/H5StrategyPictureController.java
@@ -1,6 +1,7 @@
 package com.yeshi.fanli.controller.h5;
 
 import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.annotation.Resource;
@@ -11,7 +12,9 @@
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import com.yeshi.fanli.entity.accept.AcceptData;
 import com.yeshi.fanli.entity.xcx.StrategyPicture;
+import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.user.StrategyPictureService;
 import com.yeshi.fanli.util.StringUtil;
 import org.yeshi.utils.JsonUtil;
@@ -24,6 +27,9 @@
 
 	@Resource
 	private StrategyPictureService strategtPictureService;
+
+	@Resource
+	private ConfigService configService;
 
 	/**
 	 * 
@@ -56,12 +62,23 @@
 	}
 
 	@RequestMapping(value = "getStrategyPictureList")
-	public void strategyPicture(String callback, PrintWriter out) {
+	public void strategyPicture(String callback, AcceptData acceptData, PrintWriter out) {
 		List<StrategyPicture> list = strategtPictureService.getStrategyPictureListCache();
 		Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
-		if (StringUtil.isNullOrEmpty(callback))
-			out.print(JsonUtil.loadTrueResult(gson.toJson(list)));
-		else
+		if (StringUtil.isNullOrEmpty(callback)) {
+			List<StrategyPicture> newList = new ArrayList<StrategyPicture>();
+			newList.addAll(list);
+			if (acceptData != null && "ios".equalsIgnoreCase(acceptData.getPlatform())
+					&& !StringUtil.isNullOrEmpty(acceptData.getVersion())
+					&& configService.iosOnLining(Integer.parseInt(acceptData.getVersion())))
+				for (int i = 0; i < newList.size(); i++) {
+					if (newList.get(i).getTitle().contains("璧氶挶")) {
+						newList.remove(i);
+						i--;
+					}
+				}
+			out.print(JsonUtil.loadTrueResult(gson.toJson(newList)));
+		} else
 			out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(gson.toJson(list))));
 	}
 
diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/hongbao/HongBaoMapper.java b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/hongbao/HongBaoMapper.java
index 8179659..0b7ce24 100644
--- a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/hongbao/HongBaoMapper.java
+++ b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/hongbao/HongBaoMapper.java
@@ -1,6 +1,7 @@
 package com.yeshi.fanli.dao.mybatis.hongbao;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
@@ -251,4 +252,16 @@
 	List<HongBao> listShareAndInviteMoney(@Param("start") long start, @Param("count") int count,
 			@Param("date") String date);
 
+	/**
+	 * 缁熻鐢ㄦ埛绾㈠寘鏁伴噺
+	 * @param uid
+	 * @param type
+	 * @param state
+	 * @param minTime
+	 * @param maxTime
+	 * @return
+	 */
+	long selectCountByTypeAndStateAndCreateTime(@Param("uid") Long uid, @Param("type") List<Integer> type,
+			@Param("state") List<Integer> state, @Param("minTime") Date minTime, @Param("maxTime") Date maxTime);
+
 }
\ No newline at end of file
diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/money/UserMoneyDetailMapper.java b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/money/UserMoneyDetailMapper.java
index 4e8a4c5..0ba91ce 100644
--- a/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/money/UserMoneyDetailMapper.java
+++ b/fanli/src/main/java/com/yeshi/fanli/dao/mybatis/money/UserMoneyDetailMapper.java
@@ -36,7 +36,8 @@
 	 * @param date
 	 * @return
 	 */
-	List<UserMoneyDetail> selectByMaxCreateTime(@Param("uid") Long uid, @Param("date") Date date,@Param("count") int count);
+	List<UserMoneyDetail> selectByMaxCreateTime(@Param("uid") Long uid, @Param("date") Date date,
+			@Param("count") int count);
 
 	/**
 	 * 鎸夋渶澶х殑鍒涘缓鏃堕棿鍜岀敤鎴稩D妫�绱㈡暟閲�
@@ -64,5 +65,17 @@
 	 * @return
 	 */
 	List<UserMonthMoneyVO> selectMonthMoneyByUid(@Param("uid") Long uid, @Param("dateFormat") List<String> dateFormat);
+	
+	/**
+	 * 鏍规嵁鐢ㄦ埛ID鑾峰彇璧勯噾鏄庣粏锛堣�佺増锛�
+	 * @param uid
+	 * @param start
+	 * @param count
+	 * @return
+	 */
+
+	List<UserMoneyDetail> selectByUidWithState(@Param("uid")Long uid,@Param("start") long start, @Param("count")int count);
+	
+	Long selectCountByUidWithState(@Param("uid")Long uid);
 
 }
\ No newline at end of file
diff --git a/fanli/src/main/java/com/yeshi/fanli/entity/money/UserMoneyDetail.java b/fanli/src/main/java/com/yeshi/fanli/entity/money/UserMoneyDetail.java
index 67186b5..1e5d45c 100644
--- a/fanli/src/main/java/com/yeshi/fanli/entity/money/UserMoneyDetail.java
+++ b/fanli/src/main/java/com/yeshi/fanli/entity/money/UserMoneyDetail.java
@@ -79,6 +79,16 @@
 	private Date createTime;
 	@Column(name = "umd_updatetime")
 	private Date updateTime;
+	
+	private Integer state;//鑰佺増鏄庣粏閫傜敤璇ュ瓧娈�
+
+	public Integer getState() {
+		return state;
+	}
+
+	public void setState(Integer state) {
+		this.state = state;
+	}
 
 	public Long getId() {
 		return id;
diff --git a/fanli/src/main/java/com/yeshi/fanli/mapping/AccountDetailsMapper.xml b/fanli/src/main/java/com/yeshi/fanli/mapping/AccountDetailsMapper.xml
index 5be1751..2248bcf 100644
--- a/fanli/src/main/java/com/yeshi/fanli/mapping/AccountDetailsMapper.xml
+++ b/fanli/src/main/java/com/yeshi/fanli/mapping/AccountDetailsMapper.xml
@@ -55,6 +55,8 @@
 		)) a ORDER BY a.createTime DESC limit #{start},#{count}
 
 	</select>
+	
+	
 	<select id="selectCountByUidWithState" resultType="java.lang.Long"
 		parameterType="java.lang.Long">
 
@@ -78,8 +80,6 @@
 		d.type=1
 		)) a ORDER BY
 		a.createTime DESC
-
-
 	</select>
 
 
diff --git a/fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoMapper.xml b/fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoMapper.xml
index d3b8e96..9e22618 100644
--- a/fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoMapper.xml
+++ b/fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoMapper.xml
@@ -238,7 +238,8 @@
 		parameterType="java.lang.Long">
 		SELECT
 		count(*) FROM `yeshi_ec_hongbao` h
-		WHERE h.`uid`=#{0} AND (h.`type`=20 OR h.`type`=21 OR h.`type`=22 OR
+		WHERE
+		h.`uid`=#{0} AND (h.`type`=20 OR h.`type`=21 OR h.`type`=22 OR
 		h.`type`=6 OR h.`type`=7)
 	</select>
 
@@ -438,12 +439,13 @@
 		COALESCE(count(id),0) FROM `yeshi_ec_hongbao`
 		WHERE uid =#{uid}
 	</select>
-	
-	
+
+
 	<select id="getCountByUidAndState" resultType="java.lang.Integer">
 		SELECT
 		COALESCE(count(id),0) FROM `yeshi_ec_hongbao`
-		WHERE uid =#{uid} and state=#{state}
+		WHERE uid =#{uid} and
+		state=#{state}
 	</select>
 
 	<select id="getCountByUidOrder" resultType="java.lang.Long">
@@ -539,13 +541,37 @@
 		SELECT IFNULL(SUM(h.`money`),0) as ShareAndInviteMoney,
 		<include refid="Base_Column_List" />
 		FROM `yeshi_ec_hongbao` h
-		WHERE DATE_FORMAT(FROM_UNIXTIME(h.`createtime`/1000), '%Y-%m-%d' )= #{date}
+		WHERE
+		DATE_FORMAT(FROM_UNIXTIME(h.`createtime`/1000), '%Y-%m-%d' )= #{date}
 		<![CDATA[AND h.state <>4]]>
 		AND ( h.`type` =5 OR h.`type` =6 OR h.`type` =7 OR h.`type` =20 OR
 		h.`type` =21 OR h.`type` =22 )
 		GROUP BY h.`uid`
-		ORDER BY SUM(h.`money`) DESC
+		ORDER BY SUM(h.`money`)
+		DESC
 		LIMIT ${start},${count}
 	</select>
 
+
+	<select id="selectCountByTypeAndStateAndCreateTime" resultType="java.lang.Long">
+		SELECT COUNT(h.`id`) FROM yeshi_ec_hongbao h WHERE uid=#{uid}
+		<foreach  collection="type" item="itemType" open="and (" separator=" or "
+			close=")">
+			h.`type`=#{itemType}
+		</foreach>
+		
+		
+		<foreach collection="state" item="itemState" open="and (" separator=" or "
+			close=")">
+			h.`state`=#{itemState}
+		</foreach>
+
+		AND FROM_UNIXTIME( h.`createtime`/1000)>=#{minTime} AND FROM_UNIXTIME(
+		h.`createtime`/1000)
+		<![CDATA[
+		<
+		]]>
+		#{maxTime};
+	</select>
+
 </mapper>
diff --git a/fanli/src/main/java/com/yeshi/fanli/mapping/money/UserMoneyDetailMapper.xml b/fanli/src/main/java/com/yeshi/fanli/mapping/money/UserMoneyDetailMapper.xml
index 07aaa6c..d47d404 100644
--- a/fanli/src/main/java/com/yeshi/fanli/mapping/money/UserMoneyDetailMapper.xml
+++ b/fanli/src/main/java/com/yeshi/fanli/mapping/money/UserMoneyDetailMapper.xml
@@ -17,6 +17,8 @@
 		<result column="umd_beizhu" property="beiZhu" jdbcType="VARCHAR" />
 		<result column="umd_createtime" property="createTime" jdbcType="TIMESTAMP" />
 		<result column="umd_updatetime" property="updateTime" jdbcType="TIMESTAMP" />
+		<!-- 鑰佺増鏄庣粏閫傜敤璇ュ瓧娈�  -->
+		<result column="state" property="state" jdbcType="INTEGER" />
 		<association property="userInfo" column="umd_uid"
 			javaType="com.yeshi.fanli.entity.bus.user.UserInfo">
 			<id column="umd_uid" property="id" jdbcType="BIGINT" />
@@ -91,19 +93,24 @@
 	</select>
 
 	<select id="selectMonthMoneyByUid" resultMap="UserMonthMoneyMap">
-		<foreach collection="dateFormat" index="index" item="item"  separator="UNION ALL"  >
-			<trim prefix="(" suffix=")" >
+		<foreach collection="dateFormat" index="index" item="item"
+			separator="UNION ALL">
+			<trim prefix="(" suffix=")">
 				SELECT
-				a.time as dateFormate , if(a.money is null,0,a.money) as income ,if(b.money is null,0,b.money) as expend
+				a.time as dateFormate , if(a.money is null,0,a.money) as
+				income ,if(b.money is null,0,b.money) as expend
 				FROM
 				(
-				SELECT DATE_FORMAT(
+				SELECT
+				DATE_FORMAT(
 				d.`umd_createtime`,'%Y-%m') AS
-				`time`,SUM(d.`umd_money`) AS money
+				`time`,SUM(d.`umd_money`)
+				AS money
 				FROM
 				`yeshi_ec_user_money_detail`
 				d
-				WHERE d.`umd_uid`=#{uid} AND
+				WHERE d.`umd_uid`=#{uid}
+				AND
 				d.`umd_money`>=0 AND DATE_FORMAT(
 				d.`umd_createtime`,'%Y-%m')=#{item} GROUP BY DATE_FORMAT(
 				d.`umd_createtime`,'%Y-%m')
@@ -127,6 +134,71 @@
 	</select>
 
 
+	<select id="selectByUidWithState" resultMap="BaseResultMap">
+		SELECT a.* FROM
+		((SELECT d.*,-1 AS state FROM
+		`yeshi_ec_user_money_detail` d
+		WHERE
+		d.`umd_uid`=#{uid} AND (d.`umd_type`!='extract' AND
+		d.`umd_type`!='extractReject')
+		)
+		UNION ALL(
+		SELECT d.*,-1 AS
+		state
+		FROM
+		`yeshi_ec_user_money_detail` d LEFT JOIN
+		`yeshi_ec_extract` e
+		ON
+		e.`id`=d.umd_source_identify_id WHERE d.`umd_uid`=#{uid} AND
+		d.umd_type='extractReject'
+		)
+		UNION ALL(
+		SELECT
+		d.*,e.state FROM
+		`yeshi_ec_user_money_detail` d LEFT JOIN
+		`yeshi_ec_extract` e ON
+		e.`id`=d.`umd_source_identify_id` WHERE d.`umd_uid`=#{uid} AND
+		d.umd_type='extract'
+		)) a ORDER BY a.umd_createtime DESC LIMIT
+		#{start},#{count}
+
+	</select>
+
+
+	<select id="selectCountByUidWithState" resultType="java.lang.Long">
+		SELECT
+		count(*) FROM
+		((SELECT d.*,-1 AS state FROM
+		`yeshi_ec_user_money_detail` d
+		WHERE
+		d.`umd_uid`=#{uid} AND
+		(d.`umd_type`!='extract' AND d.`umd_type`!='extractReject')
+		)
+		UNION ALL(
+		SELECT d.*,-1 AS
+		state
+		FROM `yeshi_ec_user_money_detail` d LEFT JOIN
+		`yeshi_ec_extract` e
+		ON
+		e.`id`=d.umd_source_identify_id WHERE
+		d.`umd_uid`=#{uid} AND
+		d.umd_type='extractReject'
+		)
+		UNION ALL(
+		SELECT
+		d.*,e.state FROM `yeshi_ec_user_money_detail` d LEFT JOIN
+		`yeshi_ec_extract` e ON e.`id`=d.`umd_source_identify_id` WHERE
+		d.`umd_uid`=#{uid} AND
+		d.umd_type='extract'
+		)) a
+
+	</select>
+
+
+
+
+
+
 
 
 
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java
index 47776f8..fc00d36 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/config/ConfigServiceImpl.java
@@ -35,42 +35,41 @@
 
 	@Override
 	public List<Config> listObjects(String key, int page) {
-		int start = (page-1) * Constant.PAGE_SIZE;
-		StringBuffer hqlBuf=new StringBuffer("from Config pr where 1=1 ");
-		
-		if(key !=null && !"".equals(key.trim())){
+		int start = (page - 1) * Constant.PAGE_SIZE;
+		StringBuffer hqlBuf = new StringBuffer("from Config pr where 1=1 ");
+
+		if (key != null && !"".equals(key.trim())) {
 			hqlBuf.append(" and (pr.name like ? )");
 		}
-	
+
 		hqlBuf.append(" order by pr.id desc ");
 		String hql = hqlBuf.toString();
-		if(hql.contains("pr.name")){
-			return configDao.list(hqlBuf.toString(), start, Constant.PAGE_SIZE, new Serializable[]{"%"+key+"%"});
+		if (hql.contains("pr.name")) {
+			return configDao.list(hqlBuf.toString(), start, Constant.PAGE_SIZE, new Serializable[] { "%" + key + "%" });
 		} else {
-			return configDao.list(hqlBuf.toString(), start, Constant.PAGE_SIZE, new Serializable[]{});
+			return configDao.list(hqlBuf.toString(), start, Constant.PAGE_SIZE, new Serializable[] {});
 		}
-		
+
 	}
-	
+
 	@Override
 	public int getCount(String key, int page) {
-		
-		StringBuffer hqlBuf=new StringBuffer("select count(*) from Config pr where 1=1 ");
-		
-		if(key !=null && !"".equals(key.trim())){
+
+		StringBuffer hqlBuf = new StringBuffer("select count(*) from Config pr where 1=1 ");
+
+		if (key != null && !"".equals(key.trim())) {
 			hqlBuf.append(" and (pr.name like ? )");
 		}
-	
+
 		String hql = hqlBuf.toString();
-		
-		if(hql.contains("pr.name")){
-			return (int) configDao.getCount(hqlBuf.toString(),new Serializable[]{"%"+key+"%"});
+
+		if (hql.contains("pr.name")) {
+			return (int) configDao.getCount(hqlBuf.toString(), new Serializable[] { "%" + key + "%" });
 		} else {
-			return (int) configDao.getCount(hqlBuf.toString(), new Serializable[]{});
+			return (int) configDao.getCount(hqlBuf.toString(), new Serializable[] {});
 		}
 	}
 
-	
 	@CacheEvict(value = "config", allEntries = true)
 	@Transactional
 	public void update(List<Config> list) {
@@ -142,6 +141,8 @@
 	@Override
 	public String getH5Host() {
 		String value = get("h5_url");
+		String[] sts = value.split(",");
+		value = sts[(int) (sts.length * Math.random())];
 		return value.trim();
 	}
 
@@ -186,10 +187,10 @@
 		String value = get("home_weex_url");
 		return value;
 	}
-	
+
 	@Override
 	public Config getConfig(long id) {
 		return configDao.find(Config.class, id);
 	}
-	
+
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java
index deda80a..c139422 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserMoneyDetailServiceImpl.java
@@ -161,4 +161,14 @@
 		return monthCount + detailCount;
 	}
 
+	@Override
+	public List<UserMoneyDetail> listByUidWithState(Long uid, int page, int pageSize) {
+		return userMoneyDetailMapper.selectByUidWithState(uid, (page - 1) * pageSize, pageSize);
+	}
+
+	@Override
+	public long countByUidWithState(Long uid) {
+		return userMoneyDetailMapper.selectCountByUidWithState(uid);
+	}
+
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserMoneyDetailService.java b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserMoneyDetailService.java
index c7d7035..c885181 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserMoneyDetailService.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserMoneyDetailService.java
@@ -3,6 +3,7 @@
 import java.util.Date;
 import java.util.List;
 
+import com.yeshi.fanli.entity.money.UserMoneyDetail;
 import com.yeshi.fanli.vo.money.UserMoneyDetailHistoryVO;
 
 /**
@@ -33,4 +34,21 @@
 	 */
 	public long countUserMoneyDetailForClient(Long uid, Long userMoneyDetailId, Date maxTime);
 
+	/**
+	 * 璧勯噾鏄庣粏璇︽儏鍒楄〃锛堣�佺増鏈級
+	 * @param uid
+	 * @param page
+	 * @param pageSize
+	 * @return
+	 */
+
+	public List<UserMoneyDetail> listByUidWithState(Long uid, int page, int pageSize);
+
+	/**
+	 * 璧勯噾鏄庣粏璇︽儏鎬绘暟锛堣�佺増鏈級
+	 * @param uid
+	 * @return
+	 */
+	public long countByUidWithState(Long uid);
+
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/util/factory/AccountDetailsFactory.java b/fanli/src/main/java/com/yeshi/fanli/util/factory/AccountDetailsFactory.java
index 8abaea4..98e573b 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/factory/AccountDetailsFactory.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/factory/AccountDetailsFactory.java
@@ -1,5 +1,6 @@
 package com.yeshi.fanli.util.factory;
 
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -8,56 +9,60 @@
 import com.yeshi.fanli.entity.bus.user.HongBao;
 import com.yeshi.fanli.entity.bus.user.OrderItem;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.money.UserMoneyDetail;
+import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
 import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.TimeUtil;
 
 public class AccountDetailsFactory {
-	
-	private static final Map<Integer,String> map = new HashMap<Integer,String>();
+
+	private static final Map<Integer, String> map = new HashMap<Integer, String>();
 	/**
 	 * 鎻愮幇
 	 */
-	public static final int TIXIAN=1;
+	public static final int TIXIAN = 1;
 	/**
 	 * 杩斿埄
 	 */
-	public static final int FANLI=2;
+	public static final int FANLI = 2;
 	/**
 	 * 鍒嗛攢鎻愭垚
 	 */
-	public static final int TICHENG=3;
+	public static final int TICHENG = 3;
 	/**
 	 * 閫�娆�
 	 */
-	public static final int TUIKUAN=4;
+	public static final int TUIKUAN = 4;
 	/**
 	 * 鏂颁汉绾㈠寘
 	 */
-	public static final int XINREN=5;
+	public static final int XINREN = 5;
 	/**
 	 * 鍥炴锛堟彁鐜板け璐ユ椂锛�
 	 */
-	public static final int HUIKUAN=6;
+	public static final int HUIKUAN = 6;
 	/**
 	 * 鍏朵粬
 	 */
-	public static final int QITA=7;
-	
+	public static final int QITA = 7;
+
 	/**
 	 * 鍟嗗搧鍒嗛攢
 	 */
-	public static final int SHARE_GOODS=8;
-	
-	//鍟嗗搧鍒嗛攢缁存潈
-	public static final int SHARE_GOODS_DRAWBACK=9;
-	
+	public static final int SHARE_GOODS = 8;
+
+	// 鍟嗗搧鍒嗛攢缁存潈
+	public static final int SHARE_GOODS_DRAWBACK = 9;
+
 	/**
 	 * 
 	 */
-	public static final int VALID_ALIPAY_ACCOUNT=10;
-	
-	
-	static{
+	public static final int VALID_ALIPAY_ACCOUNT = 10;
+
+	public static final int XINREN_DEDUCT = 11;
+
+	static {
 		map.put(TIXIAN, "鎻愮幇");
 		map.put(FANLI, "璁㈠崟杩斿埄");
 		map.put(TICHENG, "濂栭噾鏀跺叆");
@@ -68,9 +73,11 @@
 		map.put(SHARE_GOODS, "鎻愭垚鏀跺叆");
 		map.put(SHARE_GOODS_DRAWBACK, "鍞悗璁㈠崟鎵f");
 		map.put(VALID_ALIPAY_ACCOUNT, "鏀粯瀹濊处鍙烽獙璇佹墦娆�");
+		map.put(XINREN_DEDUCT, "鏂颁汉绾㈠寘鎵i櫎");
 	}
-	
-	public static AccountDetails create(String money,int type,OrderItem orderItem,Extract extract,UserInfo userInfo){
+
+	public static AccountDetails create(String money, int type, OrderItem orderItem, Extract extract,
+			UserInfo userInfo) {
 		AccountDetails ad = new AccountDetails();
 		ad.setCreateTime(TimeUtil.getWholeTime(System.currentTimeMillis()));
 		ad.setExtract(extract);
@@ -85,15 +92,58 @@
 
 	public static AccountDetails create(HongBao hb, OrderItem orderItem) {
 		int type = hb.getType();
-		if(type==Constant.TAOBAO){
-			return create("+"+hb.getMoney(), FANLI, orderItem, null, hb.getUserInfo());
-		}else if(type == Constant.ONESALE || type==Constant.TAOBAO){
-			return create("+"+hb.getMoney(), TICHENG, null, null, hb.getUserInfo());
-		}else if(type==Constant.HB_NEWUSER){
-			return create("+"+hb.getMoney(),XINREN,null,null,hb.getUserInfo());
+		if (type == Constant.TAOBAO) {
+			return create("+" + hb.getMoney(), FANLI, orderItem, null, hb.getUserInfo());
+		} else if (type == Constant.ONESALE || type == Constant.TAOBAO) {
+			return create("+" + hb.getMoney(), TICHENG, null, null, hb.getUserInfo());
+		} else if (type == Constant.HB_NEWUSER) {
+			return create("+" + hb.getMoney(), XINREN, null, null, hb.getUserInfo());
 		}
 		return null;
 	}
-	
-	
+
+	public static AccountDetails create(UserMoneyDetail userMoneyDetail) {
+		AccountDetails accountDetails = new AccountDetails(userMoneyDetail.getId());
+		accountDetails.setCreateTime(
+				TimeUtil.getGernalTime(userMoneyDetail.getCreateTime().getTime(), "yyyy-MM-dd HH:mm:ss"));
+		if (userMoneyDetail.getMoney().compareTo(new BigDecimal("0")) >= 0)
+			accountDetails.setMoney("+" + MoneyBigDecimalUtil.getWithNoZera(userMoneyDetail.getMoney()));
+		else
+			accountDetails.setMoney( MoneyBigDecimalUtil.getWithNoZera(userMoneyDetail.getMoney()) + "");
+		accountDetails.setState(userMoneyDetail.getState());
+
+		String typeName = userMoneyDetail.getType().name();
+		if (UserMoneyDetailTypeEnum.extract.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(TIXIAN);
+		else if (UserMoneyDetailTypeEnum.extractReject.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(HUIKUAN);
+		else if (UserMoneyDetailTypeEnum.extractVerify.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(VALID_ALIPAY_ACCOUNT);
+		else if (UserMoneyDetailTypeEnum.fanli.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.FANLI);
+		else if (UserMoneyDetailTypeEnum.fanliWeiQuan.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.TUIKUAN);
+		else if (UserMoneyDetailTypeEnum.hongbao.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.XINREN);
+		else if (UserMoneyDetailTypeEnum.hongbaoDeduct.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.XINREN_DEDUCT);
+		else if (UserMoneyDetailTypeEnum.invite.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.SHARE_GOODS);
+		else if (UserMoneyDetailTypeEnum.inviteAndShare.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.SHARE_GOODS);
+		else if (UserMoneyDetailTypeEnum.inviteWeiQuan.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.TUIKUAN);
+		else if (UserMoneyDetailTypeEnum.share.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.SHARE_GOODS);
+		else if (UserMoneyDetailTypeEnum.shareWeiQuan.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.TUIKUAN);
+		else if (UserMoneyDetailTypeEnum.weiQuan.name().equalsIgnoreCase(typeName))
+			accountDetails.setType(AccountDetailsFactory.TUIKUAN);
+		else
+			accountDetails.setType(AccountDetailsFactory.QITA);
+		accountDetails.setTitle(map.get(accountDetails.getType()));
+		accountDetails.setUserInfo(userMoneyDetail.getUserInfo());
+		return accountDetails;
+	}
+
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/vo/money/UserMoneyStatisticVO.java b/fanli/src/main/java/com/yeshi/fanli/vo/money/UserMoneyStatisticVO.java
new file mode 100644
index 0000000..b84ee76
--- /dev/null
+++ b/fanli/src/main/java/com/yeshi/fanli/vo/money/UserMoneyStatisticVO.java
@@ -0,0 +1,87 @@
+package com.yeshi.fanli.vo.money;
+
+import java.math.BigDecimal;
+
+public class UserMoneyStatisticVO {
+	private BigDecimal balanceMoney;// 璐︽埛浣欓
+	private BigDecimal monthRecievedMoney;// 鏈湀鍒拌处
+	private BigDecimal monthExtractMoney;// 鏈湀鎻愮幇
+	private BigDecimal lastMonthRecievedMoney;// 涓婃湀鍒拌处
+	private BigDecimal lastMonthExtractMoney;// 涓婃湀鎻愮幇
+	private BigDecimal latestThreeMonthRecievedMoney;// 杩戜笁鏈堝埌璐�
+	private BigDecimal totalRecievedMoney;// 绱鍒拌处
+	private BigDecimal totalShareMoney;// 绱鍒嗕韩濂栭噾
+	private BigDecimal totalInviteMoney;// 绱閭�璇峰閲�
+
+	public BigDecimal getBalanceMoney() {
+		return balanceMoney;
+	}
+
+	public void setBalanceMoney(BigDecimal balanceMoney) {
+		this.balanceMoney = balanceMoney;
+	}
+
+	public BigDecimal getMonthRecievedMoney() {
+		return monthRecievedMoney;
+	}
+
+	public void setMonthRecievedMoney(BigDecimal monthRecievedMoney) {
+		this.monthRecievedMoney = monthRecievedMoney;
+	}
+
+	public BigDecimal getMonthExtractMoney() {
+		return monthExtractMoney;
+	}
+
+	public void setMonthExtractMoney(BigDecimal monthExtractMoney) {
+		this.monthExtractMoney = monthExtractMoney;
+	}
+
+	public BigDecimal getLastMonthRecievedMoney() {
+		return lastMonthRecievedMoney;
+	}
+
+	public void setLastMonthRecievedMoney(BigDecimal lastMonthRecievedMoney) {
+		this.lastMonthRecievedMoney = lastMonthRecievedMoney;
+	}
+
+	public BigDecimal getLastMonthExtractMoney() {
+		return lastMonthExtractMoney;
+	}
+
+	public void setLastMonthExtractMoney(BigDecimal lastMonthExtractMoney) {
+		this.lastMonthExtractMoney = lastMonthExtractMoney;
+	}
+
+	public BigDecimal getLatestThreeMonthRecievedMoney() {
+		return latestThreeMonthRecievedMoney;
+	}
+
+	public void setLatestThreeMonthRecievedMoney(BigDecimal latestThreeMonthRecievedMoney) {
+		this.latestThreeMonthRecievedMoney = latestThreeMonthRecievedMoney;
+	}
+
+	public BigDecimal getTotalRecievedMoney() {
+		return totalRecievedMoney;
+	}
+
+	public void setTotalRecievedMoney(BigDecimal totalRecievedMoney) {
+		this.totalRecievedMoney = totalRecievedMoney;
+	}
+
+	public BigDecimal getTotalShareMoney() {
+		return totalShareMoney;
+	}
+
+	public void setTotalShareMoney(BigDecimal totalShareMoney) {
+		this.totalShareMoney = totalShareMoney;
+	}
+
+	public BigDecimal getTotalInviteMoney() {
+		return totalInviteMoney;
+	}
+
+	public void setTotalInviteMoney(BigDecimal totalInviteMoney) {
+		this.totalInviteMoney = totalInviteMoney;
+	}
+}

--
Gitblit v1.8.0