Commit c2d734ca authored by licc's avatar licc

Merge remote-tracking branch 'origin/master'

parents b93b9eca bfd921ab
...@@ -4,6 +4,7 @@ import cn.wisenergy.model.app.OrderInfo; ...@@ -4,6 +4,7 @@ import cn.wisenergy.model.app.OrderInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -31,4 +32,10 @@ public interface OrderMapper extends BaseMapper<OrderInfo> { ...@@ -31,4 +32,10 @@ public interface OrderMapper extends BaseMapper<OrderInfo> {
*/ */
OrderInfo getByTid(@Param("tid")String tid); OrderInfo getByTid(@Param("tid")String tid);
/**
* 获取当前用户的业绩
* @param userId
* @return
*/
BigDecimal getPerformanceByUserid(String userId);
} }
...@@ -8,9 +8,21 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -8,9 +8,21 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface RecommendUserMapper extends BaseMapper<RecommendUser> { public interface RecommendUserMapper extends BaseMapper<RecommendUser> {
/**
* 获取用户直推信息
* @param userId 用户Id
* @return 用户直推信息
*/
RecommendUser getByUserId(String userId); RecommendUser getByUserId(String userId);
//根据用户推荐人的userid,查询数据库用户直推表,看推荐人用户是否存在 //根据用户推荐人的userid,查询数据库用户直推表,看推荐人用户是否存在
Integer zcByUserId(String userid); Integer zcByUserId(String userid);
/**
* 获取用户的直推用户总人数
* @param userId 用户Id
* @return 直推用户总人数
*/
Integer getRecommendUserCountByUserId(String userId);
} }
...@@ -60,4 +60,19 @@ public interface TeamPerformanceMapper extends BaseMapper<TeamPerformance> { ...@@ -60,4 +60,19 @@ public interface TeamPerformanceMapper extends BaseMapper<TeamPerformance> {
Double countTwenty(@Param("yearMonth") String yearMonth); Double countTwenty(@Param("yearMonth") String yearMonth);
List<TeamPerformance> userTwenty(@Param("yearMonth") String yearMonth); List<TeamPerformance> userTwenty(@Param("yearMonth") String yearMonth);
/**
* 当前用户的团队总业绩
* @param userId 当前用户id
* @return 当前用户的团队累计总业绩金额
*/
Double countUserTeamByUserId(@Param("userId") String userId);
/**
* 当前用户本月团队新增业绩
* @param userId 用户Id
* @return 当前用户本月团队新增业绩
*/
Double monthUserTeamByuserId(@Param("userid") String userId,@Param("yearMonth") String yearMonth);
} }
...@@ -10,7 +10,20 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -10,7 +10,20 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface TeamUserInfoMapper extends BaseMapper<TeamUserInfo> { public interface TeamUserInfoMapper extends BaseMapper<TeamUserInfo> {
TeamUserInfo getByUserId(String userid); // TeamUserInfo getByUserId(String userid);
//根据userId查询用户是否存在 //根据userId查询用户是否存在
Integer czByUserId(String userId); Integer czByUserId(String userId);
/**
* 获取用户的团队信息
* @param userId 用户Id
* @return 用户的团队信息
*/
TeamUserInfo getByUserId(String userId);
/**
* 获取用户的团队总人数
* @param userId 用户Id
* @return 团队总人数
*/
Integer getTeamUserCount(String userId);
} }
...@@ -106,4 +106,11 @@ public interface UsersMapper extends BaseMapper<User> { ...@@ -106,4 +106,11 @@ public interface UsersMapper extends BaseMapper<User> {
Integer insertbyint(@Param("userId")String userId, @Param("beInvitedCode") String beInvitedCode); Integer insertbyint(@Param("userId")String userId, @Param("beInvitedCode") String beInvitedCode);
Integer edit1(@Param("userId")String userId); Integer edit1(@Param("userId")String userId);
Integer getuserIdById(@Param("userId")String userId); Integer getuserIdById(@Param("userId")String userId);
/**
* 根据userid获取获取所有的直接推荐人
* @param inviteCode 用户本人的邀请码
* @return 所有填写此人的邀请码的用户
*/
List<User> getByInviteCode(@Param("inviteCode") String inviteCode, @Param("userlevel") int userLevel);
} }
...@@ -113,4 +113,14 @@ ...@@ -113,4 +113,14 @@
</where> </where>
</select> </select>
<select id="getPerformanceByUserid" resultType="java.math.BigDecimal" >
select
sum(payment)
from
<include refid="table"/>
<where>
buyer_id=#{userid}
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
<result column="partner_num" property="partnerNum"/> <result column="partner_num" property="partnerNum"/>
<result column="create_time" property="createTime"/> <result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/> <result column="update_time" property="updateTime"/>
<result column="monthy_count" property="monthyCount"/>
<result column="history_count" property="historyCount"/>
</resultMap> </resultMap>
<sql id="table"> <sql id="table">
...@@ -28,12 +30,12 @@ ...@@ -28,12 +30,12 @@
<sql id="cols_exclude_id"> <sql id="cols_exclude_id">
user_id,normal_user_num,seedling_num,bronze_tree_num,silver_tree_num, user_id,normal_user_num,seedling_num,bronze_tree_num,silver_tree_num,
gold_tree_num,farmer_num,forest_start_num,partner_num,create_time,update_time gold_tree_num,farmer_num,forest_start_num,partner_num,create_time,update_time,monthy_count,history_count
</sql> </sql>
<sql id="vals"> <sql id="vals">
#{userId},#{normalUserNum},#{seedlingNum},#{bronzeTreeNum},#{silverTreeNum}, #{userId},#{normalUserNum},#{seedlingNum},#{bronzeTreeNum},#{silverTreeNum},
#{goldTreeNum},#{farmerNum},#{forestStartNum},#{partnerNum},now(),now() #{goldTreeNum},#{farmerNum},#{forestStartNum},#{partnerNum},now(),now(),#{monthy_count},#{history_count}
</sql> </sql>
<sql id="updateCondition"> <sql id="updateCondition">
...@@ -45,6 +47,8 @@ ...@@ -45,6 +47,8 @@
<if test="farmerNum != null">referrer_num =#{farmerNum},</if> <if test="farmerNum != null">referrer_num =#{farmerNum},</if>
<if test="forestStartNum != null">referrer_num =#{forestStartNum},</if> <if test="forestStartNum != null">referrer_num =#{forestStartNum},</if>
<if test="partnerNum != null">referrer_num =#{partnerNum},</if> <if test="partnerNum != null">referrer_num =#{partnerNum},</if>
<if test="monthyCount != null">referrer_num =#{monthyCount},</if>
<if test="historyCount != null">referrer_num =#{historyCount},</if>
update_time =now() update_time =now()
</sql> </sql>
...@@ -60,6 +64,8 @@ ...@@ -60,6 +64,8 @@
<if test="partnerNum != null">and referrer_num =#{partnerNum},</if> <if test="partnerNum != null">and referrer_num =#{partnerNum},</if>
<if test="createTime != null">and create_time &gt;= #{createTime}</if> <if test="createTime != null">and create_time &gt;= #{createTime}</if>
<if test="updateTime != null">and #{updateTime} &gt;= update_time</if> <if test="updateTime != null">and #{updateTime} &gt;= update_time</if>
<if test="monthyCount != null">and #{monthyCount} &gt;= monthyCount</if>
<if test="historyCount != null">and #{historyCount} &gt;= historyCount</if>
</sql> </sql>
<select id="getByUserId" resultType="cn.wisenergy.model.app.RecommendUser"> <select id="getByUserId" resultType="cn.wisenergy.model.app.RecommendUser">
...@@ -83,4 +89,15 @@ ...@@ -83,4 +89,15 @@
</select> </select>
<!--用户信息插入用户直推表--> <!--用户信息插入用户直推表-->
<select id="getRecommendUserCountByUserId" resultType="java.lang.Integer">
select
(normal_user_num+seedling_num+bronze_tree_num+silver_tree_num+
gold_tree_num+farmer_num+forest_start_num+partner_num) AS RecommendUserCount
from
<include refid="table"/>
<where>
user_id=#{userId}
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -164,4 +164,22 @@ ...@@ -164,4 +164,22 @@
</where> </where>
</select> </select>
<select id="countUserTeamByUserId" resultType="double">
select sum(month_team_performance)
from
<include refid="table"/>
<where>
user_id=#{userId}
</where>
</select>
<select id="monthUserTeamByuserId" resultType="double">
select month_team_performance
from
<include refid="table"/>
<where>
user_id=#{userid}
and `year_month` = #{yearMonth}
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -83,4 +83,14 @@ ...@@ -83,4 +83,14 @@
</select> </select>
<select id="getTeamUserCount" resultType="java.lang.Integer" >
select
(normal_user_num+seedling_num+bronze_tree_num+silver_tree_num+
gold_tree_num+farmer_num+forest_start_num+partner_num) AS teamUserCount
from
<include refid="table"/>
<where>
user_id=#{userId}
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -268,5 +268,17 @@ ...@@ -268,5 +268,17 @@
</if> </if>
</select> </select>
<!-- 获取当前用户的所有直接推荐人-->
<select id="getByInviteCode" resultType="cn.wisenergy.model.app.User" parameterType="string">
select
<include refid="cols_all"/>
from
<include refid="table"/>
<where>
be_invited_code=#{inviteCode}
</where>
and user_level=#{userlevel}
</select>
</mapper> </mapper>
...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
...@@ -91,4 +92,16 @@ public class RecommendUser implements Serializable { ...@@ -91,4 +92,16 @@ public class RecommendUser implements Serializable {
*/ */
@ApiModelProperty(name = "updateTime", value = "更新时间") @ApiModelProperty(name = "updateTime", value = "更新时间")
private Date updateTime; private Date updateTime;
/**
* 用户当月消费金额
*/
@ApiModelProperty(name = "monthyCount", value = "用户当月消费金额")
private BigDecimal monthyCount;
/**
* 用户当月消费金额
*/
@ApiModelProperty(name = "history_count", value = "用户累计消费金额")
private BigDecimal historyCount;
} }
package cn.wisenergy.model.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel("UserAndRecommendVo")
public class UserAndRecommendVo {
/**
* 用户id
*/
private String userId;
/**
* 当月消费金额
*/
private BigDecimal monthyCount;
/**
* 累计消费金额
*/
private BigDecimal historyCount;
}
...@@ -95,6 +95,11 @@ ...@@ -95,6 +95,11 @@
<artifactId>open-sdk-common</artifactId> <artifactId>open-sdk-common</artifactId>
<version>1.0.7-RELEASE</version> <version>1.0.7-RELEASE</version>
</dependency> </dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>1.9.2</version>
</dependency>
</dependencies> </dependencies>
<!-- MAVEN构建 --> <!-- MAVEN构建 -->
......
...@@ -10,7 +10,16 @@ import com.youzan.cloud.open.sdk.gen.v4_0_0.model.YouzanTradesSoldGetResult; ...@@ -10,7 +10,16 @@ import com.youzan.cloud.open.sdk.gen.v4_0_0.model.YouzanTradesSoldGetResult;
* @author 86187 * @author 86187
*/ */
public interface OrderService { public interface OrderService {
/**
* 根据有赞的订单创建时间获取订单数据
* @throws SDKException
*/
void getYouZanOrdersForCreateTime() throws SDKException; void getYouZanOrdersForCreateTime() throws SDKException;
/**
* 根据有赞的订单修改时间获取订单数据
* @throws SDKException
*/
void getYouZanOrdersForUpdateTime() throws SDKException; void getYouZanOrdersForUpdateTime() throws SDKException;
} }
package cn.wisenergy.service.app;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.app.RecommendUser;
import cn.wisenergy.model.app.User;
import cn.wisenergy.model.vo.UserAndRecommendVo;
import java.util.List;
public interface RecommendUserService {
RecommendUser getMyRecommed(String userId);
List<UserAndRecommendVo> getMyRecommendInfo(String userId, Integer userLevel);
}
package cn.wisenergy.service.app;
import cn.wisenergy.model.app.TeamUserInfo;
public interface TeamUserInfoService {
TeamUserInfo getOneById(String userId);
/**
* 获取团队总人数
* @param userId 用户Id
* @return 用户团队总人数
*/
int getTeamUserCount(String userId);
}
package cn.wisenergy.service.app;
import java.util.Map;
public interface UserForestStatusService {
/**
* 用户森林状态
* @param userId
* @return
*/
Map getUserForestStatus(String userId);
}
...@@ -143,9 +143,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem ...@@ -143,9 +143,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
try { try {
// startUpdateDate = sdf.parse("2021-02-28 11:04:01"); // startUpdateDate = sdf.parse("2021-02-28 11:04:01");
// endUpdateDate = sdf.parse("2021-03-2 16:39:59"); // endUpdateDate = sdf.parse("2021-03-2 16:39:59");
startCreatedDate = sdf.parse(sdf.format(new Date(date.getTime()-(long) 80*24*60*60*1000))); startUpdateDate = sdf.parse(sdf.format(new Date(date.getTime()-(long) 80*24*60*60*1000)));
log.info("订单修改开始时间"+sdf.format(startUpdateDate)); log.info("订单修改开始时间"+sdf.format(startUpdateDate));
startUpdateDate = sdf.parse(sdf.format(date)); endUpdateDate = sdf.parse(sdf.format(date));
log.info("订单修改结束时间"+sdf.format(endUpdateDate)); log.info("订单修改结束时间"+sdf.format(endUpdateDate));
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -162,8 +162,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem ...@@ -162,8 +162,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
YouzanTradesSoldGetResult.YouzanTradesSoldGetResultOrderinfo youzanOrderInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getOrderInfo(); YouzanTradesSoldGetResult.YouzanTradesSoldGetResultOrderinfo youzanOrderInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getOrderInfo();
YouzanTradesSoldGetResult.YouzanTradesSoldGetResultPayinfo payInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getPayInfo(); YouzanTradesSoldGetResult.YouzanTradesSoldGetResultPayinfo payInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getPayInfo();
log.info(youzanTradesSoldGetResultFullorderinfolist.toString());
//根据修改时间获取到的有赞订单数据的Tid //根据修改时间获取到的有赞订单数据的Tid
String tid = youzanOrderInfo.getTid(); String tid = youzanOrderInfo.getTid();
OrderInfo orderByTid = orderMapper.getByTid(tid); OrderInfo orderByTid = orderMapper.getByTid(tid);
......
package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.mapper.RecommendUserMapper;
import cn.wisenergy.mapper.UsersMapper;
import cn.wisenergy.model.app.RecommendUser;
import cn.wisenergy.model.app.User;
import cn.wisenergy.model.vo.UserAndRecommendVo;
import cn.wisenergy.service.app.RecommendUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@Slf4j
public class RecommendUserServiceImpl implements RecommendUserService {
@Autowired
RecommendUserMapper recommendUserMapper;
@Autowired
UsersMapper usersMapper;
/**
* 获取用户的直推信息表数据
* @param userId
* @return
*/
@Override
public RecommendUser getMyRecommed(String userId) {
return recommendUserMapper.getByUserId(userId);
}
public List<UserAndRecommendVo> getMyRecommendInfo(String userId, Integer userLevel){
//当前用户的邀请码
String userIntiveCode = usersMapper.getByUserId(userId).getInviteCode();
//通过用户的邀请码获取各个等级的直推用户信息
List<User> byInviteCode = usersMapper.getByInviteCode(userIntiveCode,userLevel);
List<UserAndRecommendVo> userAndRecommendVos = new ArrayList<>();
for (User user : byInviteCode) {
UserAndRecommendVo userAndRecommendVo = new UserAndRecommendVo();
userAndRecommendVo.setUserId(user.getUserId());
userAndRecommendVo.setMonthyCount(recommendUserMapper.getByUserId(userId).getMonthyCount());
userAndRecommendVo.setHistoryCount(recommendUserMapper.getByUserId(userId).getHistoryCount());
userAndRecommendVos.add(userAndRecommendVo);
}
return userAndRecommendVos;
}
}
package cn.wisenergy.service.app.impl;
import cn.wisenergy.mapper.TeamUserInfoMapper;
import cn.wisenergy.model.app.TeamUserInfo;
import cn.wisenergy.service.app.TeamUserInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class TeamUserInfoServiceImpl implements TeamUserInfoService {
@Autowired
TeamUserInfoMapper teamUserInfoMapper;
/**
* 根据用户id获取用户的团队信息
* @param userId
* @return
*/
@Override
public TeamUserInfo getOneById(String userId) {
TeamUserInfo byUserId = teamUserInfoMapper.getByUserId(userId);
return byUserId;
}
/**
* 获取团队总人数
* @param userId 用户Id
* @return 用户团队总人数
*/
@Override
public int getTeamUserCount(String userId){
int teamUserCount = teamUserInfoMapper.getTeamUserCount(userId);
return teamUserCount;
}
}
package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.DateUtil;
import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.RecommendUser;
import cn.wisenergy.model.app.TeamPerformance;
import cn.wisenergy.model.app.TeamUserInfo;
import cn.wisenergy.service.app.UserForestStatusService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.xml.ws.soap.Addressing;
import java.math.BigDecimal;
import java.sql.Time;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 用户森林状态
* @author 86187
*/
@Service
@Slf4j
public class UserForestStatusServiceImpl implements UserForestStatusService {
@Autowired
UsersMapper usersMapper;
@Autowired
RecommendUserMapper recommendUserMapper;
@Autowired
TeamUserInfoMapper teamUserInfoMapper;
@Autowired
TeamPerformanceMapper teamPerformanceMapper;
@Autowired
OrderMapper orderMapper;
/**
* 根据用户id获取用户森林状态
* @param userId
* @return
*/
//todo:团队当月新增业绩
@Override
public Map getUserForestStatus(String userId) {
//用户升级条件
BigDecimal levelTerm = new BigDecimal(3980);
HashMap<Object, Object> userForestStatusMap = new HashMap<>();
String date = DateUtil.convertDateToStr(new Date(), "yyyy-MM");
//1.获取当前用户的等级
Integer userLevel = usersMapper.getByUserId(userId).getUserLevel();
//2.获取当前用户的直推总人数
Integer recommendUserCountByUserId = recommendUserMapper.getRecommendUserCountByUserId(userId);
//3.获取当前用户的团队总人数
Integer teamUserCount = teamUserInfoMapper.getTeamUserCount(userId);
//4.团队累计总业绩
Double teamCountDouble = teamPerformanceMapper.countUserTeamByUserId(userId);
//5.团队当月新增业绩
Double teamNowCount = teamPerformanceMapper.monthUserTeamByuserId(userId,date);
//用户直推表信息
RecommendUser recommendUserMapperByUserId = recommendUserMapper.getByUserId(userId);
//用户团队表信息
TeamUserInfo teamUserInfobyUserId = teamUserInfoMapper.getByUserId(userId);
//距离下级直推用户还需增加的数量
int recommend =0;
//距离下级团队用户还需增加的数量
int team =0;
//6.距离下级升级条件
if(userLevel < 2){
//用户等级 < 幼苗 显示业绩缺少额度
//获取当前用户的业绩
BigDecimal performanceByUserid = orderMapper.getPerformanceByUserid(userId);
//距离升级还差多少额度
BigDecimal difference = levelTerm.subtract(performanceByUserid);
userForestStatusMap.put("difference",difference);
}else if (userLevel == 2){
//用户等级为青铜树
int levelTerm1 = 20;
Integer seedlingNum = recommendUserMapperByUserId.getSeedlingNum();
recommend = levelTerm1 - seedlingNum;
userForestStatusMap.put("recommend",recommend);
}else if (userLevel == 3){
//用户等级为白银树
int goldLevelRecommend = 54;
int goldLevelteam = 20;
//直推用户之和
Integer countRecommend = recommendUserMapperByUserId.getSeedlingNum()+recommendUserMapperByUserId.getSilverTreeNum();
//所差直推用户的数量
recommend = goldLevelRecommend - countRecommend;
//所差团队用户的数量
team = goldLevelteam - teamUserInfobyUserId.getBronzeTreeNum();
userForestStatusMap.put("recommend",recommend);
userForestStatusMap.put("team",team);
}else if (userLevel == 4){
//用户等级为黄金树
int farmerLevelRecommend = 73;
int fammerLevelTeam = 40;
//用户直推之和
Integer countRecommend = recommendUserMapperByUserId.getSeedlingNum()+recommendUserMapperByUserId.getGoldTreeNum();
//用户团队之和
Integer countTeam = teamUserInfobyUserId.getSilverTreeNum();
//所差直推用户的数量
recommend = farmerLevelRecommend - countRecommend;
//所差团队用户的数量
team = fammerLevelTeam - teamUserInfobyUserId.getBronzeTreeNum();
userForestStatusMap.put("recommend",recommend);
userForestStatusMap.put("team",team);
}else if (userLevel == 5){
//用户等级为农场主
int farmerLevelRecommend = 73;
int fammerLevelTeam = 40;
//用户直推之和
Integer countRecommend = recommendUserMapperByUserId.getSeedlingNum()+recommendUserMapperByUserId.getGoldTreeNum();
//用户团队之和
Integer countTeam = teamUserInfobyUserId.getSilverTreeNum();
//所差直推用户的数量
recommend = farmerLevelRecommend - countRecommend;
//所差团队用户的数量
team = fammerLevelTeam - teamUserInfobyUserId.getBronzeTreeNum();
userForestStatusMap.put("recommend",recommend);
userForestStatusMap.put("team",team);
}else if (userLevel == 6){
//用户等级为森林之星
int forestStartNumLevelRecommend = 101;
int forestStartNumLevelTeam = 170;
//用户直推之和
Integer countRecommend = recommendUserMapperByUserId.getSeedlingNum()+recommendUserMapperByUserId.getForestStartNum();
//用户团队之和
Integer countTeam = teamUserInfobyUserId.getSilverTreeNum()+teamUserInfobyUserId.getGoldTreeNum()+teamUserInfobyUserId.getFarmerNum();
//所差直推用户的数量
recommend = forestStartNumLevelRecommend - countRecommend;
//所差团队用户的数量
team = forestStartNumLevelTeam - countTeam;
userForestStatusMap.put("recommend",recommend);
userForestStatusMap.put("team",team);
}
userForestStatusMap.put("userLevel",userLevel);
userForestStatusMap.put("recommendUserCount",recommendUserCountByUserId);
userForestStatusMap.put("teamUserCount",teamUserCount);
if (teamCountDouble == null ){
userForestStatusMap.put("teamCountDouble",0);
}else {
userForestStatusMap.put("teamCountDouble",teamCountDouble);
}
if (teamNowCount == null){
userForestStatusMap.put("teamNowCount",0);
}else {
userForestStatusMap.put("teamNowCount",teamNowCount);
}
return userForestStatusMap;
}
// public
}
...@@ -56,6 +56,7 @@ public class UserLevelServiceImlp extends ServiceImpl<UsersMapper,User> implemen ...@@ -56,6 +56,7 @@ public class UserLevelServiceImlp extends ServiceImpl<UsersMapper,User> implemen
//用户等级升级为幼苗 1 //用户等级升级为幼苗 1
//若当前用户等级为0(普通用户)且跨境额度(业绩消费金额)>= 3980 进行升级0-->1 //若当前用户等级为0(普通用户)且跨境额度(业绩消费金额)>= 3980 进行升级0-->1
//todo:根据业绩去计算 查一次表获取业绩
if (userLevel == 0 && crossBorderLine.intValue() >= 3980){ if (userLevel == 0 && crossBorderLine.intValue() >= 3980){
user.setUserLevel(1); user.setUserLevel(1);
usersMapper.updateById(user); usersMapper.updateById(user);
...@@ -435,6 +436,7 @@ public class UserLevelServiceImlp extends ServiceImpl<UsersMapper,User> implemen ...@@ -435,6 +436,7 @@ public class UserLevelServiceImlp extends ServiceImpl<UsersMapper,User> implemen
teamNumInfoBuyId.setNormalUserNum(teamNumInfoBuyId.getNormalUserNum()-1); teamNumInfoBuyId.setNormalUserNum(teamNumInfoBuyId.getNormalUserNum()-1);
} }
//邀请人的团队用户信息表中幼苗数量 + 1 //邀请人的团队用户信息表中幼苗数量 + 1
//第一波用户是谁邀请的
teamNumInfoBuyId.setSeedlingNum(teamNumInfoBuyId.getSeedlingNum() + 1); teamNumInfoBuyId.setSeedlingNum(teamNumInfoBuyId.getSeedlingNum() + 1);
teamUserInfoMapper.updateById(teamNumInfoBuyId); teamUserInfoMapper.updateById(teamNumInfoBuyId);
if("1".equals(intiveUserByUserId.getBeInvitedCode())){ if("1".equals(intiveUserByUserId.getBeInvitedCode())){
......
...@@ -54,7 +54,7 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U ...@@ -54,7 +54,7 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
@Override @Override
public User getByUserId(String userId) { public User getByUserId(String userId) {
return null; return usersMapper.getByUserId(userId);
} }
......
...@@ -3,21 +3,36 @@ package cn.wisenergy.web.admin.controller.app; ...@@ -3,21 +3,36 @@ package cn.wisenergy.web.admin.controller.app;
import cn.wisenergy.common.constant.RedisConsts; import cn.wisenergy.common.constant.RedisConsts;
import cn.wisenergy.common.utils.R; import cn.wisenergy.common.utils.R;
import cn.wisenergy.common.utils.RedisUtils; import cn.wisenergy.common.utils.RedisUtils;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.mapper.RecommendUserMapper;
import cn.wisenergy.mapper.TeamUserInfoMapper;
import cn.wisenergy.model.app.RecommendUser;
import cn.wisenergy.model.app.TeamUserInfo;
import cn.wisenergy.model.app.User; import cn.wisenergy.model.app.User;
import cn.wisenergy.model.app.UsersDto;
import cn.wisenergy.model.vo.UserAndRecommendVo;
import cn.wisenergy.service.app.RecommendUserService;
import cn.wisenergy.service.app.TeamUserInfoService;
import cn.wisenergy.service.app.UserForestStatusService;
import cn.wisenergy.service.app.UserService; import cn.wisenergy.service.app.UserService;
import cn.wisenergy.web.common.BaseController; import cn.wisenergy.web.common.BaseController;
import cn.wisenergy.web.config.JwtConfig; import cn.wisenergy.web.config.JwtConfig;
import cn.wisenergy.web.shiro.JwtUtil; import cn.wisenergy.web.shiro.JwtUtil;
import cn.wisenergy.web.sms.*;
import com.alibaba.druid.sql.ast.statement.SQLIfStatement;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import java.time.Month;
import org.springframework.web.bind.annotation.RestController; import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
...@@ -32,6 +47,15 @@ public class UserController extends BaseController { ...@@ -32,6 +47,15 @@ public class UserController extends BaseController {
@Autowired @Autowired
private UserService userService; private UserService userService;
@Autowired
private UserForestStatusService userForestStatusService;
@Autowired
RecommendUserService recommendUserService;
@Autowired
TeamUserInfoService teamUserInfoService;
@Autowired @Autowired
private JwtUtil jwtUtil; private JwtUtil jwtUtil;
...@@ -73,4 +97,45 @@ public class UserController extends BaseController { ...@@ -73,4 +97,45 @@ public class UserController extends BaseController {
return R.ok(token); return R.ok(token);
} }
@ApiOperation(value = "获取用户森林状态接口", notes = "获取用户森林状态接口", httpMethod = "GET")
@GetMapping("/forestStatus")
public R<Map> forestStatus(String userId){
if (null == userId){
return R.error("入参为空");
}
try {
Map userForestStatus = userForestStatusService.getUserForestStatus(userId);
return R.ok(userForestStatus);
} catch (Exception e) {
return R.error(1,"请重新尝试");
}
}
@ApiOperation(value = "获取用户我的直推信息", notes = "获取用户我的直推信息", httpMethod = "GET")
@GetMapping("/myRecommend")
public R<Map> getMyRecommend(String userId){
int userLevel = userService.getByUserId(userId).getUserLevel();
RecommendUser myRecommed = recommendUserService.getMyRecommed(userId);
Map myRecommedMap = new HashMap();
myRecommedMap.put("userlevel",userLevel);
myRecommedMap.put("myRecommed",myRecommed);
return R.ok(myRecommedMap);
}
@ApiOperation(value = "获取用户我的团队信息", notes = "获取用户我的团队推信息", httpMethod = "GET")
@GetMapping("/myTeam")
public R<TeamUserInfo> getMyTeam(String userId){
TeamUserInfo myTeam = teamUserInfoService.getOneById(userId);
return R.ok(myTeam);
}
@ApiOperation(value = "获取用户我的直推信息详情", notes = "获取用户我的直推信息详情", httpMethod = "GET")
@GetMapping("/myRecommendInfo")
public R<List<UserAndRecommendVo>> getMyRecommendInfo(@RequestParam("userid") String userid, @RequestParam("userlevel") int userlevel){
List<UserAndRecommendVo> myRecommendInfo = recommendUserService.getMyRecommendInfo(userid, userlevel);
return R.ok(myRecommendInfo);
}
} }
...@@ -32,21 +32,35 @@ spring: ...@@ -32,21 +32,35 @@ spring:
wall: wall:
config: config:
multi-statement-allow: true multi-statement-allow: true
#/www/server/redis/src/redis-server
redis: redis:
open: false # 是否开启redis缓存 true开启 false关闭 open: false # 是否开启redis缓存 true开启 false关闭
database: 0 database: 0
host: 39.97.107.31 host: 39.97.107.31
port: 6379 port: 6379
password: 1qaz@WSX # 密码(默认为空) password:
timeout: 6000ms # 连接超时时长(毫秒) timeout: 6000ms
jedis: jedis:
pool: pool:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制) max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接 max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接 min-idle: 5 # 连接池中的最小空闲连接
#jwt: #jwt:
## # 加密秘钥 ## # 加密秘钥
## secret: f4e2e52034348f86b67cde581c0f9eb5 ## secret: f4e2e52034348f86b67cde581c0f9eb5
## # token有效时长,单位秒 ## # token有效时长,单位秒
## expire: 14400 ## expire: 14400
xxl:
job:
accessToken:
admin:
addresses: http://127.0.0.1:8090/job-admin
executor:
address:
appname: shop-mall
ip: 127.0.0.1
logpath: /home/meepo/logs/xxl-job/jobhandler
logretentiondays: 30
port: 9999
server: server:
tomcat: tomcat:
uri-encoding: UTF-8 uri-encoding: UTF-8
max-threads: 1000 threads:
min-spare-threads: 30 max: 1000
min-spare: 30
port: 8997 port: 8997
connection-timeout: 5000ms
spring: spring:
main: main:
......
### web ### web
server.port=8080 server.port=8090
server.servlet.context-path=/xxl-job-admin server.servlet.context-path=/job-admin
### actuator ### actuator
management.server.servlet.context-path=/actuator management.server.servlet.context-path=/actuator
...@@ -24,14 +24,14 @@ mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml ...@@ -24,14 +24,14 @@ mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
### xxl-job, datasource ### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root spring.datasource.username=xxl_job
spring.datasource.password=root_pwd spring.datasource.password=6EmAWkCtwc5SjKxd
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
### datasource-pool ### datasource-pool
spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=30 spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.auto-commit=true spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000 spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP spring.datasource.hikari.pool-name=HikariCP
......
admin_name=Scheduling Center admin_name=Scheduling Center
admin_name_full=Distributed Task Scheduling Platform XXL-JOB admin_name_full=Distributed Task Scheduling Platform
admin_version=2.3.0 admin_version=2.3.0
admin_i18n=en admin_i18n=en
......
admin_name=任务调度中心 admin_name=任务调度中心
admin_name_full=分布式任务调度平台XXL-JOB admin_name_full=分布式任务调度平台
admin_version=2.3.0 admin_version=2.3.0
admin_i18n= admin_i18n=
......
admin_name=任務調度中心 admin_name=任務調度中心
admin_name_full=分布式任務調度平臺XXL-JOB admin_name_full=分布式任務調度平臺
admin_version=2.3.0 admin_version=2.3.0
admin_i18n= admin_i18n=
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<configuration debug="false" scan="true" scanPeriod="1 seconds"> <configuration debug="false" scan="true" scanPeriod="1 seconds">
<contextName>logback</contextName> <contextName>logback</contextName>
<property name="log.path" value="/data/applogs/xxl-job/xxl-job-admin.log"/> <property name="log.path" value="/home/meepo/logs/xxl-job/xxl-job-admin.log"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <encoder>
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
<#macro commonHeader> <#macro commonHeader>
<header class="main-header"> <header class="main-header">
<a href="${request.contextPath}/" class="logo"> <a href="${request.contextPath}/" class="logo">
<span class="logo-mini"><b>XXL</b></span> <span class="logo-mini"><b>任务调度系统</b></span>
<span class="logo-lg"><b>${I18n.admin_name}</b></span> <span class="logo-lg"><b>${I18n.admin_name}</b></span>
</a> </a>
<nav class="navbar navbar-static-top" role="navigation"> <nav class="navbar navbar-static-top" role="navigation">
...@@ -226,14 +226,5 @@ ...@@ -226,14 +226,5 @@
</#macro> </#macro>
<#macro commonFooter > <#macro commonFooter >
<footer class="main-footer"> <footer class="main-footer"></footer>
Powered by <b>XXL-JOB</b> ${I18n.admin_version}
<div class="pull-right hidden-xs">
<strong>Copyright &copy; 2015-${.now?string('yyyy')} &nbsp;
<a href="https://www.xuxueli.com/" target="_blank" >xuxueli</a>
&nbsp;
<a href="https://github.com/xuxueli/xxl-job" target="_blank" >github</a>
</strong><!-- All rights reserved. -->
</div>
</footer>
</#macro> </#macro>
\ No newline at end of file
...@@ -25,12 +25,8 @@ ...@@ -25,12 +25,8 @@
<h4>${I18n.admin_name_full}</h4> <h4>${I18n.admin_name_full}</h4>
<br> <br>
<p> <p>
<a target="_blank" href="https://github.com/xuxueli/xxl-job">Github</a>&nbsp;&nbsp;&nbsp;&nbsp;
<iframe src="https://ghbtns.com/github-btn.html?user=xuxueli&repo=xxl-job&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px" style="margin-bottom:-5px;"></iframe>
<br><br> <br><br>
<a target="_blank" href="https://www.xuxueli.com/xxl-job/">${I18n.job_help_document}</a>
<br><br> <br><br>
</p> </p>
<p></p> <p></p>
</div> </div>
......
...@@ -243,23 +243,23 @@ ...@@ -243,23 +243,23 @@
<input type="hidden" name="glueRemark" value="GLUE代码初始化" > <input type="hidden" name="glueRemark" value="GLUE代码初始化" >
<textarea name="glueSource" style="display:none;" ></textarea> <textarea name="glueSource" style="display:none;" ></textarea>
<textarea class="glueSource_java" style="display:none;" > <textarea class="glueSource_java" style="display:none;" >
package com.xxl.job.service.handler; package cn.wisenergy.job.service.handler;
import com.xxl.job.core.context.XxlJobHelper; import cn.wisenergy.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.IJobHandler; import cn.wisenergy.job.core.handler.IJobHandler;
public class DemoGlueJobHandler extends IJobHandler { public class DemoGlueJobHandler extends IJobHandler {
@Override @Override
public void execute() throws Exception { public void execute() throws Exception {
XxlJobHelper.log("XXL-JOB, Hello World."); JobHelper.log("Hello World.");
} }
} }
</textarea> </textarea>
<textarea class="glueSource_shell" style="display:none;" > <textarea class="glueSource_shell" style="display:none;" >
#!/bin/bash #!/bin/bash
echo "xxl-job: hello shell" echo "hello shell"
echo "${I18n.jobinfo_script_location}:$0" echo "${I18n.jobinfo_script_location}:$0"
echo "${I18n.jobinfo_field_executorparam}:$1" echo "${I18n.jobinfo_field_executorparam}:$1"
...@@ -281,7 +281,7 @@ exit 0 ...@@ -281,7 +281,7 @@ exit 0
import time import time
import sys import sys
print "xxl-job: hello python" print "hello python"
print "${I18n.jobinfo_script_location}:", sys.argv[0] print "${I18n.jobinfo_script_location}:", sys.argv[0]
print "${I18n.jobinfo_field_executorparam}:", sys.argv[1] print "${I18n.jobinfo_field_executorparam}:", sys.argv[1]
...@@ -303,7 +303,7 @@ logging.info("脚本文件:" + sys.argv[0]) ...@@ -303,7 +303,7 @@ logging.info("脚本文件:" + sys.argv[0])
<textarea class="glueSource_php" style="display:none;" > <textarea class="glueSource_php" style="display:none;" >
<?php <?php
echo "xxl-job: hello php \n"; echo "hello php \n";
echo "${I18n.jobinfo_script_location}:$argv[0] \n"; echo "${I18n.jobinfo_script_location}:$argv[0] \n";
echo "${I18n.jobinfo_field_executorparam}:$argv[1] \n"; echo "${I18n.jobinfo_field_executorparam}:$argv[1] \n";
...@@ -317,7 +317,7 @@ logging.info("脚本文件:" + sys.argv[0]) ...@@ -317,7 +317,7 @@ logging.info("脚本文件:" + sys.argv[0])
</textarea> </textarea>
<textarea class="glueSource_nodejs" style="display:none;" > <textarea class="glueSource_nodejs" style="display:none;" >
#!/usr/bin/env node #!/usr/bin/env node
console.log("xxl-job: hello nodejs") console.log("hello nodejs")
var arguments = process.argv var arguments = process.argv
...@@ -333,7 +333,7 @@ console.log("Good bye!") ...@@ -333,7 +333,7 @@ console.log("Good bye!")
process.exit(0) process.exit(0)
</textarea> </textarea>
<textarea class="glueSource_powershell" style="display:none;" > <textarea class="glueSource_powershell" style="display:none;" >
Write-Host "xxl-job: hello powershell" Write-Host "hello powershell"
Write-Host "${I18n.jobinfo_script_location}: " $MyInvocation.MyCommand.Definition Write-Host "${I18n.jobinfo_script_location}: " $MyInvocation.MyCommand.Definition
Write-Host "${I18n.jobinfo_field_executorparam}: " Write-Host "${I18n.jobinfo_field_executorparam}: "
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<body class="hold-transition login-page"> <body class="hold-transition login-page">
<div class="login-box"> <div class="login-box">
<div class="login-logo"> <div class="login-logo">
<a><b>XXL</b>JOB</a> <a><b>任务调度系统</b></a>
</div> </div>
<form id="loginForm" method="post" > <form id="loginForm" method="post" >
<div class="login-box-body"> <div class="login-box-body">
......
...@@ -28,7 +28,7 @@ public class XxlJobFileAppender { ...@@ -28,7 +28,7 @@ public class XxlJobFileAppender {
* ---/2017-12-25/821.log * ---/2017-12-25/821.log
* *
*/ */
private static String logBasePath = "/data/applogs/xxl-job/jobhandler"; private static String logBasePath = "/home/meepo/logs/xxl-job/jobhandler";
private static String glueSrcPath = logBasePath.concat("/gluesource"); private static String glueSrcPath = logBasePath.concat("/gluesource");
public static void initLogPath(String logPath){ public static void initLogPath(String logPath){
// init // init
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment