Commit 8bd2ba19 authored by liqin's avatar liqin 💬

Merge branch 'master' of http://111.203.232.171:8888/licc/shop-mall into master

parents b68ea24a 74fa93b3
......@@ -83,5 +83,4 @@ public class FileUtil {
}
return inputStream;
}
}
}
\ No newline at end of file
package cn.wisenergy.mapper;
import cn.wisenergy.model.app.TeamPerformance;
import cn.wisenergy.model.app.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
......@@ -100,4 +101,10 @@ public interface TeamPerformanceMapper extends BaseMapper<TeamPerformance> {
*/
List<TeamPerformance> getList(Map<String, Object> map);
/**
*
* @param userId
* @return
*/
TeamPerformance getByUserId(String userId);
}
......@@ -228,4 +228,12 @@ public interface UsersMapper extends BaseMapper<User> {
* @return
*/
User getUserByInviteCode(String inviteCode);
/**
* 根据用户的userid查询用户对象
* @param userId
* @return
*/
User getUserByUserId(String userId);
}
......@@ -27,7 +27,7 @@
<sql id="cols_exclude_id">
growth_award,award_total,month_award_total,month_increased,gold_award,farmer_award, forest_start_award,
partner_award,year_month,create_time,update_time
partner_award,`year_month`,create_time,update_time
</sql>
<sql id="vals">
......@@ -44,7 +44,7 @@
<if test="farmerAward != null">farmer_award =#{farmerAward},</if>
<if test="forestStartAward != null">forest_start_award =#{forestStartAward},</if>
<if test="partnerAward != null">partner_award =#{partnerAward},</if>
<if test="yearMonth != null">year_month =#{yearMonth},</if>
<if test="yearMonth != null">`year_month` =#{yearMonth},</if>
update_time =now()
</sql>
......@@ -58,7 +58,7 @@
<if test="farmerAward != null">and farmer_award =#{farmerAward}</if>
<if test="forestStartAward != null">and forest_start_award =#{forestStartAward}</if>
<if test="partnerAward != null">and partner_award =#{partnerAward}</if>
<if test="yearMonth != null">and year_month =#{yearMonth}</if>
<if test="yearMonth != null">and `year_month` =#{yearMonth}</if>
<if test="createTime != null">and create_time &gt;= #{createTime}</if>
<if test="updateTime != null">and #{updateTime} &gt;= update_time</if>
</sql>
......@@ -96,7 +96,7 @@
<include refid="table"/>
<where>
<if test="yearMonth != null">
year_month=#{yearMonth}
`year_month`=#{yearMonth}
</if>
</where>
order by create_time desc
......
......@@ -204,4 +204,13 @@
order by create_time desc
limit #{startNum},#{endNum}
</select>
<select id="getByUserId" resultType="cn.wisenergy.model.app.TeamPerformance">
select
<include refid="cols_all"/>
from
<include refid="table"/>
where
user_id = #{userId}
</select>
</mapper>
\ No newline at end of file
......@@ -429,4 +429,13 @@
invite_code = #{inviteCode}
</select>
<select id="getUserByUserId" resultType="cn.wisenergy.model.app.User">
select
<include refid="cols_all"/>
from
<include refid="table"/>
where
user_id = #{userId}
</select>
</mapper>
package cn.wisenergy.model.app;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author zw
* @ Description : 上月用户实体类
* @ Author : zw
* @ CreateDate : 2021/03/23 15:40
*/
@Data
@ApiModel
public class LastMonthUserInfo implements Serializable {
/**
* 主键id
*/
@ApiModelProperty(name = "id", value = "用户主键id")
private Integer id;
/**
* 手机号作为用户账号
*/
@ApiModelProperty(name = "user_id", value = "用户id")
private String userId;
/**
* 密码
*/
@ApiModelProperty(name = "password", value = "用户密码")
private String password;
/**
* 用户头像
*/
@ApiModelProperty(name = "用户头像", value = "headImage")
private String headImage;
/**
* 用户会员等级
*/
@ApiModelProperty(name = "user_level", value = "用户会员等级")
private int userLevel;
/**
* 跨境额度
*/
@ApiModelProperty(name = "cross_border_line", value = "跨境额度")
private BigDecimal crossBorderLine;
/**
* 身份证号码
*/
@ApiModelProperty(name = "id_card_number", value = "身份证号码")
private String idCardNumber;
/**
* 粉丝昵称
*/
@ApiModelProperty(name = "fans_nickname", value = "粉丝昵称")
private String fansNickname;
/**
* 有赞粉丝id,有赞自动生成
*/
@ApiModelProperty(name = "fans_id", value = "有赞粉丝id,有赞自动生成")
private String fansId;
/**
* 用户本人邀请码
*/
@ApiModelProperty(name = "invite_code", value = "用户本人邀请码")
private String inviteCode;
/**
* 推荐人邀请码
*/
@ApiModelProperty(name = "be_invited_code", value = "推荐人邀请码")
private String beInvitedCode;
/**
* 专属客服id
*/
@ApiModelProperty(name = "customerServiceId", value ="专属客服id" )
private String customerServiceId;
/**
* 创建时间
*/
@ApiModelProperty(name = "createTime", value = "创建时间")
private Date createTime;
/**
* 修改时间
*/
@ApiModelProperty(name = "updateTime", value = "修改时间")
private Date updateTime;
/**
* 账户冻结字段 0正常 1冻结
*/
@ApiModelProperty(name = "frozen", value = "账户冻结字段")
private Integer frozen;
}
......@@ -104,6 +104,12 @@
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg-platform</artifactId>
</dependency>
<!--图片压缩处理-->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
</dependencies>
<!-- MAVEN构建 -->
......
package cn.wisenergy.service.app;
import cn.wisenergy.model.app.User;
import java.util.Map;
/**
* @author 86187
*/
......@@ -11,9 +15,40 @@ public interface AerialDeliveryUserService {
void aerialDeliveryUserRand();
/**
* 设置邀请码接口
* 设置邀请码接口 维护直推和团队数据
* @param userId 当前用户id
* @param userInvitedId 推荐人用户id
*/
void userSetBeinviteCode(String userId, String userInvitedId);
/**
* 团队整体数据的计算
* @param beInvitedUserId 推荐人的用户id
* @param userId 当前用户的id
* @return map 团队中各等级的用户数量
*/
Map teamUserInfoByAerialDelivery(String beInvitedUserId, String userId);
/**
* 整体团队数据维护
* @param teamDataMap teamUserInfoByAerialDelivery 返回的map
* @param userId 当前用户的userid
*/
void teamData(Map<String, Integer> teamDataMap, String userId);
/**
* 查询当前用户所在团队的最上级用户
* @param userId 当前用户的userID
* @return user 当前用户所在的最上级用户
*/
User highUser(String userId);
/**
* 团队数据维护 只维护团队数据 不包含直推数据的维护
* @param userId 当期用户的userId
* @param userInvitedId 推荐人的userId
*/
void teamDataNotRecommend(String userId, String userInvitedId);
}
package cn.wisenergy.service.app;
public interface LastMonthUserInfoService {
void userInfoMirrorImage();
}
......@@ -416,7 +416,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, AccountInfo>
//获取账户信息
AccountInfo accountInfo = accountMapper.getByUserId(user.getUserId());
BigDecimal bigDecimal = new BigDecimal(income);
BigDecimal bigDecimal = new BigDecimal(income).setScale(2,RoundingMode.HALF_UP);
//获取用户本月收益=可提现金额+ 本月肥料收益
BigDecimal performanceMonth = accountInfo.getExtractMoney().add(bigDecimal);
......
......@@ -7,16 +7,15 @@ import cn.wisenergy.model.app.RecommendUser;
import cn.wisenergy.model.app.TeamUserInfo;
import cn.wisenergy.model.app.User;
import cn.wisenergy.service.app.AerialDeliveryUserService;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.pqc.crypto.newhope.NHOtherInfoGenerator;
import org.bytedeco.javacpp.presets.opencv_core;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@Service
......@@ -76,7 +75,7 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
}
}
log.info("--------------------------空投池用户随机分开始执行完成---------------------------------");
log.info("--------------------------空投池用户随机分开始执行完成---------------------------------");
}
@Override
......@@ -150,10 +149,12 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
}
/**
* 团队数据维护
* @param beInvitedUserId 推荐人userId
* @param userId 当前用户的userId
* 团队整体数据的计算
* @param beInvitedUserId 推荐人的用户id
* @param userId 当前用户的id
* @return map 团队中各等级的用户数量
*/
@Override
public Map<String, Integer> teamUserInfoByAerialDelivery(String beInvitedUserId, String userId) {
TeamUserInfo teamUserInfoByIntvitedUser = teamUserInfoMapper.getByUserId(beInvitedUserId);
TeamUserInfo teamUserInfoByUserId = teamUserInfoMapper.getByUserId(userId);
......@@ -228,6 +229,7 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
}
//整体团队数据维护
@Override
public void teamData(Map<String, Integer> teamDataMap, String userId){
//最上级用户对象
User user = usersMapper.getByUserId(userId);
......@@ -263,6 +265,7 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
}
//查询顶级用户
@Override
public User highUser(String userId) {
User byUserId = usersMapper.getByUserId(userId);
String beInvitedCode = byUserId.getBeInvitedCode();
......@@ -274,4 +277,88 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
return userByInviteCode;
}
/**
* 团队数据维护 只维护团队数据 不包含直推数据的维护
* @param userId 当期用户的userId
* @param userInvitedId 推荐人的userId
*/
@Override
public void teamDataNotRecommend(String userId, String userInvitedId){
//4、用户的团队表数据维护
//上级用户的团队数据
TeamUserInfo teamUserInfoMapperByUserId = teamUserInfoMapper.getByUserId(userInvitedId);
//团队中各等级人数
Integer normalUserNum = teamUserInfoMapperByUserId.getNormalUserNum();
Integer seedlingNum = teamUserInfoMapperByUserId.getSeedlingNum();
Integer bronzeTreeNum = teamUserInfoMapperByUserId.getBronzeTreeNum();
Integer silverTreeNum = teamUserInfoMapperByUserId.getSilverTreeNum();
Integer goldTreeNum = teamUserInfoMapperByUserId.getGoldTreeNum();
Integer farmerNum = teamUserInfoMapperByUserId.getFarmerNum();
Integer forestStartNum = teamUserInfoMapperByUserId.getForestStartNum();
Integer partnerNum = teamUserInfoMapperByUserId.getPartnerNum();
//当前用户升级后的数据
User userByUserId = usersMapper.getUserByUserId(userId);
if (null != userByUserId){
int userLevel = userByUserId.getUserLevel();
if (userLevel == 1){
//用户等级为1
// 团队普通用户数量 -1
// 是团队幼苗数量 +1
if (normalUserNum > 0){
normalUserNum = normalUserNum - 1;
}
seedlingNum = seedlingNum + 1;
}else if (userLevel == 2){
if (seedlingNum > 0){
seedlingNum = seedlingNum - 1;
}
bronzeTreeNum = bronzeTreeNum + 1;
}else if (userLevel == 3){
if (bronzeTreeNum > 0){
bronzeTreeNum = bronzeTreeNum - 1;
}
silverTreeNum = silverTreeNum + 1;
}else if (userLevel == 4){
if (silverTreeNum > 0){
silverTreeNum = silverTreeNum - 1;
}
goldTreeNum = goldTreeNum + 1;
}else if (userLevel == 5){
if (goldTreeNum > 0){
goldTreeNum = goldTreeNum - 1;
}
farmerNum = farmerNum + 1;
}else if (userLevel == 6){
if (farmerNum > 0){
farmerNum = farmerNum - 1;
}
forestStartNum = forestStartNum + 1;
}else if (userLevel == 7){
if (forestStartNum > 0){
forestStartNum = forestStartNum - 1;
}
partnerNum = partnerNum + 1;
}
}
Map<String , Integer> teamDataMap = new HashMap<String , Integer>();
teamDataMap.put("resultTeamNormalNum",normalUserNum);
teamDataMap.put("resultTeamSeedlingNum",seedlingNum);
teamDataMap.put("resultTeamBronzeTreeNum",bronzeTreeNum);
teamDataMap.put("resultTeamSilverTreeNum",silverTreeNum);
teamDataMap.put("resultTeamGoldTreeNum",goldTreeNum);
teamDataMap.put("resultTeamFarmerNum",farmerNum);
teamDataMap.put("resultTeamForestStartNum",forestStartNum);
teamDataMap.put("resultTeamPartnerNum",partnerNum);
//4.1获取当前团队中最上级的用户对象
User highUser = highUser(userId);
if (null != highUser){
//4.2 最上级用户id
String highUserId = highUser.getUserId();
//4.1整体团队数据维护
teamData(teamDataMap, highUserId);
}
}
}
......@@ -55,14 +55,29 @@ public class BankServiceImpl extends ServiceImpl<BankInfoMapper, BankInfo> imple
@Override
public R<BankInfo> add(BankInfo bankInfo) {
log.info("shop-mall[]BankServiceImpl[]add[]input.param.bankInfo:" + bankInfo);
if (null == bankInfo) {
if (null == bankInfo || StringUtils.isBlank(bankInfo.getUserId())) {
return R.error("入参不能为空!");
}
int count = bankInfoMapper.add(bankInfo);
if (count == 0) {
//获取该用户下是否有银行卡信息 无:新增 有:编辑
BankInfo bank = bankInfoMapper.getByUserId(bankInfo.getUserId());
if (null == bank) {
int count = bankInfoMapper.add(bankInfo);
if (count == 0) {
return R.error("保存用户银行卡信息失败!");
}
return R.ok(bankInfo);
}
bank.setName(bankInfo.getName());
bank.setCardNumber(bankInfo.getCardNumber());
bank.setBankName(bankInfo.getBankName());
bank.setIdCardNo(bankInfo.getIdCardNo());
bank.setUserId(bankInfo.getUserId());
int number = bankInfoMapper.edit(bank);
if (number == 0) {
return R.error("保存用户银行卡信息失败!");
}
return R.ok(bankInfo);
}
......@@ -81,6 +96,7 @@ public class BankServiceImpl extends ServiceImpl<BankInfoMapper, BankInfo> imple
old.setBankName(bankInfo.getBankName());
old.setCardNumber(bankInfo.getCardNumber());
old.setName(bankInfo.getName());
old.setIdCardNo(bankInfo.getIdCardNo());
//编辑
int count = bankInfoMapper.edit(old);
......
package cn.wisenergy.service.app.impl;
import cn.wisenergy.mapper.LastAccountMapper;
import cn.wisenergy.service.app.LastMonthUserInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class LastMonthUserInfoServiceImpl implements LastMonthUserInfoService {
@Autowired
private LastAccountMapper lastAccountMapper;
@Override
public void userInfoMirrorImage() {
//把用户表user_info备份
lastAccountMapper.copyTable("user_info","user_info_image");
lastAccountMapper.deleteTable("user_info_backup");
lastAccountMapper.updateTableName("user_info_image","user_info_backup");
//recommend_user表备份
lastAccountMapper.copyTable("recommend_user","recommend_user_image");
lastAccountMapper.deleteTable("recommend_user_backup");
lastAccountMapper.updateTableName("recommend_user_image","recommend_user_backup");
//team_user_info表备份
lastAccountMapper.copyTable("team_user_info","team_user_info_image");
lastAccountMapper.deleteTable("team_user_info_backup");
lastAccountMapper.updateTableName("team_user_info_image","team_user_info_backup");
}
}
......@@ -119,6 +119,7 @@ public class TradeRecordServiceImpl extends ServiceImpl<TradeRecordMapper, Trade
return R.ok(1, false);
}
} else {
result.setId(currentMonthAward.getId());
int count = monthAwardMapper.edit(result);
if (count == 0) {
return R.ok(1, false);
......
package cn.wisenergy.service.app.impl;
import cn.hutool.core.img.Img;
import cn.wisenergy.common.expection.BaseException;
import cn.wisenergy.common.utils.*;
......@@ -12,6 +14,9 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.nio.file.Files;
......@@ -21,8 +26,10 @@ import java.nio.file.StandardCopyOption;
import cn.wisenergy.service.app.UploadService;
import java.io.File;
import java.util.*;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import cn.wisenergy.mapper.ShopZxMapper;
......@@ -31,6 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
/**
* Created by m1991 on 2021/2/24 13:42
*/
......@@ -52,7 +60,7 @@ public class UploadServiceImpl implements UploadService {
private String path;
/**
* 视频文件上传
* TODO 视频文件上传
*/
@Override
public Map<String, Object> uploadVideo(MultipartFile file, HttpServletRequest request, String zxField, String inviteCode) throws Exception {
......@@ -105,7 +113,7 @@ public class UploadServiceImpl implements UploadService {
}
/**
* 图片文件上传
* TODO 图片文件上传
*/
@Override
public Map<String, Object> uploadImage(MultipartFile file, String inviteCode) throws Exception {
......@@ -148,7 +156,7 @@ public class UploadServiceImpl implements UploadService {
}
/**
* 多图片
* TODO 多图片
*
* @param files
* @param zxField
......@@ -158,6 +166,7 @@ public class UploadServiceImpl implements UploadService {
@Override
public Map imageUpload(MultipartFile[] files, String zxField, String inviteCode) {
String zxUrl = new String();
String xxurl=new String();
if (null == inviteCode || "".equals(inviteCode)) {
inviteCode = "0";
}
......@@ -171,23 +180,23 @@ public class UploadServiceImpl implements UploadService {
//创建集合
List<Map<String, Object>> root = new ArrayList<Map<String, Object>>();
String fileName1 = null;
// 要上传的目标文件存放的绝对路径
// final String localPath = path;
Long time = System.currentTimeMillis();
String localPath = "/upload/";
Map<String, Object> result = new HashMap<String, Object>();//一个文件上传的结果
String msg = "";//上传结果信息
//上传图片不为空时
long sa = 0;
for (MultipartFile file : files) {
sa =file.getSize();
sa = file.getSize();
}
if (sa > 0) {
//遍历图片数据
for (MultipartFile file : files) {
//判断上传文件格式
String fileType = file.getContentType();
log.info(file.getSize() + "");
log.info(file.getSize() + "");
if (("image/jpeg").equals(fileType) || ("image/png").equals(fileType) || ("image/gif").equals(fileType) || ("image/jpg").equals(fileType) || ("image/bmp").equals(fileType) || ("application/octet-stream").equals(fileType)) {
//上传后保存的文件名(需要防止图片重名导致的文件覆盖)
//获取文件名
......@@ -205,14 +214,22 @@ public class UploadServiceImpl implements UploadService {
fileName = "1" + UUID.randomUUID() + fileName1 + ".jpg";//文件新名称
}
//设置文件存储路径,可以存放在你想要指定的路径里面
String Path = "/opt/upload/video/"; //上传图片存放位置
zxUrl += localPath + fileName + ",";
if (FileUtils.upload(file, Path, fileName)) {
String Path = "/upload/";
String Path1 = "/opt/upload/video/"; //上传图片存放位置
zxUrl += Path + fileName + ",";
String UrlzxPath ="/opt/upload/video/";
xxurl=UrlzxPath+ fileName;
if (FileUtils.upload(file, Path1, fileName)) {
//文件存放的相对路径(一般存放在数据库用于img标签的src)
String relativePath = "用于判断是否图片上传成功,返回值有:" + fileName;
result.put("relativePath", relativePath);//前端根据是否存在该字段来判断上传是否成功
msg = "图片上传成功";
result.put("zxUrl", zxUrl);
FileOutputStream fouts = null;
Img.from(cn.hutool.core.io.FileUtil.file(xxurl))
.setQuality(0.8)//压缩比率
.write(cn.hutool.core.io.FileUtil.file(xxurl));
} else {
msg = "图片上传失败";
}
......@@ -230,7 +247,7 @@ public class UploadServiceImpl implements UploadService {
shopZxMapper.zxadd(zxUrl, zxField, inviteCode, zxDate);
return result;
//用户只上传文字时
} else if (null != zxField&&sa == 0) {
} else if (null != zxField && sa == 0) {
/**
* 生成当前时间戳
*/
......@@ -251,7 +268,7 @@ public class UploadServiceImpl implements UploadService {
}
/**
* 多文件上传 TODO
* TODO 多文件上传
*/
private Path fileStorageLocation; // 文件在本地存储的地址
......@@ -356,7 +373,7 @@ public class UploadServiceImpl implements UploadService {
@Override
public List<zxUserVo> selectAll(Integer pageNum, Integer pageSize) {
return shopZxMapper.selectAll(pageNum,pageSize);
return shopZxMapper.selectAll(pageNum, pageSize);
}
/**
......@@ -423,7 +440,7 @@ public class UploadServiceImpl implements UploadService {
map.put("code", 1);
map.put("msg", "审核失败!");
}
;
return map;
}
}
......@@ -210,5 +210,6 @@
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:macosx-x86_64:4.0.2-1.4.3" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:windows-x86:4.0.2-1.4.3" level="project" />
<orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:windows-x86_64:4.0.2-1.4.3" level="project" />
<orderEntry type="library" name="Maven: net.coobird:thumbnailator:0.4.8" level="project" />
</component>
</module>
\ No newline at end of file
......@@ -58,6 +58,12 @@
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!--图片压缩处理-->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
</dependencies>
<!-- MAVEN构建 -->
......
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