src/main/java/com/nq/controller/agent/AgentController.java
@@ -138,4 +138,20 @@ @RequestParam("userId") Integer id){ return iUserService.getMoney(id); } //查询首页充值,提现,注册统计 @RequestMapping({"moneyCount.do"}) @ResponseBody public ServerResponse moneyCount(@RequestParam(value = "agentId", required = false) String agentId,@RequestParam(value = "startTime", required = false) String startTime,@RequestParam(value = "entTime", required = false) String entTime) { return this.iSiteAdminService.moneyCount(agentId,startTime,entTime); } //查询代理总资金 @RequestMapping({"totalAgencyFunds.do"}) @ResponseBody public ServerResponse totalAgencyFunds(@RequestParam(value = "agentId", required = false) String agentId) { return this.iSiteAdminService.totalAgencyFunds(agentId); } } src/main/java/com/nq/controller/backend/AdminController.java
@@ -379,4 +379,18 @@ return iUserAssetsServices.updateUserAssets(id,amt,type); } //查询首页充值,提现,注册统计 @RequestMapping({"moneyCount.do"}) @ResponseBody public ServerResponse moneyCount(@RequestParam(value = "agentId", required = false) String agentId,@RequestParam(value = "startTime", required = false) String startTime,@RequestParam(value = "entTime", required = false) String entTime) { return this.iSiteAdminService.moneyCount(agentId,startTime,entTime); } //查询代理总资金 @RequestMapping({"totalAgencyFunds.do"}) @ResponseBody public ServerResponse totalAgencyFunds(@RequestParam(value = "agentId", required = false) String agentId) { return this.iSiteAdminService.totalAgencyFunds(agentId); } } src/main/java/com/nq/controller/backend/AdminLogsController.java
@@ -42,6 +42,9 @@ @Autowired ISiteMessageService iSiteMessageService; @Autowired ISiteUserOptionLogService iSiteUserOptionLogService; //分页查询日志管理 所有定时任务信息及模糊查询 @RequestMapping({"taskList.do"}) @ResponseBody @@ -106,7 +109,11 @@ } @RequestMapping("optionList.do") @ResponseBody public ServerResponse optionList(@RequestParam(value = "userId", required = false) Integer userId, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize){ return this.iSiteUserOptionLogService.list(null,userId,pageNum,pageSize); } } src/main/java/com/nq/dao/AgentUserMapper.java
@@ -2,14 +2,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.nq.pojo.AgentUser; import java.util.List; import org.apache.ibatis.annotations.Param; public interface AgentUserMapper { public interface AgentUserMapper extends BaseMapper<AgentUser> { int deleteByPrimaryKey(Integer paramInteger); int insert(AgentUser paramAgentUser); int insertSelective(AgentUser paramAgentUser); src/main/java/com/nq/dao/UserOptionLogMapper.java
New file @@ -0,0 +1,12 @@ package com.nq.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.nq.pojo.UserOptionLog; import com.nq.vo.user.UserOptionLogVO; import java.util.List; public interface UserOptionLogMapper extends BaseMapper<UserOptionLog> { List<UserOptionLogVO> selective(Integer userId); } src/main/java/com/nq/dao/UserWithdrawMapper.java
@@ -1,14 +1,13 @@ package com.nq.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.nq.pojo.UserWithdraw; import java.math.BigDecimal; import java.util.List; import org.apache.ibatis.annotations.Param; public interface UserWithdrawMapper { public interface UserWithdrawMapper extends BaseMapper<UserWithdraw> { int deleteByPrimaryKey(Integer paramInteger); int insert(UserWithdraw paramUserWithdraw); int insertSelective(UserWithdraw paramUserWithdraw); src/main/java/com/nq/pojo/UserOptionLog.java
New file @@ -0,0 +1,35 @@ package com.nq.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.util.Date; @Data @TableName("user_option_log") @Builder @AllArgsConstructor @NoArgsConstructor public class UserOptionLog { @TableId(type = IdType.AUTO,value = "id") private Integer id; private BigDecimal money; private Integer type; private Integer userId; private Integer userAccectId; private Date createTime; } src/main/java/com/nq/pojo/UserWithdraw.java
@@ -1,13 +1,15 @@ package com.nq.pojo; import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.math.BigDecimal; import java.util.Date; @Data public class UserWithdraw { private Integer id; @@ -40,162 +42,9 @@ private BigDecimal withFee; @Excel(name = "原因") private String withMsg; @TableField(exist = false) private String userPhone; private String assetsType; public UserWithdraw(Integer id, Integer userId, String nickName, Integer agentId, BigDecimal withAmt, Date applyTime, Date transTime, String withName, String bankNo, String bankName, String bankAddress, Integer withStatus, BigDecimal withFee, String withMsg) { this.id = id; this.userId = userId; this.nickName = nickName; this.agentId = agentId; this.withAmt = withAmt; this.applyTime = applyTime; this.transTime = transTime; this.withName = withName; this.bankNo = bankNo; this.bankName = bankName; this.bankAddress = bankAddress; this.withStatus = withStatus; this.withFee = withFee; this.withMsg = withMsg; } public UserWithdraw() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } public Integer getAgentId() { return agentId; } public void setAgentId(Integer agentId) { this.agentId = agentId; } public BigDecimal getWithAmt() { return withAmt; } public void setWithAmt(BigDecimal withAmt) { this.withAmt = withAmt; } public Date getApplyTime() { return applyTime; } public void setApplyTime(Date applyTime) { this.applyTime = applyTime; } public Date getTransTime() { return transTime; } public void setTransTime(Date transTime) { this.transTime = transTime; } public String getWithName() { return withName; } public void setWithName(String withName) { this.withName = withName; } public String getBankNo() { return bankNo; } public void setBankNo(String bankNo) { this.bankNo = bankNo; } public String getBankName() { return bankName; } public void setBankName(String bankName) { this.bankName = bankName; } public String getBankAddress() { return bankAddress; } public void setBankAddress(String bankAddress) { this.bankAddress = bankAddress; } public Integer getWithStatus() { return withStatus; } public void setWithStatus(Integer withStatus) { this.withStatus = withStatus; } public BigDecimal getWithFee() { return withFee; } public void setWithFee(BigDecimal withFee) { this.withFee = withFee; } public String getWithMsg() { return withMsg; } public void setWithMsg(String withMsg) { this.withMsg = withMsg; } public String getUserPhone() { return userPhone; } public void setUserPhone(String userPhone) { this.userPhone = userPhone; } } src/main/java/com/nq/service/ISiteAdminService.java
@@ -27,4 +27,10 @@ ServerResponse count(); ServerResponse deleteAdmin(Integer adminId); ServerResponse moneyCount(String agentId,String startTime, String entTime); ServerResponse totalAgencyFunds(String agentId); } src/main/java/com/nq/service/ISiteUserOptionLogService.java
New file @@ -0,0 +1,10 @@ package com.nq.service; import com.github.pagehelper.PageInfo; import com.nq.common.ServerResponse; public interface ISiteUserOptionLogService { ServerResponse<PageInfo> list( Integer agentId,Integer userId, int pageNum, int pageSize); } src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
@@ -1,19 +1,16 @@ package com.nq.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.nq.dao.SiteAdminMapper; import com.nq.dao.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.nq.common.ServerResponse; import com.nq.dao.UserMapper; import com.nq.dao.UserRechargeMapper; import com.nq.dao.UserWithdrawMapper; import com.nq.pojo.SiteAdmin; import com.nq.pojo.UserRecharge; import com.nq.pojo.*; import com.nq.service.IAgentUserService; @@ -29,6 +26,7 @@ import com.nq.service.IUserWithdrawService; import com.nq.utils.ConverterUtil; import com.nq.utils.PropertiesUtil; import com.nq.utils.SymmetricCryptoUtil; @@ -41,14 +39,17 @@ import java.math.BigDecimal; import java.util.Date; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import com.nq.vo.agent.AgentUserNodeVO; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -102,6 +103,12 @@ @Resource UserMapper userMapper; @Autowired AgentUserMapper agentUserMapper; @Autowired UserWithdrawMapper userWithdrawMapper; public ServerResponse login(String adminPhone, String adminPwd, String verifyCode, HttpServletRequest request) { @@ -479,10 +486,257 @@ return ServerResponse.createBySuccess(adminCountVO); } @Override public ServerResponse totalAgencyFunds(String agentId) { BigDecimal inTotalAmount = BigDecimal.ZERO; BigDecimal usTotalAmount = BigDecimal.ZERO; public static void main(String[] args) { System.out.println(RedisShardedPoolUtils.get("1")); System.out.println(RedisShardedPoolUtils.get("2")); BigDecimal inTotalWithdrawAmount = BigDecimal.ZERO; BigDecimal usTotalWithdrawAmount = BigDecimal.ZERO; Map<String, Object> map = new HashMap<>(); Long todayRegister = 0L;//今日注册 map.put("todayRegister", todayRegister); //入金 map.put("inTotalAmount", inTotalAmount); map.put("usTotalAmount", usTotalAmount); //出金 map.put("inTotalWithdrawAmount", inTotalWithdrawAmount); map.put("usTotalWithdrawAmount", usTotalWithdrawAmount); //查询所有代理用户(管理员) List<AgentUser> agentUsers = agentUserMapper.selectList(new LambdaQueryWrapper<AgentUser>() .eq(AgentUser::getAgentLevel,0) .eq(StringUtils.isNotBlank(agentId),AgentUser::getId,agentId)); List<AgentUser> lowerAgentUsers = agentUserMapper.selectList(new LambdaQueryWrapper<AgentUser>() .ne(AgentUser::getAgentLevel,0)); if(CollectionUtil.isEmpty(agentUsers)){ return ServerResponse.createBySuccess(map); } //今日开始结束时间 LocalDate currentDate = LocalDate.now(); LocalDate nextDay = currentDate.plusDays(1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String start = currentDate.format(formatter); String end = nextDay.format(formatter); for (AgentUser agentUser : agentUsers) { AgentUserNodeVO userNodeVO = ConverterUtil.convert(agentUser, AgentUserNodeVO.class); List<AgentUserNodeVO> agentUserNodeVOS = ConverterUtil.convertToList(lowerAgentUsers, AgentUserNodeVO.class); List<AgentUserNodeVO> nodeJson = getNodeJson(userNodeVO, agentUserNodeVOS); userNodeVO.setChildList(nodeJson); //当前节点和子节点的id List<Integer> ids = getAllChildrenIds(userNodeVO); //查询代理id下面所有的用户 List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getAgentId, ids)); //查询用户充值 List<Integer> userIds = users.stream().map(User::getId).collect(Collectors.toList()); if(CollectionUtil.isEmpty(userIds)){ continue; } //今日注册数量 todayRegister = userMapper.selectCount(new LambdaQueryWrapper<User>() .ge(User::getRegTime, start) .le(User::getRegTime, end) .in(CollectionUtil.isNotEmpty(userIds),User::getId,userIds)); List<UserRecharge> userRecharges = userRechargeMapper.selectList(new LambdaQueryWrapper<UserRecharge>() .eq(UserRecharge::getOrderStatus, 1) .in(UserRecharge::getUserId,userIds)); Map<String, List<UserRecharge>> typeList = userRecharges.stream().collect(Collectors.groupingBy(UserRecharge::getAssetsType)); List<UserRecharge> inUserRecharge = typeList.get("IN"); List<UserRecharge> usUserRecharge = typeList.get("US"); if(CollectionUtil.isNotEmpty(inUserRecharge)){ for (UserRecharge userRecharge : inUserRecharge) { inTotalAmount = inTotalAmount.add(userRecharge.getPayAmt()); } } if(CollectionUtil.isNotEmpty(usUserRecharge)){ for (UserRecharge userRecharge : usUserRecharge) { usTotalAmount = usTotalAmount.add(userRecharge.getPayAmt()); } } //总提现 List<UserWithdraw> userWithdraws = userWithdrawMapper.selectList(new LambdaQueryWrapper<UserWithdraw>() .eq(UserWithdraw::getWithStatus, 1) .in(CollectionUtil.isNotEmpty(userIds),UserWithdraw::getUserId,userIds)); Map<String, List<UserWithdraw>> typeWithdrawsList = userWithdraws.stream().collect(Collectors.groupingBy(UserWithdraw::getAssetsType)); List<UserWithdraw> inUserWithdraws = typeWithdrawsList.get("IN"); List<UserWithdraw> usUserWithdraws = typeWithdrawsList.get("US"); if(CollectionUtil.isNotEmpty(inUserWithdraws)){ for (UserWithdraw userWithdraw : inUserWithdraws) { inTotalWithdrawAmount = inTotalWithdrawAmount.add(userWithdraw.getWithAmt()); } } if(CollectionUtil.isNotEmpty(usUserWithdraws)){ for (UserWithdraw userWithdraw : usUserWithdraws) { usTotalWithdrawAmount = usTotalWithdrawAmount.add(userWithdraw.getWithAmt()); } } } map.put("todayRegister", todayRegister); map.put("inTotalAmount", inTotalAmount); map.put("usTotalAmount", usTotalAmount); map.put("inTotalWithdrawAmount", inTotalWithdrawAmount); map.put("usTotalWithdrawAmount", usTotalWithdrawAmount); return ServerResponse.createBySuccess(map); } @Override public ServerResponse moneyCount(String agentId,String startTime, String entTime) { BigDecimal todayRechargeAmount = BigDecimal.ZERO;//今日充值金额 BigDecimal todayWithdrawAmount = BigDecimal.ZERO;//今日提现金额 Long todayRegister = 0L;//今日注册 Long todayWithdraw = 0L;//今日充值总人数 BigDecimal rechargeTotalAmount = BigDecimal.ZERO;//总充值金额 BigDecimal withdrawalTotalAmount = BigDecimal.ZERO;//总提现金额 Map<String, Object> map = new HashMap<>(); map.put("todayRechargeAmount", todayRechargeAmount); map.put("todayWithdrawAmount", todayWithdrawAmount); map.put("todayRegister", todayRegister); map.put("todayWithdraw", todayWithdraw); map.put("rechargeTotalAmount", rechargeTotalAmount); map.put("withdrawalTotalAmount", withdrawalTotalAmount); //今日开始结束时间 LocalDate currentDate = LocalDate.now(); LocalDate nextDay = currentDate.plusDays(1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String start = currentDate.format(formatter); String end = nextDay.format(formatter); List<Integer> userIds = null; if(StringUtils.isNotEmpty(agentId)){ //当前代理 AgentUser agentUser = agentUserMapper.selectById(agentId); if(null == agentUser){ return ServerResponse.createBySuccess(map); } List<AgentUser> lowerAgentUsers = agentUserMapper.selectList(new LambdaQueryWrapper<AgentUser>()); AgentUserNodeVO userNodeVO = ConverterUtil.convert(agentUser, AgentUserNodeVO.class); List<AgentUserNodeVO> agentUserNodeVOS = ConverterUtil.convertToList(lowerAgentUsers, AgentUserNodeVO.class); List<AgentUserNodeVO> nodeJson = getNodeJson(userNodeVO, agentUserNodeVOS); userNodeVO.setChildList(nodeJson); //当前节点和子节点的id List<Integer> ids = getAllChildrenIds(userNodeVO); //查询代理id下面所有的用户 List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getAgentId, ids)); userIds = users.stream().map(User::getId).collect(Collectors.toList()); } //今日充值 List<UserRecharge> todayRecharges = userRechargeMapper.selectList(new LambdaQueryWrapper<UserRecharge>().eq(UserRecharge::getOrderStatus, 1) .ge(UserRecharge::getPayTime, start) .le(UserRecharge::getPayTime, end) .in(CollectionUtil.isNotEmpty(userIds),UserRecharge::getUserId,userIds)); //今日提现 List<UserWithdraw> todayWithdraws = userWithdrawMapper.selectList(new LambdaQueryWrapper<UserWithdraw>().eq(UserWithdraw::getWithStatus, 1) .ge(UserWithdraw::getTransTime, start) .le(UserWithdraw::getTransTime, end) .in(CollectionUtil.isNotEmpty(userIds),UserWithdraw::getUserId,userIds)); //总充值 List<UserRecharge> userRecharges = userRechargeMapper.selectList(new LambdaQueryWrapper<UserRecharge>().eq(UserRecharge::getOrderStatus, 1) .ge(StringUtils.isNotBlank(startTime), UserRecharge::getPayTime, startTime) .le(StringUtils.isNotBlank(entTime), UserRecharge::getPayTime, entTime) .in(CollectionUtil.isNotEmpty(userIds),UserRecharge::getUserId,userIds)); //总提现 List<UserWithdraw> userWithdraws = userWithdrawMapper.selectList(new LambdaQueryWrapper<UserWithdraw>().eq(UserWithdraw::getWithStatus, 1) .ge(StringUtils.isNotBlank(startTime), UserWithdraw::getTransTime, startTime) .le(StringUtils.isNotBlank(entTime), UserWithdraw::getTransTime, entTime) .in(CollectionUtil.isNotEmpty(userIds),UserWithdraw::getUserId,userIds)); //今日注册数量 todayRegister = userMapper.selectCount(new LambdaQueryWrapper<User>() .ge(User::getRegTime, start) .le(User::getRegTime, end) .in(CollectionUtil.isNotEmpty(userIds),User::getId,userIds)); for (UserRecharge userRecharge : todayRecharges) { todayRechargeAmount = todayRechargeAmount.add(userRecharge.getPayAmt()); } for (UserWithdraw userWithdraw : todayWithdraws) { todayWithdrawAmount = todayWithdrawAmount.add(userWithdraw.getWithAmt()); } for (UserRecharge userRecharge : userRecharges) { rechargeTotalAmount = rechargeTotalAmount.add(userRecharge.getPayAmt()); } for (UserWithdraw userWithdraw : userWithdraws) { withdrawalTotalAmount = withdrawalTotalAmount.add(userWithdraw.getWithAmt()); } List<UserRecharge> distinctCustomers = todayRecharges.stream() .collect(Collectors.toMap(UserRecharge::getUserId, c -> c, (c1, c2) -> c1)) .values().stream() .collect(Collectors.toList()); todayWithdraw = Long.valueOf(distinctCustomers.size()); map.put("todayRechargeAmount", todayRechargeAmount); map.put("todayWithdrawAmount", todayWithdrawAmount); map.put("todayRegister", todayRegister); map.put("todayWithdraw", todayWithdraw); map.put("rechargeTotalAmount", rechargeTotalAmount); map.put("withdrawalTotalAmount", withdrawalTotalAmount); return ServerResponse.createBySuccess(map); } public static List<Integer> getAllChildrenIds(AgentUserNodeVO parent) { List<Integer> allChildrenIds = new ArrayList<>(); getAllChildrenIdsHelper(parent, allChildrenIds); return allChildrenIds; } private static void getAllChildrenIdsHelper(AgentUserNodeVO node, List<Integer> allChildrenIds) { allChildrenIds.add(node.getId()); if(CollectionUtil.isNotEmpty(node.getChildList())){ for (AgentUserNodeVO child : node.getChildList()) { getAllChildrenIdsHelper(child, allChildrenIds); } } } public List<AgentUserNodeVO> getNodeJson(AgentUserNodeVO agentUser, List<AgentUserNodeVO> nodes){ //当前层级当前点下的所有子节点 List<AgentUserNodeVO> childList = getChildNodes(agentUser.getId(),nodes); List<AgentUserNodeVO> list = new ArrayList<>(); childList.forEach(f->{ List<AgentUserNodeVO> childs = getNodeJson(f,nodes); //递归调用该方法 if(!childs.isEmpty()) { f.setChildList(childs); } list.add(f); }); return list; } /** * 获取当前节点的所有子节点 * @param nodeId * @param nodes * @return */ public List<AgentUserNodeVO> getChildNodes(Integer nodeId, List<AgentUserNodeVO> nodes){ List<AgentUserNodeVO> list = new ArrayList<>(); nodes.forEach(f->{ if(f.getParentId().equals(nodeId)){ list.add(f); } }); return list; } public String getDate(){ LocalDate currentDate = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); return currentDate.format(formatter); } } src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -132,7 +132,7 @@ @Override public void grabNews() { addNews(1, PropertiesUtil.getProperty("JP_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("JP_KEY") + "&type=6"); addNews(1, PropertiesUtil.getProperty("JP_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("JP_KEY") + "&type=6&country_id=35"); } private void addNews(Integer type, String url) { src/main/java/com/nq/service/impl/SiteUserOptionLogServiceImpl.java
New file @@ -0,0 +1,34 @@ package com.nq.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.nq.common.ServerResponse; import com.nq.dao.UserOptionLogMapper; import com.nq.service.ISiteUserOptionLogService; import com.nq.vo.user.UserOptionLogVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service("ISiteUserOptionLogService") public class SiteUserOptionLogServiceImpl implements ISiteUserOptionLogService { private static final Logger log = LoggerFactory.getLogger(SiteUserOptionLogServiceImpl.class); @Autowired UserOptionLogMapper userOptionLogMapper; @Override public ServerResponse<PageInfo> list( Integer agentId,Integer userId, int pageNum, int pageSize) { if(null != agentId){ } PageHelper.startPage(pageNum, pageSize); List<UserOptionLogVO> list = userOptionLogMapper.selective(userId); PageInfo pageInfo = new PageInfo(list); return ServerResponse.createBySuccess(pageInfo); } } src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -242,6 +242,28 @@ return ServerResponse.createBySuccess(map); } public String doGet(String pid, EStockType eStockType) { String apiUrl = eStockType.getStockUrl() + "/indices?country_id="+eStockType.getContryId()+"&key=" + eStockType.getStockKey(); try { URL url = new URL(apiUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); return response.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } public Map getSingleStock(String code) { if (StringUtils.isBlank(code)) return null; src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -4,10 +4,12 @@ import com.nq.common.ServerResponse; import com.nq.dao.MoneyLogMapper; import com.nq.dao.UserAssetsMapper; import com.nq.dao.UserOptionLogMapper; import com.nq.enums.EStockType; import com.nq.enums.EUserAssets; import com.nq.pojo.MoneyLog; import com.nq.pojo.UserAssets; import com.nq.pojo.UserOptionLog; import com.nq.service.IUserAssetsServices; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -35,6 +37,9 @@ @Autowired UserWithdrawServiceImpl withdrawService; @Resource UserOptionLogMapper userOptionLogMapper; @Override public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) { @@ -86,6 +91,13 @@ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt)); } if( userAssetsMapper.updateById(userAssets)>0){ userOptionLogMapper.insert(UserOptionLog.builder() .userId(userAssets.getUserId()) .money(bigAmt) .userAccectId(userAssets.getId()) .createTime(new Date()) .type(amt.contains("-")?0:1) .build()); return ServerResponse.createBySuccess(); }else{ return ServerResponse.createByErrorMsg("修改金额失败"); src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
@@ -148,6 +148,7 @@ userWithdraw.setWithStatus(Integer.valueOf(0)); BigDecimal withfee = siteSetting.getWithFeePercent().multiply(new BigDecimal(amt)).add(new BigDecimal(siteSetting.getWithFeeSingle().intValue())); userWithdraw.setWithFee(withfee); userWithdraw.setAssetsType(accsetType); int insertCount = this.userWithdrawMapper.insert(userWithdraw); if (insertCount > 0) { return ServerResponse.createBySuccessMsg("提现成功",request); src/main/java/com/nq/utils/ConverterUtil.java
New file @@ -0,0 +1,44 @@ package com.nq.utils; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; /** * @program: dabao * @description: * @create: 2024-04-01 14:10 **/ public class ConverterUtil { public static <T, V> V convert(T pojo, Class<V> voClass) { try { V vo = voClass.newInstance(); Field[] pojoFields = pojo.getClass().getDeclaredFields(); Field[] voFields = voClass.getDeclaredFields(); for (Field pojoField : pojoFields) { pojoField.setAccessible(true); for (Field voField : voFields) { voField.setAccessible(true); if (pojoField.getName().equals(voField.getName()) && pojoField.getType().equals(voField.getType())) { voField.set(vo, pojoField.get(pojo)); break; } } } return vo; } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); return null; } } public static <T, V> List<V> convertToList(List<T> pojoList, Class<V> voClass) { List<V> voList = new ArrayList<>(); for (T pojo : pojoList) { V vo = convert(pojo, voClass); voList.add(vo); } return voList; } } src/main/java/com/nq/utils/task/stock/StockTask.java
@@ -61,7 +61,7 @@ /** * 同步系统所需要的股票 */ @Scheduled(cron = "0 */10 * * * ?") @Scheduled(cron = "0 */1 * * * ?") public void syncINStockData() { if (syncINStockData.get()) { // 判断任务是否在处理中 return; src/main/java/com/nq/vo/agent/AgentUserNodeVO.java
New file @@ -0,0 +1,64 @@ package com.nq.vo.agent; import lombok.Data; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * @program: dabao * @description: * @create: 2024-05-21 11:00 **/ @Data public class AgentUserNodeVO { private Integer id; private String agentName; private String agentPwd; private String agentRealName; private String agentPhone; private String agentCode; private Date addTime; private Integer isLock; private Integer parentId; private String parentName; //代理级别 private Integer agentLevel; /** * 手续费比例 */ private BigDecimal poundageScale; /** * 递延费比例 */ private BigDecimal deferredFeesScale; /** * 分红比例 */ private BigDecimal receiveDividendsScale; /** * 总资金 */ private BigDecimal totalMoney; /** * 杠杆倍数,多个用/分割 */ private String siteLever; /** * 在先客服 * */ private String onLineServices; /** * 子节点 */ private List<AgentUserNodeVO> childList; } src/main/java/com/nq/vo/user/UserOptionLogVO.java
New file @@ -0,0 +1,27 @@ package com.nq.vo.user; import lombok.Data; import java.math.BigDecimal; import java.util.Date; @Data public class UserOptionLogVO { private Integer id; //操作金额 private BigDecimal money; //类型,0扣款,1入款 private Integer type; //用户id private Integer userId; //资产id private Integer userAccectId; //操作时间 private Date createTime; //资产账户类型 private String userAccectType; //用户名 private String userName; } src/main/resources/mapper/StockMapper.xml
@@ -262,6 +262,7 @@ <include refid="Base_Column_List" /> from stock <where> stock_gid = 'TSE' <if test="showState != null "> and is_show = #{showState} </if> @@ -315,7 +316,7 @@ <include refid="Base_Column_List"/> FROM stock where stock_type = #{stockType} where stock_type = #{stockType} and stock_gid = 'TSE' <if test="keyWords != null and keyWords != '' "> and (stock_spell like concat('%',#{keyWords},'%') or stock_name like concat('%',#{keyWords},'%') ) src/main/resources/mapper/UserOptionLogMapper.xml
New file @@ -0,0 +1,21 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.nq.dao.UserOptionLogMapper"> <select id="selective" resultType="com.nq.vo.user.UserOptionLogVO"> SELECT t1.*, t2.accect_type AS userAccectType, t3.real_name AS userName FROM user_option_log t1 LEFT JOIN user_assets t2 ON t1.user_accect_id = t2.id LEFT JOIN `user` t3 ON t1.user_id = t3.id where 1=1 <if test="userId!=null and userId!=''"> and t1.user_id = #{userId} </if> order by create_time desc </select> </mapper>