fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java
@@ -225,6 +225,18 @@ * @return */ List<ThreeSale> getValidWorkerIdsByTime(@Param("uid") Long uid,@Param("limitTime") long limitTime); /** * 查询所有列表 * @Title: listAll * @Description: * @param start * @param count * @return * List<ThreeSale> 返回类型 * @throws */ List<ThreeSale> listAll(@Param("start")long start,@Param("count")int count); } fanli/src/main/java/com/yeshi/fanli/dao/user/invite/ThreeSaleDetailDao.java
New file @@ -0,0 +1,71 @@ package com.yeshi.fanli.dao.user.invite; import java.util.List; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Repository; import com.yeshi.fanli.dao.MongodbBaseDao; import com.yeshi.fanli.entity.bus.user.ThreeSaleDetail; @Repository public class ThreeSaleDetailDao extends MongodbBaseDao<ThreeSaleDetail> { /** * 根据上级ID与队员层级查询队员 * @Title: listByBossUidAndLevel * @Description: * @param bossUid * @param level * @param start * @param count * @return * List<ThreeSaleDetail> 返回类型 * @throws */ public List<ThreeSaleDetail> listByBossUidAndLevel(Long bossUid, int level, int start, int count) { Query query = new Query(); query.skip(start); query.limit(count); query.addCriteria( new Criteria().andOperator(Criteria.where("bossUid").is(bossUid), Criteria.where("level").is(level))); return findList(query); } public long countByBossUidAndLevel(Long bossUid, int level) { Query query = new Query(); query.addCriteria( new Criteria().andOperator(Criteria.where("bossUid").is(bossUid), Criteria.where("level").is(level))); return count(query); } /** * 根据上级ID与最小队员层级查询队员 * @Title: listByBossUidAndMinLevel * @Description: * @param bossUid * @param minLevel * @param start * @param count * @return * List<ThreeSaleDetail> 返回类型 * @throws */ public List<ThreeSaleDetail> listByBossUidAndMinLevel(Long bossUid, int minLevel, int start, int count) { Query query = new Query(); query.skip(start); query.limit(count); query.addCriteria(new Criteria().andOperator(Criteria.where("bossUid").is(bossUid), Criteria.where("level").gte(minLevel))); return findList(query); } public long countByBossUidAndMinLevel(Long bossUid, int minLevel) { Query query = new Query(); query.addCriteria(new Criteria().andOperator(Criteria.where("bossUid").is(bossUid), Criteria.where("level").gte(minLevel))); return count(query); } } fanli/src/main/java/com/yeshi/fanli/entity/bus/user/ThreeSaleDetail.java
New file @@ -0,0 +1,70 @@ package com.yeshi.fanli.entity.bus.user; import java.util.Date; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; /** * 详情关系详细记录 * @author Administrator * */ @Document(collection = "threeSaleDetail") public class ThreeSaleDetail { @Id private String id; @Indexed @Field private Long bossUid; @Indexed @Field private Long workUid; @Field private Integer level;// 第几级队员 @Field private Date createTime; public String getId() { return id; } public void setId(String id) { this.id = id; } public Long getBossUid() { return bossUid; } public void setBossUid(Long bossUid) { this.bossUid = bossUid; } public Long getWorkUid() { return workUid; } public void setWorkUid(Long workUid) { this.workUid = workUid; } public Integer getLevel() { return level; } public void setLevel(Integer level) { this.level = level; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } } fanli/src/main/java/com/yeshi/fanli/entity/bus/user/ThreeSaleRank.java
@@ -1,6 +1,5 @@ package com.yeshi.fanli.entity.bus.user; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml
@@ -53,7 +53,9 @@ <select id="selectBoss" resultMap="com.yeshi.fanli.dao.mybatis.UserInfoMapper.BaseResultMap" parameterType="java.lang.Long"> <select id="selectBoss" resultMap="com.yeshi.fanli.dao.mybatis.UserInfoMapper.BaseResultMap" parameterType="java.lang.Long"> select u.* from yeshi_ec_threeSale s left join yeshi_ec_user u on u.id=s.boss_id where s.state = 1 AND s.worker_id = #{0} @@ -72,15 +74,19 @@ <!-- 根据邀请者ID查询关系 --> <select id="getByWorkerId" resultMap="BaseResultMap" parameterType="java.lang.Long"> select <include refid="Base_Column_List" /> from yeshi_ec_threeSale <select id="getByWorkerId" resultMap="BaseResultMap" parameterType="java.lang.Long"> select <include refid="Base_Column_List" /> from yeshi_ec_threeSale where worker_id = #{0} </select> <select id="selectLatestByWorkerIdAndState" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from yeshi_ec_threeSale s where worker_id = #{workerId} and state=#{state} from yeshi_ec_threeSale s where worker_id = #{workerId} and state=#{state} </select> @@ -155,7 +161,9 @@ <select id="listFirstTeamQuery" resultMap="BaseResultMap"> SELECT t.*,d.`tvr_type` AS validState FROM `yeshi_ec_threesale` t LEFT JOIN `yeshi_ec_user_invite_valid_record` d ON (d.`tvr_uid` = t.`boss_id` AND d.`tvr_worker_id` = t.`worker_id`) LEFT JOIN `yeshi_ec_user_invite_valid_record` d ON (d.`tvr_uid` = t.`boss_id` AND d.`tvr_worker_id` = t.`worker_id`) WHERE 1=1 <if test="uid != null"> AND t.`boss_id` = #{uid} @@ -181,7 +189,9 @@ <select id="countFirstTeamQuery" resultType="java.lang.Long"> SELECT count(t.id) FROM `yeshi_ec_threesale` t LEFT JOIN `yeshi_ec_user_invite_valid_record` d ON (d.`tvr_uid` = t.`boss_id` AND d.`tvr_worker_id` = t.`worker_id`) LEFT JOIN `yeshi_ec_user_invite_valid_record` d ON (d.`tvr_uid` = t.`boss_id` AND d.`tvr_worker_id` = t.`worker_id`) WHERE 1=1 <if test="uid != null"> AND t.`boss_id` = #{uid} @@ -205,8 +215,10 @@ <select id="listSecondTeamQuery" resultMap="BaseResultMap"> SELECT yet.*,d.`tvr_type` AS validState FROM (SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`=tf.`worker_id` WHERE 1=1 AND tf.`state` = 1 SELECT yet.*,d.`tvr_type` AS validState FROM (SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`=tf.`worker_id` WHERE 1=1 AND tf.`state` = 1 <if test="uid != null"> AND tf.`boss_id` = #{uid} </if> @@ -220,7 +232,9 @@ <![CDATA[AND FROM_UNIXTIME(ts.createTime/1000) <= #{endTime}]]> </if> )A LEFT JOIN yeshi_ec_threesale yet ON yet.id = A.id LEFT JOIN `yeshi_ec_user_invite_valid_record` d ON (d.`tvr_uid` = yet.`boss_id` AND d.`tvr_worker_id` = yet.`worker_id`) LEFT JOIN `yeshi_ec_user_invite_valid_record` d ON (d.`tvr_uid` = yet.`boss_id` AND d.`tvr_worker_id` = yet.`worker_id`) where 1=1 <if test="validState == 1"> AND d.`tvr_type` = 1 @@ -233,7 +247,8 @@ </select> <select id="countSecondTeamQuery" resultType="java.lang.Long"> SELECT COUNT(A.id) FROM (SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts SELECT COUNT(A.id) FROM (SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`=tf.`worker_id` WHERE 1=1 AND tf.`state` = 1 @@ -251,7 +266,9 @@ </if> )A LEFT JOIN yeshi_ec_threesale yet ON yet.id = A.id LEFT JOIN `yeshi_ec_user_invite_valid_record` d ON (d.`tvr_uid` = yet.`boss_id` AND d.`tvr_worker_id` = yet.`worker_id`) LEFT JOIN `yeshi_ec_user_invite_valid_record` d ON (d.`tvr_uid` = yet.`boss_id` AND d.`tvr_worker_id` = yet.`worker_id`) where 1=1 <if test="validState == 0"> AND d.`tvr_type` is null @@ -296,15 +313,19 @@ <select id="listFirstTeam" resultMap="AllResultMap"> SELECT * FROM `yeshi_ec_threesale` ts LEFT JOIN `yeshi_ec_threesale_extra_info` ff ON (ts.`boss_id` = ff.`tf_boss_id` AND ts.`worker_id`=ff.`tf_worker_id`) SELECT * FROM `yeshi_ec_threesale` ts LEFT JOIN `yeshi_ec_threesale_extra_info` ff ON (ts.`boss_id` = ff.`tf_boss_id` AND ts.`worker_id`=ff.`tf_worker_id`) WHERE ts.`boss_id` = #{uid} ORDER BY ts.createTime DESC LIMIT ${start},${count} LIMIT ${start},${count} </select> <select id="countFirstTeam" resultType="java.lang.Long"> SELECT IFNULL(count(id),0) FROM `yeshi_ec_threesale` SELECT IFNULL(count(id),0) FROM `yeshi_ec_threesale` WHERE `boss_id` = #{uid} </select> @@ -313,13 +334,15 @@ SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`= tf.`worker_id` WHERE tf.`boss_id` = #{uid})A LEFT JOIN yeshi_ec_threesale yet ON yet.id = A.id LEFT JOIN yeshi_ec_threesale yet ON yet.id = A.id ORDER BY yet.createTime DESC LIMIT ${start},${count} </select> <select id="countSecondTeam" resultType="java.lang.Long"> SELECT COUNT(A.id) FROM ( SELECT COUNT(A.id) FROM ( SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`=tf.`worker_id` WHERE tf.`boss_id` = #{uid} @@ -345,8 +368,10 @@ </select> <select id="getSuccessRelationshipNum" resultType="java.lang.Integer"> SELECT IFNULL(COUNT(*),0) FROM `yeshi_ec_threesale` t WHERE t.`state` = 1 AND (t.`worker_id` =${uid} OR t.`boss_id` = ${uid}) SELECT IFNULL(COUNT(*),0) FROM `yeshi_ec_threesale` t WHERE t.`state` = 1 AND (t.`worker_id` =${uid} OR t.`boss_id` = ${uid}) </select> <select id="getRelationshipByBossIdAndWorkerId" resultMap="BaseResultMap"> @@ -361,40 +386,55 @@ <select id="getNearRelationByBossIdAndWorkerId" resultMap="BaseResultMap"> SELECT * FROM `yeshi_ec_threesale` t WHERE t.`boss_id` = #{bossId} AND t.`worker_id` = #{workerId} ORDER BY t.`state` DESC, t.`createTime` DESC WHERE t.`boss_id` = #{bossId} AND t.`worker_id` = #{workerId} ORDER BY t.`state` DESC, t.`createTime` DESC LIMIT 1 </select> <select id="selectSuccessByWorkerId" resultMap="BaseResultMap" parameterType="java.lang.Long"> <select id="selectSuccessByWorkerId" resultMap="BaseResultMap" parameterType="java.lang.Long"> SELECT * FROM `yeshi_ec_threesale` WHERE `state` = 1 AND worker_id = #{0} order by id desc WHERE `state` = 1 AND worker_id = #{0} order by id desc </select> <select id="getSuccessByDate" resultMap="AllResultMap" > SELECT * FROM yeshi_ec_threesale t WHERE t.`boss_id` = #{bossId} AND t.`state` = 1 WHERE t.`boss_id` = #{bossId} AND t.`state` = 1 AND <![CDATA[t.createTime >= #{minTime} AND t.createTime <= #{maxTime}]]> </select> <select id="getByWorkerIdAndTime" resultMap="BaseResultMap"> SELECT * FROM yeshi_ec_threesale t WHERE t.`worker_id` = #{workerId} AND t.`state` = 1 WHERE t.`worker_id` = #{workerId} AND t.`state` = 1 <![CDATA[AND t.succeedTime >= #{time}]]> </select> <select id="getTeamOrderNumByWorkerId" resultType="Long"> SELECT IFNULL(COUNT(d.`id`),0) FROM yeshi_ec_threesale d LEFT JOIN (SELECT t.`id`,t.`boss_id` FROM `yeshi_ec_threesale` t WHERE t.`state` = 1 AND t.`worker_id` = #{workerId} LIMIT 1)t ON t.`boss_id` = d.`boss_id` WHERE d.`id` <![CDATA[<=]]>t.id AND d.`state` = 1 LEFT JOIN (SELECT t.`id`,t.`boss_id` FROM `yeshi_ec_threesale` t WHERE t.`state` = 1 AND t.`worker_id` = #{workerId} LIMIT 1)t ON t.`boss_id` = d.`boss_id` WHERE d.`id` <![CDATA[<=]]>t.id AND d.`state` = 1 </select> <select id="getValidWorkerIdsByTime" resultMap="BaseResultMap"> SELECT * FROM `yeshi_ec_threesale` tr WHERE tr.`state` = 1 AND tr.`boss_id` = #{uid} AND tr.`succeedTime` <![CDATA[>=]]> #{limitTime} WHERE tr.`state` = 1 AND tr.`boss_id` = #{uid} AND tr.`succeedTime` <![CDATA[>=]]> #{limitTime} </select> <select id="listAll" resultMap="BaseResultMap"> SELECT * FROM `yeshi_ec_threesale` limit #{start},#{count} </select> </mapper> fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleDetailSerivceImpl.java
New file @@ -0,0 +1,83 @@ package com.yeshi.fanli.service.impl.user.invite; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.user.invite.ThreeSaleDetailDao; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.ThreeSaleDetail; import com.yeshi.fanli.exception.ParamsException; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; @Service public class ThreeSaleDetailSerivceImpl implements ThreeSaleDetailService { @Resource private ThreeSaleDetailDao threeSaleDetailDao; @Resource private ThreeSaleSerivce threeSaleSerivce; @Override public void addThreeSaleDetail(ThreeSaleDetail detail) throws ParamsException { if (detail.getBossUid() == null || detail.getWorkUid() == null || detail.getLevel() == null || detail.getCreateTime() == null) { throw new ParamsException(1, "参数不完整"); } String id = detail.getBossUid() + "#" + detail.getWorkUid(); detail.setId(id); // 根据主键查询 ThreeSaleDetail old = threeSaleDetailDao.get(id); if (old == null) threeSaleDetailDao.save(detail); } @Override public List<ThreeSaleDetail> listByBossUidAndLevel(Long bossUid, int level, int page, int pageSize) { return threeSaleDetailDao.listByBossUidAndLevel(bossUid, level, (page - 1) * pageSize, pageSize); } @Override public long countByBossUidAndLevel(Long bossUid, int level) { return threeSaleDetailDao.countByBossUidAndLevel(bossUid, level); } @Override public List<ThreeSaleDetail> listByBossUidAndMinLevel(Long bossUid, int minLevel, int page, int pageSize) { return threeSaleDetailDao.listByBossUidAndMinLevel(bossUid, minLevel, (page - 1) * pageSize, pageSize); } @Override public long countByBossUidAndMinLevel(Long bossUid, int minLevel) { return threeSaleDetailDao.countByBossUidAndMinLevel(bossUid, minLevel); } @Override public void addByWorkerUid(Long workerUid) { List<ThreeSale> list = threeSaleSerivce.getMyBossDeepList(workerUid, 100); int level = 0; for (ThreeSale tts : list) { level++; ThreeSaleDetail detail = new ThreeSaleDetail(); detail.setBossUid(tts.getBoss().getId()); detail.setLevel(level); detail.setWorkUid(workerUid); if (tts.getSucceedTime() != null) detail.setCreateTime(new Date(tts.getSucceedTime())); else detail.setCreateTime(new Date(tts.getCreateTime())); try { if (tts.getState()) addThreeSaleDetail(detail); } catch (ParamsException e) { e.printStackTrace(); } } } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java
@@ -564,4 +564,9 @@ return bossUid; } @Override public List<ThreeSale> listAll(int page, int pageSize) { return threeSaleMapper.listAll((page-1)*pageSize, pageSize); } } fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/ThreeSaleDetailService.java
New file @@ -0,0 +1,65 @@ package com.yeshi.fanli.service.inter.user.invite; import java.util.List; import com.yeshi.fanli.entity.bus.user.ThreeSaleDetail; import com.yeshi.fanli.exception.ParamsException; public interface ThreeSaleDetailService { /** * 添加邀请详情 * @Title: addThreeSaleDetail * @Description: * @param detail * @throws ParamsException * void 返回类型 * @throws */ public void addThreeSaleDetail(ThreeSaleDetail detail) throws ParamsException; /** * 通过邀请用户ID增加记录 * @Title: addByWorkerUid * @Description: * @param workerUid * void 返回类型 * @throws */ public void addByWorkerUid(Long workerUid); /** * 按层级查询 * @Title: listByBossUidAndLevel * @Description: * @param bossUid * @param level * @param page * @param pageSize * @return * List<ThreeSaleDetail> 返回类型 * @throws */ public List<ThreeSaleDetail> listByBossUidAndLevel(Long bossUid, int level, int page, int pageSize); public long countByBossUidAndLevel(Long bossUid, int level); /** * 按最小层级查询 * @Title: listByBossUidAndMinLevel * @Description: * @param bossUid * @param minLevel * @param page * @param pageSize * @return * List<ThreeSaleDetail> 返回类型 * @throws */ public List<ThreeSaleDetail> listByBossUidAndMinLevel(Long bossUid, int minLevel, int page, int pageSize); public long countByBossUidAndMinLevel(Long bossUid, int minLevel); } fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/ThreeSaleSerivce.java
@@ -272,5 +272,18 @@ * @throws */ public Long getTopBoss(Long uid); /** * 查询列表 * @Title: list * @Description: * @param page * @param pageSize * @return * List<ThreeSale> 返回类型 * @throws */ public List<ThreeSale> listAll(int page,int pageSize); }