src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java
@@ -15,6 +15,7 @@ import com.xcong.excoin.modules.coin.parameter.dto.CancelEntrustWalletCoinOrderDto; import com.xcong.excoin.modules.coin.parameter.dto.FindCollectDto; import com.xcong.excoin.modules.coin.parameter.dto.SubmitSalesWalletCoinOrderDto; import com.xcong.excoin.modules.coin.parameter.vo.FindCollectListVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberSelectSymbolsVo; import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealListVo; import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealVo; @@ -92,8 +93,8 @@ @ApiOperation(value = "撤销委托订单", notes = "撤销委托订单") @PostMapping(value="/cancelEntrustWalletCoinOrder") public Result cancelEntrustWalletCoinOrder(@RequestBody @Valid CancelEntrustWalletCoinOrderDto cancelEntrustWalletCoinOrderDto) { String orderNo = cancelEntrustWalletCoinOrderDto.getOrderNo(); return orderCoinService.cancelEntrustWalletCoinOrder(orderNo); String orderId = cancelEntrustWalletCoinOrderDto.getOrderId(); return orderCoinService.cancelEntrustWalletCoinOrder(orderId); } /** @@ -147,4 +148,15 @@ return orderCoinService.checkIsCollect(symbol); } /** * 已自选的币种 * @return */ @ApiOperation(value = "已自选的币种", notes = "已自选的币种") @ApiResponses({@ApiResponse( code = 200, message = "success", response = FindCollectListVo.class)}) @GetMapping(value = "/findCollectList") public Result findCollectList() { return orderCoinService.findCollectList(); } } src/main/java/com/xcong/excoin/modules/coin/entity/OrderCoinsDealEntity.java
@@ -41,6 +41,13 @@ private Integer tradeType; public static final Integer TRADETYPE_MARKETPRICE = 1; public static final Integer TRADETYPE_FIXEDPRICE = 2; /** * 状态 2:撤单3:已成交 */ private Integer orderStatus; public static final Integer ORDERSTATUS_CANCEL = 2; public static final Integer ORDERSTATUS_DONE = 3; /** * 币种 */ src/main/java/com/xcong/excoin/modules/coin/parameter/dto/CancelEntrustWalletCoinOrderDto.java
@@ -1,7 +1,5 @@ package com.xcong.excoin.modules.coin.parameter.dto; import java.math.BigDecimal; import javax.validation.constraints.NotNull; import io.swagger.annotations.ApiModel; @@ -12,8 +10,8 @@ @ApiModel(value = "CancelEntrustWalletCoinOrderDto", description = "撤销委托订单") public class CancelEntrustWalletCoinOrderDto { @NotNull(message = "订单编号不能为空") @ApiModelProperty(value = "订单编号", example = "100") private String orderNo; @NotNull(message = "订单ID不能为空") @ApiModelProperty(value = "订单ID", example = "100") private String orderId; } src/main/java/com/xcong/excoin/modules/coin/parameter/vo/FindCollectListVo.java
New file @@ -0,0 +1,16 @@ package com.xcong.excoin.modules.coin.parameter.vo; import java.util.List; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "FindCollectListVo", description = "币币是否自选返回") public class FindCollectListVo { @ApiModelProperty(value = "币币自选") private List<MemberSelectSymbolsVo> memberSelectSymbolsVo; } src/main/java/com/xcong/excoin/modules/coin/parameter/vo/OrderWalletCoinVo.java
@@ -13,6 +13,11 @@ @ApiModel(value = "OrderWalletCoinVo", description = "订单详情") public class OrderWalletCoinVo { /** * 订单ID */ @ApiModelProperty(value = "ID") private Long id; /** * 订单编号 */ @ApiModelProperty(value = "订单编号") src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java
@@ -17,7 +17,7 @@ public Result getEntrustWalletCoinOrder(String symbol, Integer status); public Result cancelEntrustWalletCoinOrder(String orderNo); public Result cancelEntrustWalletCoinOrder(String orderId); public Result findAllWalletCoinOrder(); @@ -27,4 +27,6 @@ public Result checkIsCollect(String symbol); public Result findCollectList(); } src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
@@ -29,6 +29,7 @@ import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity; import com.xcong.excoin.modules.coin.mapper.OrderWalletCoinDealMapper; import com.xcong.excoin.modules.coin.mapper.OrderWalletCoinMapper; import com.xcong.excoin.modules.coin.parameter.vo.FindCollectListVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberSelectSymbolsVo; import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealListVo; import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealVo; @@ -321,10 +322,10 @@ @Override @Transactional public Result cancelEntrustWalletCoinOrder(String orderNo) { public Result cancelEntrustWalletCoinOrder(String orderId) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); OrderCoinsEntity orderCoinsEntity = orderCoinsDao.findWalletCoinOrderByOrderNo(orderNo); OrderCoinsEntity orderCoinsEntity = orderCoinsDao.selectById(orderId); if(ObjectUtil.isNotEmpty(orderCoinsEntity) && orderCoinsEntity.getMemberId() == memberId) { if(orderCoinsEntity.getOrderStatus() == OrderCoinsEntity.ORDERSTATUS_CANCEL){ return Result.fail(MessageSourceUtils.getString("order_service_0012")); @@ -342,7 +343,7 @@ if (ObjectUtil.isNotEmpty(walletCoin)) { //手续费 = 开仓价*数量*手续费率 //返还金额=开仓价*未成交数量+手续费 BigDecimal returnBalance = orderCoinsEntity.getEntrustPrice().add(orderCoinsEntity.getFeeAmount()); BigDecimal returnBalance = orderCoinsEntity.getDealAmount().add(orderCoinsEntity.getFeeAmount()); walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance).setScale(4, BigDecimal.ROUND_DOWN)); walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance).setScale(4, BigDecimal.ROUND_DOWN)); @@ -360,13 +361,12 @@ } }else { //如果是限价卖出,撤单将对应的钱包冻结金额返回 String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol); if (ObjectUtil.isNotEmpty(walletCoin)) { //返还金额=开仓价*未成交数量 BigDecimal returnBalance = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); walletCoin.setAvailableBalance(returnBalance.setScale(4, BigDecimal.ROUND_DOWN)); walletCoin.setFrozenBalance(BigDecimal.ZERO); walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance).setScale(4, BigDecimal.ROUND_DOWN)); memberWalletCoinDao.updateById(walletCoin); // 流水记录 MemberAccountFlowEntity record = new MemberAccountFlowEntity(); @@ -380,7 +380,6 @@ return Result.ok(MessageSourceUtils.getString("order_service_0013")); } } OrderCoinsDealEntity detail = new OrderCoinsDealEntity(); detail.setMemberId(memberId); detail.setOrderId(orderCoinsEntity.getId()); @@ -388,6 +387,7 @@ detail.setOrderType(orderCoinsEntity.getOrderType()); detail.setTradeType(orderCoinsEntity.getTradeType()); detail.setSymbol(symbol); detail.setOrderStatus(OrderCoinsDealEntity.ORDERSTATUS_CANCEL); detail.setSymbolCnt(orderCoinsEntity.getEntrustCnt()); detail.setEntrustPrice(orderCoinsEntity.getEntrustPrice().setScale(4, BigDecimal.ROUND_DOWN)); detail.setDealPrice(orderCoinsEntity.getDealPrice().setScale(4, BigDecimal.ROUND_DOWN)); @@ -462,4 +462,26 @@ return Result.ok(memberSelectSymbolsVo); } @Override public Result findCollectList() { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); Map<String, Object> columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List<MemberSelectSymbolsEntity> selectByMap = memberSelectSymbolsDao.selectByMap(columnMap); FindCollectListVo findCollectListVo = new FindCollectListVo(); List<MemberSelectSymbolsVo> arrayList = new ArrayList<>(); if(CollUtil.isNotEmpty(selectByMap)) { for(MemberSelectSymbolsEntity memberSelectSymbolsEntity : selectByMap) { MemberSelectSymbolsVo memberSelectSymbolsVo = new MemberSelectSymbolsVo(); memberSelectSymbolsVo.setSymbol(memberSelectSymbolsEntity.getSymbol()); arrayList.add(memberSelectSymbolsVo); } } findCollectListVo.setMemberSelectSymbolsVo(arrayList); return Result.ok(findCollectListVo); } } src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -11,12 +11,14 @@ import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto; import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo; import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailVo; @@ -175,6 +177,45 @@ return memberService.memberBindPhone(memberBindPhoneDto); } /** * 绑定邮箱 * @return */ @ApiOperation(value="绑定邮箱", notes="绑定邮箱") @PostMapping(value="/memberBindEmail") public Result memberBindEmail(@RequestBody @Valid MemberBindEmailDto memberBindEmailDto) { return memberService.memberBindEmail(memberBindEmailDto); } /** * 获取币种地址数量 * @return */ @ApiOperation(value = "获取币种地址数量", notes = "获取币种地址数量") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberCoinAddressCountListVo.class)}) @GetMapping(value = "/memberCoinAddressCount") public Result memberCoinAddressCount() { return memberService.memberCoinAddressCount(); } /** * 获取提币地址列表 * * @param pageNumber * @param pageSize * @param token * @return @ApiOperation(value = "获取地址列表", notes = "获取地址列表") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberPaymethodDetailVo.class)}) @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "long", paramType="query") }) @GetMapping(value = "/memberCoinAddressList") public Result memberCoinAddressList(String pageNumber, String pageSize, Long symbolsId, @RequestHeader(value = "token", required = true) String token) { return memberService.memberCoinAddressList(token, pageNumber, pageSize, symbolsId); }*/ src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinAddressDao.java
New file @@ -0,0 +1,9 @@ package com.xcong.excoin.modules.member.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xcong.excoin.modules.member.entity.MemberCoinAddressEntity; public interface MemberCoinAddressDao extends BaseMapper<MemberCoinAddressEntity> { } src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java
New file @@ -0,0 +1,55 @@ package com.xcong.excoin.modules.member.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.xcong.excoin.common.system.base.BaseEntity; import lombok.Data; /** * 会员币地址 * @author Administrator * */ @Data @TableName("member_coin_address") public class MemberCoinAddressEntity extends BaseEntity { /** * */ private static final long serialVersionUID = 1L; /** * 会员ID */ private Long memberId; /** * 地址 */ private String address; /** * 私钥 */ private String private_key; /** * 币种 */ private String symbol; /** * 是否是本平台地址1:是 0:否 */ private String is_biyict; public static final String IS_BIYICT_YES = "1"; public static final String IS_BIYICT_NO = "0"; /** * */ private String label; /** * */ private String tag; /** * 币种ID */ private Long symbolscoin_id; } src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindEmailDto.java
New file @@ -0,0 +1,21 @@ package com.xcong.excoin.modules.member.parameter.dto; import javax.validation.constraints.NotNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "MemberBindEmailDto", description = "绑定邮箱参数接收类") public class MemberBindEmailDto { @NotNull(message = "验证码不能为空") @ApiModelProperty(value = "验证码", example = "123456") private String code; @NotNull(message = "邮箱不能为空") @ApiModelProperty(value = "邮箱", example = "www.13412341234@134.com") private String email; } src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberCoinAddressCountListVo.java
New file @@ -0,0 +1,17 @@ package com.xcong.excoin.modules.member.parameter.vo; import java.util.List; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "MemberCoinAddressCountListVo", description = "币种地址信息") public class MemberCoinAddressCountListVo { @ApiModelProperty(value = "币种地址") private List<MemberCoinAddressCountVo> memberCoinAddressCountVo; } src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberCoinAddressCountVo.java
New file @@ -0,0 +1,24 @@ package com.xcong.excoin.modules.member.parameter.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "MemberCoinAddressCountVo", description = "币种地址数量信息") public class MemberCoinAddressCountVo { @ApiModelProperty(value = "ID") private Long id; /** * 币种 */ @ApiModelProperty(value = "币种") private String name; /** * 地址数量 */ @ApiModelProperty(value = "地址数量") private Integer count; } src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
@@ -7,6 +7,7 @@ import com.xcong.excoin.common.system.dto.RegisterDto; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto; @@ -45,5 +46,9 @@ public Result memberBindPhone(@Valid MemberBindPhoneDto memberBindPhoneDto); public Result memberBindEmail(@Valid MemberBindEmailDto memberBindEmailDto); public Result memberCoinAddressCount(); } src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -15,21 +15,26 @@ import com.xcong.excoin.modules.member.dao.*; import com.xcong.excoin.modules.member.entity.*; import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto; import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountVo; import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo; import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailVo; import com.xcong.excoin.modules.member.service.MemberService; import com.xcong.excoin.modules.platform.dao.PlatformSymbolsCoinDao; import com.xcong.excoin.utils.MessageSourceUtils; import com.xcong.excoin.utils.RedisUtils; import com.xcong.excoin.utils.ShareCodeUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -73,6 +78,9 @@ @Resource MemberPaymentMethodDao memberPaymentMethodDao; @Resource PlatformSymbolsCoinDao platformSymbolsCoinDao; @Transactional() @Override @@ -319,7 +327,7 @@ memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage()); memberAuthenticationDao.insert(memberAuthenticationEntity); member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_Y); member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING); member.setIdcardNo(idCardNo); memberDao.updateById(member); /** @@ -526,4 +534,42 @@ return Result.fail(MessageSourceUtils.getString("member_service_0015")); } @Override public Result memberBindEmail(@Valid MemberBindEmailDto memberBindEmailDto) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); String email = memberBindEmailDto.getEmail(); String code = memberBindEmailDto.getCode(); MemberEntity member = memberDao.selectById(memberId); String verifyCode = (String)redisUtils.get("EMAIL_" + email); if (ObjectUtil.isNotEmpty(member)) { if (StringUtils.isBlank(verifyCode)) { return Result.fail(MessageSourceUtils.getString("member_service_0012")); } if (!code.equals(verifyCode)) { return Result.fail(MessageSourceUtils.getString("member_service_0039")); } member.setEmail(email); memberDao.updateById(member); redisUtils.del("EMAIL_" + member.getPhone()); return Result.ok(MessageSourceUtils.getString("member_service_0018")); } return Result.fail(MessageSourceUtils.getString("member_service_0019")); } @Override public Result memberCoinAddressCount() { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); List<MemberCoinAddressCountVo> list = platformSymbolsCoinDao.selectCoinAddressCount(memberId); MemberCoinAddressCountListVo memberCoinAddressCountListVo = new MemberCoinAddressCountListVo(); if(CollUtil.isNotEmpty(list)) { memberCoinAddressCountListVo.setMemberCoinAddressCountVo(list); return Result.ok(memberCoinAddressCountListVo); } return Result.fail(MessageSourceUtils.getString("member_service_0020")); } } src/main/java/com/xcong/excoin/modules/platform/dao/PlatformSymbolsCoinDao.java
New file @@ -0,0 +1,13 @@ package com.xcong.excoin.modules.platform.dao; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountVo; import com.xcong.excoin.modules.platform.entity.PlatformSymbolsCoinEntity; public interface PlatformSymbolsCoinDao extends BaseMapper<PlatformSymbolsCoinEntity> { List<MemberCoinAddressCountVo> selectCoinAddressCount(Long memberId); } src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsCoinEntity.java
New file @@ -0,0 +1,29 @@ package com.xcong.excoin.modules.platform.entity; import java.io.Serializable; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; /** * 币种表 */ @Data @TableName("platform_symbols_coin") public class PlatformSymbolsCoinEntity implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @TableId(value = "id",type = IdType.AUTO) private Long id; /** * 币种名称 */ private String name; } src/main/resources/mapper/member/MemberCoinAddressDao.xml
New file @@ -0,0 +1,5 @@ <?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.xcong.excoin.modules.member.dao.MemberCoinAddressDao"> </mapper> src/main/resources/mapper/platform/PlatformSymbolsCoinDao.xml
New file @@ -0,0 +1,19 @@ <?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.xcong.excoin.modules.platform.dao.PlatformSymbolsCoinDao"> <select id="selectCoinAddressCount" resultType="com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountVo"> SELECT a.id, a. NAME, count(b.id) count FROM platform_symbols_coin a LEFT JOIN member_coin_address b ON a.id = b.symbolscoin_id AND member_id = #{memberId} GROUP BY a.id, a. NAME </select> </mapper>