diff --git a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java index 7f8dbc9f..da84ca14 100644 --- a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java +++ b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java @@ -3,6 +3,7 @@ package com.hzs.member.base; import com.hzs.common.core.domain.R; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMemberRegister; +import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.ext.CuMemberAccountExt; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.sale.ext.SaOrderExt; @@ -30,6 +31,14 @@ public interface IMemberServiceApi { */ R getMemberInfo(String memberCode); + /** + * 通过会员编码查询分享会员信息 + * + * @param memberCode 会员编号 + * @return + */ + R getShareMemberInfo(String memberCode); + /** * 根据会员ID获取会员信息(查库) * @@ -407,4 +416,11 @@ public interface IMemberServiceApi { */ R checkRegisterRelation(String phone, String parentCode); + + /** + * 查询分享会员 + * + * @param pkMember 主键 + */ + R queryCuMemberShare(Long pkMember); } diff --git a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/dto/LoginMember.java b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/dto/LoginMember.java index f1704da2..af3cb740 100644 --- a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/dto/LoginMember.java +++ b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/dto/LoginMember.java @@ -1,6 +1,7 @@ package com.hzs.member.base.dto; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.ext.CuMemberExt; import lombok.AllArgsConstructor; import lombok.Builder; @@ -63,6 +64,11 @@ public class LoginMember implements Serializable { */ private CuMemberExt cuMember; + /** + * 分享会员信息(分享注册会员使用) + */ + private CuMemberShare cuMemberShare; + /** * 结算国家(此字段实体不存值,只做部分业务传递参数使用) */ diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/controller/api/ApiMemberController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/controller/api/ApiMemberController.java index a0a76820..0ad854d5 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/controller/api/ApiMemberController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/controller/api/ApiMemberController.java @@ -1,7 +1,9 @@ package com.hzs.member.base.controller.api; +import cn.hutool.core.codec.Base64Decoder; import cn.hutool.core.collection.CollectionUtil; import com.hzs.common.core.annotation.RepeatSubmitSimple; +import com.hzs.common.core.config.BdConfig; import com.hzs.common.core.constant.msg.CommonMsgConstants; import com.hzs.common.core.constant.msg.ConfigMsgConstants; import com.hzs.common.core.constant.msg.MemberMsgConstants; @@ -366,4 +368,50 @@ public class ApiMemberController extends BaseController { return getDataTable(list); } + + /** + * 查询推荐人编号 -- 188分享注册 + * + * @param pkParent 推荐人(加密) + * @return + */ + @GetMapping("/fans-convert-code/{pkParent}") + public AjaxResult fansConvertCode(@PathVariable("pkParent") String pkParent) { + // 验证必输项 + if (pkParent == null) { + return AjaxResult.error(MemberMsgConstants.REQUIRED_NOT_EMPTY); + } + CuMember cuMember = iCuMemberService.getMemberById(Long.parseLong(new String(Base64Decoder.decode(pkParent)))); + if (null != cuMember) { + return AjaxResult.success("", cuMember.getMemberCode()); + } + return AjaxResult.error(); + } + + /** + * 根据订单查询会员信息 -- 188分享注册 + * + * @param orderCode 订单编号 + * @return + */ + @RepeatSubmitSimple(intervalTime = 2L) + @GetMapping("/fans-order/{orderCode}") + public AjaxResult fansOrder(@PathVariable("orderCode") String orderCode) { + CuMemberExt cuMemberExt = iCuMemberService.queryFansOrder(orderCode); + if (null == cuMemberExt) { + return AjaxResult.error("注册会员失败,请联系客服处理"); + } + + return AjaxResult.success(MemberShare.builder() + .memberName(cuMemberExt.getMemberName()) + .memberCode(cuMemberExt.getMemberCode()) + .phone(cuMemberExt.getPhone()) + .loginPassword(cuMemberExt.getLoginPassword()) + .payPassword(cuMemberExt.getPayPassword()) + .urlAddress(BdConfig.getPc()) + .gzh(BdConfig.getGzh()) + .ios(BdConfig.getIos()) + .android(BdConfig.getAndroid()) + .build()); + } } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java index a0270d1a..f195ca1e 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java @@ -635,4 +635,12 @@ public interface CuMemberMapper extends BaseMapper { */ List queryDateBySummary(CensusSummaryParam censusSummaryParam); + + /** + * 查询海粉订单 + * + * @param orderCode 订单编号 + * @return + */ + CuMemberExt queryFansOrder(@Param("orderCode") String orderCode); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java index a07ab2df..5f772ee3 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java @@ -1,10 +1,12 @@ package com.hzs.member.base.provider; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.hzs.common.core.domain.R; import com.hzs.common.core.enums.ELoginType; import com.hzs.common.core.utils.StringUtils; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMemberRegister; +import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.ext.CuMemberAccountExt; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.member.swing.ext.CuMemberSwingNetExt; @@ -38,6 +40,8 @@ public class MemberServiceProvider implements IMemberServiceApi { @Autowired private ICuMemberService iCuMemberService; @Autowired + private ICuMemberShareService iCuMemberShareService; + @Autowired private ICuMemberBusinessService iCuMemberBusinessService; @Autowired private ICuMemberRegisterService iCuMemberRegisterService; @@ -58,6 +62,20 @@ public class MemberServiceProvider implements IMemberServiceApi { return R.ok(loginMember); } + + @Override + public R getShareMemberInfo(String memberCode) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CuMemberShare::getMemberCode, memberCode); + CuMemberShare cuMemberShare = iCuMemberShareService.getOne(queryWrapper); + if (null == cuMemberShare) { + return R.fail("用户名或密码错误"); + } + LoginMember loginMember = new LoginMember(); + loginMember.setLoginType(ELoginType.SHARE_MEMBER.getValue()); + loginMember.setCuMemberShare(cuMemberShare); + return R.ok(loginMember); + } @Override public R getMemberById(Long memberId) { return R.ok(iCuMemberService.getMemberById(memberId)); @@ -380,4 +398,9 @@ public class MemberServiceProvider implements IMemberServiceApi { return R.ok(iCuMemberService.checkRegisterRelation(phone, parentCode)); } + + @Override + public R queryCuMemberShare(Long pkMember) { + return R.ok(iCuMemberShareService.queryCuMemberShare(pkMember)); + } } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java index 82998d90..9a1437d6 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java @@ -192,7 +192,15 @@ public interface ICuMemberService extends IService { * @param digit 编号数字位数 * @return */ - String createUserNameByPremix(Integer pkCountry, Integer digit); + String createUserNameByPremix(Integer pkCountry, Integer digit); /** + * 生成会员编号 + * + * @param pkCountry 所属国家 + * @param isHaiFun + * @param digit 编号数字位数 + * @return + */ + String createUserNameByPremix(Integer pkCountry, Boolean isHaiFun, Integer digit); /** * 批量生成会员编号 @@ -813,7 +821,7 @@ public interface ICuMemberService extends IService { * @return */ CuMember getRetailTopMember(Long pkMember, String memberCode, Long topPkMember, String topMemberCode); - + String createRetailMemberCode(String prefix); /** * 校验注册关系(是否跨团队) * 2024.12.24 修改为校验手机号必须唯一(9035) @@ -911,4 +919,12 @@ public interface ICuMemberService extends IService { */ List selectCensusSummary(CensusSummaryParam censusSummaryParam, List days); + + /** + * 查询海粉订单 + * + * @param orderCode 订单编号 + * @return + */ + CuMemberExt queryFansOrder(String orderCode); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberShareService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberShareService.java index 686beef1..9bac0405 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberShareService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberShareService.java @@ -22,5 +22,10 @@ public interface ICuMemberShareService extends IService { * @return */ List seaFlourList(SeaFlourParam seaFlourParam); - + /** + * 查询会员分享 + * + * @param pkMember 会员主键 + */ + CuMemberShare queryCuMemberShare(Long pkMember); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java index df8fb41d..4d7764a1 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java @@ -1601,6 +1601,34 @@ public class CuMemberServiceImpl extends ServiceImpl i return memberCode; } + @Override + public String createUserNameByPremix(Integer pkCountry, Boolean isHaiFun, Integer digit) { + String prefix; + if (isHaiFun) { + prefix = SysConstants.HAI_FUN_PREFIX; + } else { + CountryDTO country = iCountryServiceApi.getCountry(pkCountry).getData(); + prefix = country.getCode(); + } + if (StringUtils.isEmpty(prefix)) { + return null; + } + // 生成loginName + String memberCode = this.createMemberCode(prefix, digit); + + CuMember cuMemberByKey = getMember(memberCode); + if (cuMemberByKey != null && cuMemberByKey.getPkId() > 0) { + // 用户名已经存在,则继续尝试 + return this.createUserNameByPremix(pkCountry, isHaiFun, digit); + } else { + // 验证空单注册里面是否存在编号 + List cuMemberEmptyDetails = iCuMemberEmptyCodeService.queryCuMemberEmptyCode(memberCode); + if (CollectionUtil.isNotEmpty(cuMemberEmptyDetails)) { + return this.createUserNameByPremix(pkCountry, isHaiFun, digit); + } + } + return memberCode; + } /** * 创建会员编号 * @@ -3059,6 +3087,7 @@ public class CuMemberServiceImpl extends ServiceImpl i * @param prefix 会员编号前缀 * @return */ + @Override public String createRetailMemberCode(String prefix) { if (StringUtils.isEmpty(prefix)) { prefix = SysConstants.RETAIL_PREFIX; @@ -3302,4 +3331,9 @@ public class CuMemberServiceImpl extends ServiceImpl i return censusSummaryList; } + + @Override + public CuMemberExt queryFansOrder(String orderCode) { + return baseMapper.queryFansOrder(orderCode); + } } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberShareServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberShareServiceImpl.java index 484846da..33371947 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberShareServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberShareServiceImpl.java @@ -1,5 +1,6 @@ package com.hzs.member.base.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.member.base.mapper.CuMemberShareMapper; @@ -30,4 +31,10 @@ public class CuMemberShareServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.select("PK_ID,MEMBER_CODE,MEMBER_NAME,PHONE,PK_PARENT"); + return baseMapper.selectById(pkMember); + } } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/login/service/IMemberLoginService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/login/service/IMemberLoginService.java index 157c9f1f..b6f74543 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/login/service/IMemberLoginService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/login/service/IMemberLoginService.java @@ -21,4 +21,13 @@ public interface IMemberLoginService { **/ LoginMember passwordFreelogin(String username); + + /** + * 分享登录 + * + * @param username 用户名 + * @param password 密码 + * @return + */ + LoginMember shareLogin(String username, String password); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/login/service/impl/MemberLoginServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/login/service/impl/MemberLoginServiceImpl.java index c2a8572d..948f122f 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/login/service/impl/MemberLoginServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/login/service/impl/MemberLoginServiceImpl.java @@ -11,6 +11,7 @@ import com.hzs.common.core.utils.ServletUtils; import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.utils.ip.IpUtils; import com.hzs.common.domain.member.base.CuMember; +import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.detail.CuMemberLogin; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.security.utils.SecurityUtils; @@ -157,6 +158,35 @@ public class MemberLoginServiceImpl implements IMemberLoginService { return loginMember; } + @Override + public LoginMember shareLogin(String username, String password) { + // 用户名或密码为空 错误 + if (StringUtils.isAnyBlank(username, password)) { + // 用户/密码必须填写 + throw new ServiceException(TransactionUtils.getContent(SystemMsgConstants.USER_REQUIRED)); + } + // 查询用户信息 + R memberResult = iMemberServiceApi.getShareMemberInfo(username); + + if (R.FAIL == memberResult.getCode()) { + throw new ServiceException(memberResult.getMsg()); + } + + if (StringUtils.isNull(memberResult.getData())) { + // 登录用户: %s 不存在 + throw new ServiceException(TransactionUtils.getContent(SystemMsgConstants.USER_NOT_EXIST, username)); + } + + LoginMember loginMember = memberResult.getData(); + CuMemberShare cuMemberShare = loginMember.getCuMemberShare(); + // 密码校验 + if (!SecurityUtils.matchesPassword(password, cuMemberShare.getLoginPwd())) { + // 用户不存在/密码错误 + throw new ServiceException(TransactionUtils.getContent(SystemMsgConstants.USER_ERROR, username)); + } + + return loginMember; + } /** * 记录登录信息 * diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/share/controller/api/ApiShareController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/share/controller/api/ApiShareController.java index 1a3bbae4..86f2b363 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/share/controller/api/ApiShareController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/share/controller/api/ApiShareController.java @@ -174,4 +174,30 @@ public class ApiShareController extends BaseController { } + + + /** + * 获取188分享码(H5) + * + * @return + */ + @GetMapping("/fans-code-h5") + public AjaxResult fansCodeH5() { + Long userId = SecurityUtils.getUserId(); + // 188注册分享人就是自己 + R resultR = iShareServiceApi.queryShareCode(ShareServiceDTO.builder() + .eShareType(EShareType.FANS) + .pkBusiness(userId) + .pkCountry(SecurityUtils.getPkCountry()) + .userId(userId) + .build()); + if (resultR.isSuccess()) { + Map resultMap = new HashMap<>(); + resultMap.put("dataUrl", resultR.getData()); + // 前端无法根据URL生成海报,此处需要转一下base64 + resultMap.put("dataStr", Base64Util.toUrlBase64(resultR.getData())); + return AjaxResult.success(resultMap); + } + return AjaxResult.error(); + } } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/login/controller/RetailMemberTokenController.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/login/controller/RetailMemberTokenController.java index 055fbc25..b74f3aca 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/login/controller/RetailMemberTokenController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/login/controller/RetailMemberTokenController.java @@ -1,13 +1,22 @@ package com.hzs.retail.login.controller; +import cn.hutool.core.codec.Base64Decoder; import com.hzs.common.core.constant.CacheConstants; +import com.hzs.common.core.constant.MagicNumberConstants; +import com.hzs.common.core.constant.SysConstants; import com.hzs.common.core.service.RedisService; import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.web.domain.AjaxResult; +import com.hzs.common.domain.member.base.CuMemberShare; +import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.security.auth.AuthMemberUtil; import com.hzs.common.security.service.MemberTokenService; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.member.base.dto.LoginMember; +import com.hzs.member.base.service.ICuMemberService; +import com.hzs.member.base.service.ICuMemberShareService; +import com.hzs.member.login.param.AutoLoginParam; +import com.hzs.member.login.service.IMemberLoginService; import com.hzs.retail.login.param.RetailAutoLoginParam; import com.hzs.retail.login.param.RetailLoginParam; import com.hzs.retail.login.service.IRetailMemberLoginService; @@ -28,6 +37,13 @@ import javax.validation.Valid; @RestController public class RetailMemberTokenController { + @Autowired + private ICuMemberService iCuMemberService; + @Autowired + private ICuMemberShareService iCuMemberShareService; + @Autowired + private IMemberLoginService iMemberLoginService; + @Autowired private MemberTokenService memberTokenService; @Autowired @@ -57,19 +73,53 @@ public class RetailMemberTokenController { * @return */ @PostMapping("/auto-login") - public AjaxResult autoLogin(@Valid @RequestBody RetailAutoLoginParam param) { - String tmpUuid = redisService.getCacheObject(CacheConstants.AUTO_LOGIN + param.getUsername()); - if (!param.getUuid().equals(tmpUuid)) { - // 没有自动登录标记 或者 标记不对,则不能自动登录 - return AjaxResult.error("当前会员已不能快递登录"); +// public AjaxResult autoLogin(@Valid @RequestBody RetailAutoLoginParam param) { +// String tmpUuid = redisService.getCacheObject(CacheConstants.AUTO_LOGIN + param.getUsername()); +// if (!param.getUuid().equals(tmpUuid)) { +// // 没有自动登录标记 或者 标记不对,则不能自动登录 +// return AjaxResult.error("当前会员已不能快递登录"); +// } +// +// // 用户登录 +// LoginMember loginMember = iRetailMemberLoginService.login(param.getUsername(), param.getPassword()); +// // 获取登录token +// return AjaxResult.success(memberTokenService.createToken(loginMember)); +// } + public AjaxResult autoLogin(@RequestBody AutoLoginParam param) { + if (StringUtils.isEmpty(param.getPkParent())) { + return AjaxResult.error("缺少注册信息!"); } - // 用户登录 - LoginMember loginMember = iRetailMemberLoginService.login(param.getUsername(), param.getPassword()); - // 获取登录token - return AjaxResult.success(memberTokenService.createToken(loginMember)); - } + // 上级编码(推荐人) + Long pkParent = Long.parseLong(new String(Base64Decoder.decode(param.getPkParent()))); + // 查询上级信息 + CuMemberExt parentCuMember = iCuMemberService.getMemberById(pkParent); + if (null == parentCuMember) { + return AjaxResult.error("二维码已经失效!"); + } + // 生成的会员编号 + String memberCode = iCuMemberService.createRetailMemberCode(SysConstants.RETAIL_PREFIX); +// iCuMemberService.createUserNameByPremix(parentCuMember.getPkSettleCountry(), MagicNumberConstants.DIGIT); + + CuMemberShare cuMemberShare = new CuMemberShare(); + cuMemberShare.setMemberCode(memberCode); + cuMemberShare.setPkParent(pkParent); + cuMemberShare.setLoginPassword(SysConstants.LOGIN_PASSWORD); + cuMemberShare.setLoginPwd(SecurityUtils.encryptPassword(SysConstants.LOGIN_PASSWORD)); + cuMemberShare.setPayPassword(SysConstants.PAY_PASSWORD); + cuMemberShare.setPayPwd(SecurityUtils.encryptPassword(SysConstants.PAY_PASSWORD)); + cuMemberShare.setPkCreator(pkParent); + cuMemberShare.setPkCountry(parentCuMember.getPkSettleCountry()); + if (iCuMemberShareService.save(cuMemberShare)) { + // 会员登录 + LoginMember loginMember = iMemberLoginService.shareLogin(memberCode, SysConstants.LOGIN_PASSWORD); + + // 获取登录token + return AjaxResult.success(memberTokenService.createToken(loginMember)); + } + return AjaxResult.error(); + } /** * 会员登出 * diff --git a/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml b/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml index d001e385..d4286ca3 100644 --- a/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml +++ b/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml @@ -2470,4 +2470,19 @@ + + + diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java index 92e50b18..f11fca95 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/api/ApiRetailOrderController.java @@ -7,16 +7,22 @@ import com.hzs.common.core.config.BdConfig; import com.hzs.common.core.constant.CacheConstants; import com.hzs.common.core.domain.R; import com.hzs.common.core.enums.EGrade; +import com.hzs.common.core.enums.EOrderPrefix; import com.hzs.common.core.enums.ESpecialArea; import com.hzs.common.core.enums.EYesNo; import com.hzs.common.core.exception.ServiceException; import com.hzs.common.core.service.RedisService; +import com.hzs.common.core.utils.CommonUtil; import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.member.base.CuMember; +import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.ext.CuMemberAccountExt; +import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt; import com.hzs.common.domain.sale.ext.SaOrderExt; +import com.hzs.common.domain.sale.wares.BdWares; import com.hzs.common.domain.system.config.BdGrade; +import com.hzs.common.security.service.MemberTokenService; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.member.base.IMemberServiceApi; import com.hzs.retail.sale.controller.service.IRetailOrderService; @@ -24,10 +30,13 @@ import com.hzs.retail.sale.param.*; import com.hzs.retail.sale.vo.*; import com.hzs.sale.order.param.*; import com.hzs.sale.order.service.ISaOrderService; +import com.hzs.sale.order.service.ISaOrderShareTmpService; import com.hzs.sale.shopping.service.IShoppingCartService; import com.hzs.sale.shopping.vo.ProductGroup; import com.hzs.sale.shopping.vo.ShoppingCartRedis; import com.hzs.sale.shopping.vo.ShoppingCartVO; +import com.hzs.sale.wares.service.IBdWaresService; +import com.hzs.sale.wares.service.IBdWaresSpecsSkuService; import com.hzs.system.base.IAreaServiceApi; import com.hzs.system.config.IGradeServiceApi; import com.hzs.system.config.dto.GradeDTO; @@ -41,6 +50,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 新零售订单控制器 @@ -59,12 +69,21 @@ public class ApiRetailOrderController { @Autowired private RedisService redisService; + @Autowired + private IBdWaresService iBdWaresService; + @Autowired + private IBdWaresSpecsSkuService iBdWaresSpecsSkuService; + @Autowired + private ISaOrderShareTmpService iSaOrderShareTmpService; + @DubboReference IMemberServiceApi iMemberServiceApi; @DubboReference IGradeServiceApi iGradeServiceApi; @DubboReference IAreaServiceApi iAreaServiceApi; + @Autowired + private MemberTokenService memberTokenService; /** * 校验会员等级 @@ -737,4 +756,111 @@ public class ApiRetailOrderController { return null; } + + /** + * 确认注册订单 + * + * @param registerParam 订单入参 + * @param source 数据来源 + * @return + */ + @RepeatSubmit + @PostMapping("/fans-confirm-order") + public AjaxResult fansConfirmOrder(@RequestBody RetailOrderRegisterParam registerParam, + @RequestHeader("Source") Integer source) { + // 设置数据来源 + registerParam.setSource(source); + // 会员ID + registerParam.setPkCreator(SecurityUtils.getUserId()); + // 新零售注册专区 + registerParam.setSpecialArea(ESpecialArea.RETAIL_REGISTER.getValue()); + // 系统类型 + registerParam.setSystemType(SecurityUtils.getSystemType()); + + // 获取等级列表 + List gradeList = iGradeServiceApi.getRetailGradeList().getData(); + // 校验注册权限等 +// String checkStr = this.checkRegistrationPermission(registerParam, gradeList); +// if (null != checkStr) { +// return AjaxResult.error(checkStr); +// } + + // 手机号可以重复,不需要进行是否重复校验 -- 已经跳过,此处可以不需要当前判断 +// // 校验注册关系(是否跨团队) -- 2024.12.24 修改为校验手机号必须唯一 +// String relationStr = iMemberServiceApi.checkRegisterRelation(registerParam.getPhone(), registerParam.getParentCode()).getData(); +// if (relationStr != null) { +// return AjaxResult.error(relationStr); +// } + + // 购物车中获取商品信息 +// registerParam.setOrderItemsParams(convertShoppingCarToSku(registerParam.getPkCreator(), registerParam.getShopList())); + + // 遍历商品,封装订单明细 + // 订单金额 + BigDecimal orderAmount = BigDecimal.ZERO; + + // 生成订单编号 + String orderCode = CommonUtil.createSerialNumber(EOrderPrefix.ORDER_CODE); + List orderItemsParams = new ArrayList<>(); + for (FansConfirmOrderWaresParam waresParam : registerParam.getWaresList()) { + // 遍历sku + // 产品价格等map + Map skuMap = iBdWaresSpecsSkuService.queryWaresSpecsSkuList(waresParam.getSkuList().stream().map(FansConfirmOrderSkuParam::getPkWaresSku).collect(Collectors.toList())); + + // 查询商品 + BdWares bdWares = iBdWaresService.getWares(waresParam.getPkWares()); + + // 缓存数据 + List itemsParamList = new ArrayList<>(waresParam.getSkuList().size()); + // 遍历产品信息 + for (FansConfirmOrderSkuParam skuParam : waresParam.getSkuList()) { + BdWaresSpecsSkuExt specsSku = skuMap.get(skuParam.getPkWaresSku()); + orderAmount = orderAmount.add(specsSku.getPrice().multiply(new BigDecimal(skuParam.getQuantity() * waresParam.getQuantity()))); + + itemsParamList.add(WaresItemsParam.builder() + .pkWaresSpecsSku(skuParam.getPkWaresSku().intValue()) + .quantity(skuParam.getQuantity()) + .build()); + } + orderItemsParams.add(OrderItemsParam.builder() + .waresCode(bdWares.getWaresCode()) + .quantity(waresParam.getQuantity()) + .waresItemsParamList(itemsParamList) + .build()); + } + registerParam.setOrderItemsParams(orderItemsParams); + CuMemberShare memberShare = memberTokenService.getLoginMember().getCuMemberShare(); + registerParam.setCuMemberShare(memberShare); +// registerParam.setPkCreator(memberShare.getPkParent()); + // 确认订单 + String str = iRetailOrderService.confirmRegOrder(registerParam, gradeList); + // redis 拿金额 + SaOrderExt saOrder = redisService.getCacheObject(CacheConstants.RETAIL_TEMP_ORDER + registerParam.getPkCreator() + registerParam.getOrderCode()); + return confirmSharedOrderReturn(str, registerParam.getPkCreator(), registerParam.getShopList(), registerParam.getOrderCode(), saOrder.getOrderAmount()); + } + + /** + * 确认订单返回 + * + * @param str 提示信息(null 为成功) + * @param pkCreator 订单创建人 + * @param shopList 购物车ID + * @param orderCode 订单编号 + * @return + */ + private AjaxResult confirmSharedOrderReturn(String str, Long pkCreator, List shopList, String orderCode, BigDecimal orderAmount) { + if (null == str) { + // 删除购物车商品数据 + if (CollectionUtil.isNotEmpty(shopList)) { + shoppingCartService.batchDelShopping(pkCreator, ShoppingCartVO.builder() + .deleteList(shopList) + .build()); + } + return AjaxResult.success(RetailOrderVO.builder() + .orderCode(orderCode) + .orderAmount(orderAmount) + .build()); + } + return AjaxResult.error(str); + } } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java index 56c36fa5..da42444f 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/controller/service/impl/RetailOrderServiceImpl.java @@ -3,6 +3,7 @@ package com.hzs.retail.sale.controller.service.impl; import cn.hutool.core.codec.Base64Encoder; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Validator; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; @@ -17,6 +18,7 @@ import com.hzs.common.core.utils.*; import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.member.account.CuMemberAccount; import com.hzs.common.domain.member.base.CuMember; +import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.ext.CuMemberAccountExt; import com.hzs.common.domain.sale.ext.BdWaresDetailExt; import com.hzs.common.domain.sale.ext.SaOrderExt; @@ -622,8 +624,15 @@ public class RetailOrderServiceImpl implements IRetailOrderService { cuMember.setCreationTime(new Date()); cuMember.setPkCreator(orderParam.getPkCreator()); + boolean isShared = false; if (null == orderParam.getCreatorMember()) { - orderParam.setCreatorMember(iMemberServiceApi.getRetailMember(orderParam.getPkCreator(), null).getData()); + if(ObjectUtil.isNotEmpty(orderParam.getCuMemberShare())){ + orderParam.setCreatorMember(iMemberServiceApi.getRetailMember(orderParam.getCuMemberShare().getPkParent(), null).getData()); + cuMember.setPkParent(orderParam.getCuMemberShare().getPkParent()); + isShared = true; + }else{ + orderParam.setCreatorMember(iMemberServiceApi.getRetailMember(orderParam.getPkCreator(), null).getData()); + } } cuMember.setPkVertex(orderParam.getCreatorMember().getPkVertex()); cuMember.setPkTeamCode(orderParam.getCreatorMember().getPkTeamCode()); @@ -631,7 +640,12 @@ public class RetailOrderServiceImpl implements IRetailOrderService { cuMember.setSystemType(orderParam.getCreatorMember().getSystemType()); // 获取会员编号、会员主键 - cuMember = iMemberServiceApi.createRetailMemberIdAndCode(cuMember).getData(); + if(isShared){ + cuMember.setPkId(orderParam.getCuMemberShare().getPkId()); + cuMember.setMemberCode(orderParam.getCuMemberShare().getMemberCode()); + }else{ + cuMember = iMemberServiceApi.createRetailMemberIdAndCode(cuMember).getData(); + } return cuMember; } @@ -773,6 +787,10 @@ public class RetailOrderServiceImpl implements IRetailOrderService { newMember.setPkAwards(tmpGrade.getPkAwards()); saOrderExt.setPkMember(newMember.getPkId()); + if(ObjectUtil.isNotEmpty(registerParam.getCuMemberShare())){ + saOrderExt.setPkReference(registerParam.getCuMemberShare().getPkParent()); + saOrderExt.setOrderType(EOrderType.RETAIL_REGISTER.getValue()); + } resultStr = this.payRegOrder(saOrderExt, newMember, null); } else { diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/param/RetailOrderParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/param/RetailOrderParam.java index a5587c9a..7cf9682d 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/param/RetailOrderParam.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/param/RetailOrderParam.java @@ -6,6 +6,7 @@ import com.hzs.common.core.constant.CountryConstants; import com.hzs.common.core.enums.EDelivery; import com.hzs.common.core.enums.ETransportType; import com.hzs.common.domain.member.base.CuMember; +import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.sale.order.param.OrderItemsParam; import com.hzs.sale.shopping.vo.ShoppingCartRedis; import lombok.AllArgsConstructor; @@ -113,6 +114,9 @@ public class RetailOrderParam implements Serializable { @JsonIgnore private CuMember creatorMember; +// @JsonIgnore + private CuMemberShare cuMemberShare; + /** * 订单编号 */ diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/param/RetailOrderRegisterParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/param/RetailOrderRegisterParam.java index 4982edcb..577d6a6b 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/param/RetailOrderRegisterParam.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/param/RetailOrderRegisterParam.java @@ -1,11 +1,12 @@ package com.hzs.retail.sale.param; -import lombok.Data; -import lombok.EqualsAndHashCode; +import com.hzs.sale.order.param.FansConfirmOrderWaresParam; +import lombok.*; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size; import java.io.Serializable; +import java.util.List; /** * 新零售注册订单入参 @@ -33,4 +34,9 @@ public class RetailOrderRegisterParam extends RetailOrderParam implements Serial @Size(max = 20, message = "推荐编号不能超过20位") private String parentCode; + + /** + * 商品列表 + */ + private List waresList; } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/vo/RetailOrderVO.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/vo/RetailOrderVO.java index a6b3e3c8..95e44578 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/vo/RetailOrderVO.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/sale/vo/RetailOrderVO.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.math.BigDecimal; /** * 新零售订单返回VO @@ -48,4 +49,9 @@ public class RetailOrderVO implements Serializable { */ private String urlAddress; + /** + * 待支付金额 + */ + private BigDecimal orderAmount; + } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/controller/api/ApiRetailWaresController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/controller/api/ApiRetailWaresController.java index feea16a2..2824171d 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/controller/api/ApiRetailWaresController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/controller/api/ApiRetailWaresController.java @@ -1,6 +1,7 @@ package com.hzs.retail.wares.controller.api; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.codec.Base64Decoder; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; @@ -10,10 +11,13 @@ import com.hzs.common.core.domain.R; import com.hzs.common.core.enums.EAccount; import com.hzs.common.core.enums.ELabelType; import com.hzs.common.core.enums.ESpecialArea; +import com.hzs.common.core.enums.EWaresType; import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.DistinctByKeyUtil; +import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.domain.AjaxResult; +import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.sale.ext.BdWaresExt; import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt; @@ -25,8 +29,11 @@ import com.hzs.member.base.IMemberServiceApi; import com.hzs.member.base.dto.ShowWaresDTO; import com.hzs.retail.wares.param.RetailWaresDetailParam; import com.hzs.retail.wares.param.RetailWaresParam; +import com.hzs.retail.wares.param.WaresShareParam; import com.hzs.retail.wares.vo.RetailWaresDetailVO; import com.hzs.retail.wares.vo.RetailWaresVO; +import com.hzs.sale.order.service.ISaOrderService; +import com.hzs.sale.wares.param.CuWaresParams; import com.hzs.sale.wares.service.IBdWaresLabelService; import com.hzs.sale.wares.service.IBdWaresRangeService; import com.hzs.sale.wares.service.IBdWaresService; @@ -38,10 +45,7 @@ import com.hzs.system.config.dto.AreaCurrencyDTO; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.math.BigDecimal; @@ -64,6 +68,8 @@ public class ApiRetailWaresController extends BaseController { private IBdWaresSpecsSkuService iBdWaresSpecsSkuService; @Autowired private IBdWaresRangeService iBdWaresRangeService; + @Autowired + private ISaOrderService iSaOrderService; @DubboReference ICurrencyServiceApi iCurrencyServiceApi; @@ -378,4 +384,147 @@ public class ApiRetailWaresController extends BaseController { } + + /** + * 188分享专区商品列表 + */ + @GetMapping("/list-wares-share") + public AjaxResult listWaresShare(WaresShareParam param) { + param.setSpecialArea(ESpecialArea.REGISTER_AREA.getValue()); + param.setIsMakerGift(EWaresType.ORDINARY.getValue()); + param.setPkCountry(CountryConstants.CHINA_COUNTRY); + + // 返回数据 + List waresParamsList = new ArrayList<>(); + + // 查询商品列表 + List bdWaresExtList = iBdWaresService.listWaresShare(param.getSpecialArea(), param.getIsMakerGift(), param.getPkCountry()); + + if (CollectionUtil.isNotEmpty(bdWaresExtList)) { + // 商品主键列表 + List waresIdList = bdWaresExtList.stream().map(BdWares::getPkId).collect(Collectors.toList()); + + if (StringUtils.isNotEmpty(param.getShareMemberCode())) { + // 分享人ID + Long pkMember = Long.parseLong(new String(Base64Decoder.decode(param.getShareMemberCode()))); + CuMember cuMember = iSaOrderService.getCuMemberByKey(pkMember); + // 当前会员编号 + String memberCode = cuMember.getMemberCode(); + + // 检验商品团队信息 + Map> waresAuthorityMap = iBdWaresService.getWaresAuthority(waresIdList); + List showWaresList = bdWaresExtList.stream().map(we -> getShowWares(we.getPkId(), pkMember, memberCode, waresAuthorityMap)).collect(Collectors.toList()); + R> waresShowMapDto = iMemberServiceApi.checkIsShowWares(showWaresList); + Map waresShowMap = waresShowMapDto.getData(); + + // 商品标签列表 + BdWaresLabel waresLabel = new BdWaresLabel(); + waresLabel.setPkIdList(waresIdList); + List list = iBdWaresLabelService.selectByList(waresLabel); + // 标签 + for (BdWaresExt bdWaresExt : bdWaresExtList) { + // 保证标签 + List ensureLabelList = new ArrayList<>(); + // 卖点标签 + List sellingLabelList = new ArrayList<>(); + + for (BdLabelExt bdLabel : list) { + if (ELabelType.PREFIX.getValue() == bdLabel.getLabelType() && bdLabel.getPkWares().equals(bdWaresExt.getPkId())) { + // 前缀标签 + bdWaresExt.setPrefixLabelTarget(bdLabel); + } + if (ELabelType.COOL.getValue() == bdLabel.getLabelType() && bdLabel.getPkWares().equals(bdWaresExt.getPkId())) { + // 酷炫标签 + bdWaresExt.setCoolLabelTarget(bdLabel); + } + if (ELabelType.ENSURE.getValue() == bdLabel.getLabelType() && bdLabel.getPkWares().equals(bdWaresExt.getPkId())) { + // 保证标签 + ensureLabelList.add(bdLabel); + } + if (ELabelType.SELLING.getValue() == bdLabel.getLabelType() && bdLabel.getPkWares().equals(bdWaresExt.getPkId())) { + // 卖点标签 + sellingLabelList.add(bdLabel); + } + } + bdWaresExt.setEnsureLabelList(ensureLabelList.stream().filter(DistinctByKeyUtil.distinctByKey(BdLabel::getPkId)).collect(Collectors.toList())); + bdWaresExt.setSellingLabelList(sellingLabelList.stream().filter(DistinctByKeyUtil.distinctByKey(BdLabel::getPkId)).collect(Collectors.toList())); + } + + // 查询商品sku 最小值 和数量 + List waresSpecsSkuArray = iBdWaresSpecsSkuService.selectByMinWaresSpecsSkuByPkWaresList(waresIdList); + Map> waresSpecsSkuMap = waresSpecsSkuArray.stream().collect(Collectors.groupingBy(BdWaresSpecsSkuExt::getPkWares)); + + // 查询默认规格 + List waresSpecsSkuList = iBdWaresSpecsSkuService.selectByWaresSpecsSku(waresIdList); + + for (BdWaresExt waresExt : bdWaresExtList) { + // 校验团队信息 + Boolean isShowWares = waresShowMap.get(waresExt.getPkId()); + if (null == isShowWares || !isShowWares) { + continue; + } + + CuWaresParams waresParams = BeanUtil.copyProperties(waresExt, CuWaresParams.class); + // 价格 + BigDecimal waresPrice = BigDecimal.ZERO; + // 业绩 + BigDecimal waresAchieve = BigDecimal.ZERO; + + List waresSpecsSku = waresSpecsSkuMap.get(waresExt.getPkId()); + waresSpecsSku = waresSpecsSku.stream().peek(a -> a.setProductGift(a.getPkProduct() + "" + a.getIsGift())).collect(Collectors.toList()); + Map> col = waresSpecsSku.stream().collect(Collectors.groupingBy(BdWaresSpecsSkuExt::getProductGift)); + for (Map.Entry> integerListEntry : col.entrySet()) { + // 取得每一个商品价格最小值 + Optional minBdWaresSpecsSkuExt = integerListEntry.getValue().stream().filter(Objects::nonNull).min(Comparator.comparing(BdWaresSpecsSkuExt::getPrice)); + BdWaresSpecsSkuExt bdWaresSpecsSkuExt = minBdWaresSpecsSkuExt.get(); + waresPrice = waresPrice.add(bdWaresSpecsSkuExt.getPrice().multiply(new BigDecimal(bdWaresSpecsSkuExt.getQuantity()))); + waresAchieve = waresAchieve.add(bdWaresSpecsSkuExt.getAchieve().multiply(new BigDecimal(bdWaresSpecsSkuExt.getQuantity()))); + } + + // 计算商品列表价格和业绩最小值 + waresParams.setWaresPrice(waresPrice); + waresParams.setWaresAchieve(waresAchieve); + // 商品业绩计算汇率 + if (waresParams.getWaresAchieve() != null) { + waresParams.setWaresAchieve(waresParams.getWaresAchieve()); + waresParams.setWaresPrice(waresParams.getWaresPrice()); + } else { + waresParams.setWaresAchieve(BigDecimal.ZERO); + waresParams.setWaresPrice(BigDecimal.ZERO); + } + + // 查询默认规格 + JSONArray jsonArray = new JSONArray(); + List collect = waresSpecsSkuList.stream().filter(DistinctByKeyUtil.distinctByKey(BdWaresSpecsSku::getPkWaresDetail)).collect(Collectors.toList()); + for (BdWaresSpecsSkuExt bdWaresSpecsSku : collect) { + if (bdWaresSpecsSku.getPkWares().equals(waresExt.getPkId())) { + JSONObject js = new JSONObject(); + js.put("pkProduct", bdWaresSpecsSku.getPkProduct()); + js.put("pkSkuId", bdWaresSpecsSku.getPkId()); + js.put("quantity", bdWaresSpecsSku.getQuantity()); + jsonArray.add(js); + } + } + waresParams.setProductGroup(jsonArray); + waresParamsList.add(waresParams); + } + } + } + return AjaxResult.success(waresParamsList); + } + + /** + * 查询团队配置是否展示该商品 + * + * @param pkWares + * @return + */ + public ShowWaresDTO getShowWares(Integer pkWares, Long loginMember, String loginMemberCode, Map> waresAuthorityMap) { + ShowWaresDTO showWaresDTO = new ShowWaresDTO(); + showWaresDTO.setPkWares(pkWares); + showWaresDTO.setLoginMember(loginMember); + showWaresDTO.setLoginMemberCode(loginMemberCode); + showWaresDTO.setWaresAuthorityList(waresAuthorityMap.get(pkWares)); + return showWaresDTO; + } } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/param/WaresShareParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/param/WaresShareParam.java new file mode 100644 index 00000000..1e5e125b --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/retail/wares/param/WaresShareParam.java @@ -0,0 +1,31 @@ +package com.hzs.retail.wares.param; + +import lombok.Data; + +/** + * 分享商品查询条件 + */ +@Data +public class WaresShareParam { + + /** + * 分享会员编号 + */ + private String shareMemberCode; + + /** + * 所属专区 + */ + private Integer specialArea; + + /** + * 商品类型 + */ + private Integer isMakerGift; + + /** + * 国家 + */ + private Integer pkCountry; + +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/api/ApiFanSaOrderController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/api/ApiFanSaOrderController.java index cab5d6cc..43b116d4 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/api/ApiFanSaOrderController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/api/ApiFanSaOrderController.java @@ -2,26 +2,52 @@ package com.hzs.sale.order.controller.api; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.hzs.common.core.annotation.RepeatSubmit; +import com.hzs.common.core.constant.CacheConstants; import com.hzs.common.core.constant.HttpStatus; import com.hzs.common.core.constant.msg.MemberMsgConstants; import com.hzs.common.core.constant.msg.SaOrderMsgConstants; +import com.hzs.common.core.enums.*; +import com.hzs.common.core.utils.CommonUtil; +import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.member.base.CuMember; +import com.hzs.common.domain.member.base.CuMemberShare; +import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt; +import com.hzs.common.domain.sale.ext.SaOrderExt; +import com.hzs.common.domain.sale.order.SaOrderShareTmp; +import com.hzs.common.domain.sale.wares.BdWares; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.common.util.TransactionUtils; import com.hzs.member.base.IMemberServiceApi; +import com.hzs.retail.sale.param.RetailOrderParam; +import com.hzs.retail.sale.param.RetailOrderRegisterParam; import com.hzs.sale.order.controller.ParentOrderController; import com.hzs.sale.order.param.*; +import com.hzs.sale.order.service.ISaOrderService; +import com.hzs.sale.order.service.ISaOrderShareTmpService; +import com.hzs.sale.order.vo.FansConfirmOrderVO; import com.hzs.sale.shopping.vo.ShoppingCartVO; +import com.hzs.sale.wares.service.IBdWaresService; +import com.hzs.sale.wares.service.IBdWaresSpecsSkuService; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + /** * 嗨粉订单 */ @@ -30,6 +56,15 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j public class ApiFanSaOrderController extends ParentOrderController { + @Autowired + private IBdWaresService iBdWaresService; + @Autowired + private IBdWaresSpecsSkuService iBdWaresSpecsSkuService; + @Autowired + private ISaOrderShareTmpService iSaOrderShareTmpService; + @Autowired + private ISaOrderService iSaOrderService; + @DubboReference IMemberServiceApi iMemberServiceApi; @@ -96,4 +131,154 @@ public class ApiFanSaOrderController extends ParentOrderController { } } + +// /** +// * 海粉确认订单 +// * +// * @param param 确认订单入参 +// * @return +// */ +// @PostMapping("/fans-confirm-order") +// public AjaxResult fansConfirmOrder(@RequestBody FansConfirmOrderParam param) { +// // 校验参数 +// if (StringUtils.isAnyEmpty(param.getMemberName(), param.getPhone(), param.getRecName(), param.getRecPhone(), param.getRecAddress()) +// || null == param.getPkCountry() || null == param.getRecProvince() || null == param.getRecCity() +// || CollectionUtil.isEmpty(param.getWaresList()) +// ) { +// // 缺少参数 +// return AjaxResult.error("缺少参数"); +// } +// // 校验商品数据 +// for (FansConfirmOrderWaresParam waresParam : param.getWaresList()) { +// if (null == waresParam.getPkWares() || null == waresParam.getQuantity() +// || CollectionUtil.isEmpty(waresParam.getSkuList())) { +// // 缺少参数 +// return AjaxResult.error("缺少参数"); +// } +// // 校验产品数据 +// for (FansConfirmOrderSkuParam skuParam : waresParam.getSkuList()) { +// if (null == skuParam.getPkWaresSku() || null == skuParam.getQuantity()) { +// // 缺少参数 +// return AjaxResult.error("缺少参数"); +// } +// } +// } +// +// // 会员ID +// Long userId = SecurityUtils.getUserId(); +// // 所属国家 +// Integer pkCountry = SecurityUtils.getPkCountry(); +// +// // 查询临时会员 +// CuMemberShare cuMemberShare = iMemberServiceApi.queryCuMemberShare(userId).getData(); +// if (null == cuMemberShare) { +// // 会员不存在 +// return AjaxResult.error("推荐人不存在"); +// } +// +// // 封装缓存数据 +// RetailOrderRegisterParam orderParam = RetailOrderRegisterParam.builder() +// .memberName(param.getMemberName()) +// .phone(param.getPhone()) +// .build(); +// +// // 手机号注册次数校验 +// AjaxResult ajaxResult = super.validatePhone(orderParam); +// if (!ajaxResult.isSuccess()) { +// return ajaxResult; +// } +// +// // 订单金额 +// BigDecimal orderAmount = BigDecimal.ZERO; +// +// // 生成订单编号 +// String orderCode = CommonUtil.createSerialNumber(EOrderPrefix.ORDER_CODE); +// +// // 缓存数据 +// List orderItemsParams = new ArrayList<>(); +// // 遍历商品,封装订单明细 +// for (FansConfirmOrderWaresParam waresParam : param.getWaresList()) { +// // 遍历sku +// // 产品价格等map +// Map skuMap = iBdWaresSpecsSkuService.queryWaresSpecsSkuList(waresParam.getSkuList().stream().map(FansConfirmOrderSkuParam::getPkWaresSku).collect(Collectors.toList())); +// +// // 查询商品 +// BdWares bdWares = iBdWaresService.getWares(waresParam.getPkWares()); +// +// // 缓存数据 +// List itemsParamList = new ArrayList<>(waresParam.getSkuList().size()); +// // 遍历产品信息 +// for (FansConfirmOrderSkuParam skuParam : waresParam.getSkuList()) { +// BdWaresSpecsSkuExt specsSku = skuMap.get(skuParam.getPkWaresSku()); +// orderAmount = orderAmount.add(specsSku.getPrice().multiply(new BigDecimal(skuParam.getQuantity() * waresParam.getQuantity()))); +// +// itemsParamList.add(WaresItemsParam.builder() +// .pkWaresSpecsSku(skuParam.getPkWaresSku().intValue()) +// .quantity(skuParam.getQuantity()) +// .build()); +// } +// orderItemsParams.add(OrderItemsParam.builder() +// .waresCode(bdWares.getWaresCode()) +// .quantity(waresParam.getQuantity()) +// .waresItemsParamList(itemsParamList) +// .build()); +// } +// // 封装订单数据 +// SaOrderExt saOrder = new SaOrderExt(); +// saOrder.setOrderCode(orderCode); +// // 188注册订单实际按复购订单来算 +// saOrder.setOrderType(EOrderType.REPURCHASE_ORDER.getValue()); +// saOrder.setOrderTypeExtend(EOrderTypeExtend.REG_REP.getValue()); +// saOrder.setOrderAmount(orderAmount); +// saOrder.setPostage(BigDecimal.ZERO); +// saOrder.setRecName(param.getRecName()); +// saOrder.setRecPhone(param.getRecPhone()); +// saOrder.setRecProvince(param.getRecProvince()); +// saOrder.setRecCity(param.getRecCity()); +// saOrder.setRecCounty(param.getRecCounty()); +// saOrder.setRecAddress(param.getRecAddress()); +// saOrder.setRemark(param.getRemark()); +// saOrder.setPkMember(cuMemberShare.getPkId()); +// saOrder.setPkReference(cuMemberShare.getPkParent()); +// saOrder.setDeliveryWay(EDelivery.FAST_MAIL.getValue()); +// saOrder.setTranType(ETransportType.LAND.getValue()); +// saOrder.setPkCreator(cuMemberShare.getPkId()); +// saOrder.setPkCountry(pkCountry); +// +// orderParam.setOrderCode(orderCode); +// orderParam.setSpecialArea(saOrder.getOrderType()); +// orderParam.setPostage(saOrder.getPostage()); +// orderParam.setDeliveryWay(saOrder.getDeliveryWay()); +// orderParam.setTransType(saOrder.getTranType()); +// orderParam.setRecName(saOrder.getRecName()); +// orderParam.setRecPhone(saOrder.getRecPhone()); +// orderParam.setRecProvince(saOrder.getRecProvince()); +// orderParam.setRecCity(saOrder.getRecCity()); +// orderParam.setRecCounty(saOrder.getRecCounty()); +// orderParam.setRecAddress(saOrder.getRecAddress()); +// orderParam.setOrderItemsParams(orderItemsParams); +// +// HashMap orderInfo = new HashMap<>(); +// orderInfo.put("param", param); +// orderInfo.put("saOrder", saOrder); +// orderInfo.put("orderParam", orderParam); +// // 分享会员订单数据 +// if (iSaOrderShareTmpService.save(SaOrderShareTmp.builder() +// .pkId(cuMemberShare.getPkId()) +// .orderInfo(JSONUtil.toJsonStr(orderInfo)) +// .build())) { +// +// // 临时订单直接放入缓存(24小时有效) +// redisService.setCacheObject(CacheConstants.RETAIL_TEMP_ORDER + userId + orderCode, saOrder, 24L, TimeUnit.HOURS); +// // 临时会员直接放入缓存(24小时有效) +// redisService.setCacheObject(CacheConstants.RETAIL_TEMP_REG_PARAM + userId + orderCode, orderParam, 24L, TimeUnit.HOURS); +// +// return AjaxResult.success(FansConfirmOrderVO.builder() +// .orderCode(orderCode) +// .orderAmount(saOrder.getOrderAmount().add(saOrder.getPostage())) +// .payTime(iSaOrderService.getIsToBePayTime(pkCountry, saOrder.getOrderType())) +// .build()); +// } +// return AjaxResult.error(); +// } } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderParam.java new file mode 100644 index 00000000..28aea898 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderParam.java @@ -0,0 +1,68 @@ +package com.hzs.sale.order.param; + +import lombok.Data; + +import java.util.List; + +/** + * 海粉确认订单入参 + */ +@Data +public class FansConfirmOrderParam { + + /*** + * 自然国 + */ + private Integer pkCountry; + + /** + * 会员姓名 + */ + private String memberName; + + /** + * 联系方式 + */ + private String phone; + + /** + * 收货人 + */ + private String recName; + + /** + * 收货电话 + */ + private String recPhone; + + /** + * 收货省 + */ + private Integer recProvince; + + /** + * 收货市 + */ + private Integer recCity; + + /** + * 收货县 + */ + private Integer recCounty; + + /** + * 收货地址 + */ + private String recAddress; + + /** + * 备注 + */ + private String remark; + + /** + * 商品列表 + */ + private List waresList; + +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderSkuParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderSkuParam.java new file mode 100644 index 00000000..b533710b --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderSkuParam.java @@ -0,0 +1,21 @@ +package com.hzs.sale.order.param; + +import lombok.Data; + +/** + * 海粉确认订单产品入参 + */ +@Data +public class FansConfirmOrderSkuParam { + + /** + * SKU ID + */ + private Long pkWaresSku; + + /** + * 产品数量 + */ + private Integer quantity; + +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderWaresParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderWaresParam.java new file mode 100644 index 00000000..e5cb4067 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/FansConfirmOrderWaresParam.java @@ -0,0 +1,28 @@ +package com.hzs.sale.order.param; + +import lombok.Data; + +import java.util.List; + +/** + * 海粉确认订单商品入参 + */ +@Data +public class FansConfirmOrderWaresParam { + + /** + * 商品ID + */ + private Integer pkWares; + + /** + * 商品数量 + */ + private Integer quantity; + + /** + * 产品列表 + */ + private List skuList; + +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/api/ApiBdWaresController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/api/ApiBdWaresController.java index f926b94c..b775d890 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/api/ApiBdWaresController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/controller/api/ApiBdWaresController.java @@ -1,6 +1,7 @@ package com.hzs.sale.wares.controller.api; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.codec.Base64Decoder; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; @@ -27,6 +28,7 @@ import com.hzs.common.security.utils.SecurityUtils; import com.hzs.common.util.TransactionUtils; import com.hzs.member.base.IMemberServiceApi; import com.hzs.member.base.dto.ShowWaresDTO; +import com.hzs.retail.wares.param.WaresShareParam; import com.hzs.sale.order.service.ISaOrderService; import com.hzs.sale.shopping.service.IShoppingCartService; import com.hzs.sale.shopping.vo.WaresItemWaresInfo; @@ -667,4 +669,132 @@ public class ApiBdWaresController extends BaseController { return AjaxResult.success(waresInfoVo); } + + /** + * 188分享专区商品列表 + */ + @GetMapping("/list-wares-share") + public AjaxResult listWaresShare(WaresShareParam param) { + param.setSpecialArea(ESpecialArea.RETAIL_REGISTER.getValue()); + param.setIsMakerGift(EWaresType.ORDINARY.getValue()); + param.setPkCountry(CountryConstants.CHINA_COUNTRY); + + // 返回数据 + List waresParamsList = new ArrayList<>(); + + // 查询商品列表 + List bdWaresExtList = iBdWaresService.listWaresShare(param.getSpecialArea(), param.getIsMakerGift(), param.getPkCountry()); + + if (CollectionUtil.isNotEmpty(bdWaresExtList)) { + // 商品主键列表 + List waresIdList = bdWaresExtList.stream().map(BdWares::getPkId).collect(Collectors.toList()); + + if (StringUtils.isNotEmpty(param.getShareMemberCode())) { + // 分享人ID + Long pkMember = Long.parseLong(new String(Base64Decoder.decode(param.getShareMemberCode()))); + CuMember cuMember = iSaOrderService.getCuMemberByKey(pkMember); + // 当前会员编号 + String memberCode = cuMember.getMemberCode(); + + // 检验商品团队信息 + Map> waresAuthorityMap = iBdWaresService.getWaresAuthority(waresIdList); + List showWaresList = bdWaresExtList.stream().map(we -> getShowWares(we.getPkId(), pkMember, memberCode, waresAuthorityMap)).collect(Collectors.toList()); + R> waresShowMapDto = iMemberServiceApi.checkIsShowWares(showWaresList); + Map waresShowMap = waresShowMapDto.getData(); + + // 商品标签列表 + BdWaresLabel waresLabel = new BdWaresLabel(); + waresLabel.setPkIdList(waresIdList); + List list = iBdWaresLabelService.selectByList(waresLabel); + // 标签 + for (BdWaresExt bdWaresExt : bdWaresExtList) { + // 保证标签 + List ensureLabelList = new ArrayList<>(); + // 卖点标签 + List sellingLabelList = new ArrayList<>(); + + for (BdLabelExt bdLabel : list) { + if (ELabelType.PREFIX.getValue() == bdLabel.getLabelType() && bdLabel.getPkWares().equals(bdWaresExt.getPkId())) { + // 前缀标签 + bdWaresExt.setPrefixLabelTarget(bdLabel); + } + if (ELabelType.COOL.getValue() == bdLabel.getLabelType() && bdLabel.getPkWares().equals(bdWaresExt.getPkId())) { + // 酷炫标签 + bdWaresExt.setCoolLabelTarget(bdLabel); + } + if (ELabelType.ENSURE.getValue() == bdLabel.getLabelType() && bdLabel.getPkWares().equals(bdWaresExt.getPkId())) { + // 保证标签 + ensureLabelList.add(bdLabel); + } + if (ELabelType.SELLING.getValue() == bdLabel.getLabelType() && bdLabel.getPkWares().equals(bdWaresExt.getPkId())) { + // 卖点标签 + sellingLabelList.add(bdLabel); + } + } + bdWaresExt.setEnsureLabelList(ensureLabelList.stream().filter(DistinctByKeyUtil.distinctByKey(BdLabel::getPkId)).collect(Collectors.toList())); + bdWaresExt.setSellingLabelList(sellingLabelList.stream().filter(DistinctByKeyUtil.distinctByKey(BdLabel::getPkId)).collect(Collectors.toList())); + } + + // 查询商品sku 最小值 和数量 + List waresSpecsSkuArray = iBdWaresSpecsSkuService.selectByMinWaresSpecsSkuByPkWaresList(waresIdList); + Map> waresSpecsSkuMap = waresSpecsSkuArray.stream().collect(Collectors.groupingBy(BdWaresSpecsSkuExt::getPkWares)); + + // 查询默认规格 + List waresSpecsSkuList = iBdWaresSpecsSkuService.selectByWaresSpecsSku(waresIdList); + + for (BdWaresExt waresExt : bdWaresExtList) { + // 校验团队信息 + Boolean isShowWares = waresShowMap.get(waresExt.getPkId()); + if (null == isShowWares || !isShowWares) { + continue; + } + + CuWaresParams waresParams = BeanUtil.copyProperties(waresExt, CuWaresParams.class); + // 价格 + BigDecimal waresPrice = BigDecimal.ZERO; + // 业绩 + BigDecimal waresAchieve = BigDecimal.ZERO; + + List waresSpecsSku = waresSpecsSkuMap.get(waresExt.getPkId()); + waresSpecsSku = waresSpecsSku.stream().peek(a -> a.setProductGift(a.getPkProduct() + "" + a.getIsGift())).collect(Collectors.toList()); + Map> col = waresSpecsSku.stream().collect(Collectors.groupingBy(BdWaresSpecsSkuExt::getProductGift)); + for (Map.Entry> integerListEntry : col.entrySet()) { + // 取得每一个商品价格最小值 + Optional minBdWaresSpecsSkuExt = integerListEntry.getValue().stream().filter(Objects::nonNull).min(Comparator.comparing(BdWaresSpecsSkuExt::getPrice)); + BdWaresSpecsSkuExt bdWaresSpecsSkuExt = minBdWaresSpecsSkuExt.get(); + waresPrice = waresPrice.add(bdWaresSpecsSkuExt.getPrice().multiply(new BigDecimal(bdWaresSpecsSkuExt.getQuantity()))); + waresAchieve = waresAchieve.add(bdWaresSpecsSkuExt.getAchieve().multiply(new BigDecimal(bdWaresSpecsSkuExt.getQuantity()))); + } + + // 计算商品列表价格和业绩最小值 + waresParams.setWaresPrice(waresPrice); + waresParams.setWaresAchieve(waresAchieve); + // 商品业绩计算汇率 + if (waresParams.getWaresAchieve() != null) { + waresParams.setWaresAchieve(waresParams.getWaresAchieve()); + waresParams.setWaresPrice(waresParams.getWaresPrice()); + } else { + waresParams.setWaresAchieve(BigDecimal.ZERO); + waresParams.setWaresPrice(BigDecimal.ZERO); + } + + // 查询默认规格 + JSONArray jsonArray = new JSONArray(); + List collect = waresSpecsSkuList.stream().filter(DistinctByKeyUtil.distinctByKey(BdWaresSpecsSku::getPkWaresDetail)).collect(Collectors.toList()); + for (BdWaresSpecsSkuExt bdWaresSpecsSku : collect) { + if (bdWaresSpecsSku.getPkWares().equals(waresExt.getPkId())) { + JSONObject js = new JSONObject(); + js.put("pkProduct", bdWaresSpecsSku.getPkProduct()); + js.put("pkSkuId", bdWaresSpecsSku.getPkId()); + js.put("quantity", bdWaresSpecsSku.getQuantity()); + jsonArray.add(js); + } + } + waresParams.setProductGroup(jsonArray); + waresParamsList.add(waresParams); + } + } + } + return AjaxResult.success(waresParamsList); + } } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresMapper.java index 79d06d00..232bf6ab 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresMapper.java @@ -158,4 +158,16 @@ public interface BdWaresMapper extends BaseMapper { */ List listWaresNoSale(@Param("param") WaresNoSaleParam param); + + /** + * 根据条件查询商品信息 + * + * @param specialArea 专区 + * @param specialArea 专区 + * @param pkCountry 所属国家 + * @return: List + */ + List listWaresShare(@Param("specialArea") Integer specialArea, + @Param("isMakerGift") Integer isMakerGift, + @Param("pkCountry") Integer pkCountry); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresSpecsSkuMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresSpecsSkuMapper.java index beaf1ad5..325c97ec 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresSpecsSkuMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/mapper/BdWaresSpecsSkuMapper.java @@ -109,4 +109,12 @@ public interface BdWaresSpecsSkuMapper extends BaseMapper { */ List selectByMinWaresSpecsSkuByPkWaresList(@Param("pkWaresIds") List pkWaresIds); + + /** + * 查询SKU价格等信息 + * + * @param skuIdList skuID列表 + * @return + */ + List queryWaresSpecsSkuList(@Param("skuIdList") List skuIdList); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresService.java index d1c8f6b4..acd86f70 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresService.java @@ -230,4 +230,14 @@ public interface IBdWaresService extends IService { */ List listWaresNoSale(WaresNoSaleParam param); + + /** + * 根据条件查询商品信息 + * + * @param specialArea 专区 + * @param specialArea 专区 + * @param pkCountry 所属国家 + * @return: List + */ + List listWaresShare(Integer specialArea, Integer isMakerGift, Integer pkCountry); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresSpecsSkuService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresSpecsSkuService.java index 5a73299d..1f801491 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresSpecsSkuService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/IBdWaresSpecsSkuService.java @@ -13,6 +13,7 @@ import com.hzs.sale.wares.param.CuWaresParams; import com.hzs.sale.wares.param.SpecsSkuParam; import java.util.List; +import java.util.Map; /** * 规格sku表 服务类 @@ -107,4 +108,12 @@ public interface IBdWaresSpecsSkuService extends IService { */ RetailWaresDetailVO queryWaresDetail(RetailWaresDetailParam param, Integer pkGrade); + + /** + * 查询SKU价格等信息 + * + * @param skuIdList skuID列表 + * @return + */ + Map queryWaresSpecsSkuList(List skuIdList); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresServiceImpl.java index 3ecb10ad..09188aff 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresServiceImpl.java @@ -1176,4 +1176,9 @@ public class BdWaresServiceImpl extends ServiceImpl impl return baseMapper.listWaresNoSale(param); } + + @Override + public List listWaresShare(Integer specialArea, Integer isMakerGift, Integer pkCountry) { + return baseMapper.listWaresShare(specialArea, isMakerGift, pkCountry); + } } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresSpecsSkuServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresSpecsSkuServiceImpl.java index c909da84..d1d547a7 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresSpecsSkuServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresSpecsSkuServiceImpl.java @@ -580,4 +580,15 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl queryWaresSpecsSkuList(List skuIdList) { + Map resultMap = new HashMap<>(); + + List list = baseMapper.queryWaresSpecsSkuList(skuIdList); + for (BdWaresSpecsSkuExt waresSpecsSku : list) { + resultMap.put(waresSpecsSku.getPkId().longValue(), waresSpecsSku); + } + return resultMap; + } } diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml index 93fbedad..985df2be 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml @@ -507,4 +507,35 @@ order by bw.wares_name + + + diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresSpecsSkuMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresSpecsSkuMapper.xml index 06418e05..432196b4 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresSpecsSkuMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresSpecsSkuMapper.xml @@ -357,4 +357,23 @@ + + + diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/config/BdConfig.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/config/BdConfig.java index 553d7b8c..f19aea82 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/config/BdConfig.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/config/BdConfig.java @@ -24,18 +24,18 @@ public class BdConfig { * PC地址 */ private static String pc; -// /** -// * 公众号地址 -// */ -// private static String gzh; -// /** -// * IOS地址 -// */ -// private static String ios; -// /** -// * android地址 -// */ -// private static String android; + /** + * 公众号地址 + */ + private static String gzh; + /** + * IOS地址 + */ + private static String ios; + /** + * android地址 + */ + private static String android; /** * 商品同步是否开启(0=开启,1=不开启) @@ -70,29 +70,30 @@ public class BdConfig { BdConfig.pc = pc; } -// public static String getGzh() { -// return gzh; -// } -// -// public void setGzh(String gzh) { -// HzsConfig.gzh = gzh; -// } -// -// public static String getIos() { -// return ios; -// } -// -// public void setIos(String ios) { -// HzsConfig.ios = ios; -// } -// -// public static String getAndroid() { -// return android; -// } -// -// public void setAndroid(String android) { -// HzsConfig.android = android; -// } + + public static String getGzh() { + return gzh; + } + + public void setGzh(String gzh) { + BdConfig.gzh = gzh; + } + + public static String getIos() { + return ios; + } + + public void setIos(String ios) { + BdConfig.ios = ios; + } + + public static String getAndroid() { + return android; + } + + public void setAndroid(String android) { + BdConfig.android = android; + } public static Integer getProductSync() { return productSync; diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/SysConstants.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/SysConstants.java index b0c0c5bc..930de6b2 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/SysConstants.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/SysConstants.java @@ -9,6 +9,11 @@ import java.util.List; */ public class SysConstants { + + /** + * 嗨粉前缀 + */ + public static final String HAI_FUN_PREFIX = "HF"; /** * 新零售前缀 */ diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderTypeExtend.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderTypeExtend.java new file mode 100644 index 00000000..a1147d03 --- /dev/null +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderTypeExtend.java @@ -0,0 +1,38 @@ +package com.hzs.common.core.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 订单扩展类型枚举类 + */ +@AllArgsConstructor +@Getter +public enum EOrderTypeExtend { + + /** + * 正常 + */ + NORMAL(0, "正常", 0), + + /** + * 注册转复购 + */ + REG_REP(1, "注册转复购", 0), + + ; + + /** + * 实际值 + */ + private final int value; + /** + * 显示标签 + */ + private final String label; + /** + * 是否启用(0=是,1=否) -- 来源EYesNo + */ + private final int enable; + +} diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EShareType.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EShareType.java index bb0f12ab..8358cf86 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EShareType.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EShareType.java @@ -19,6 +19,11 @@ public enum EShareType { */ SHARE(1, "分享注册"), + /** + * 188注册 + */ + FANS(2, "188注册"), + ; /** diff --git a/bd-common/bd-common-security/src/main/java/com/hzs/common/security/service/MemberTokenService.java b/bd-common/bd-common-security/src/main/java/com/hzs/common/security/service/MemberTokenService.java index 62297b45..f3a45fb4 100644 --- a/bd-common/bd-common-security/src/main/java/com/hzs/common/security/service/MemberTokenService.java +++ b/bd-common/bd-common-security/src/main/java/com/hzs/common/security/service/MemberTokenService.java @@ -8,6 +8,7 @@ import com.hzs.common.core.utils.ServletUtils; import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.utils.ip.IpUtils; import com.hzs.common.core.utils.uuid.IdUtils; +import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.member.base.dto.LoginMember; @@ -57,16 +58,26 @@ public class MemberTokenService { public Map createToken(LoginMember loginMember) { String token = IdUtils.fastUUID(); - // 注册用户处理 - CuMemberExt cuMember = loginMember.getCuMember(); // 用户ID - Long pkId = cuMember.getPkId(); + Long pkId; // 用户编号 - String memberCode = cuMember.getMemberCode(); + String memberCode; // 结算国 - Integer pkCountry = cuMember.getPkSettleCountry(); - // 系统类型 - Integer systemType = cuMember.getSystemType(); + Integer pkCountry; + + if (null != loginMember.getCuMember()) { + // 注册用户处理 + CuMemberExt cuMember = loginMember.getCuMember(); + pkId = cuMember.getPkId(); + memberCode = cuMember.getMemberCode(); + pkCountry = cuMember.getPkSettleCountry(); + } else { + // 分享用户处理(临时海粉) + CuMemberShare cuMemberShare = loginMember.getCuMemberShare(); + pkId = cuMemberShare.getPkId(); + memberCode = cuMemberShare.getMemberCode(); + pkCountry = cuMemberShare.getPkCountry(); + } loginMember.setToken(token); loginMember.setPkId(pkId); @@ -82,7 +93,6 @@ public class MemberTokenService { claimsMap.put(SecurityConstants.DETAILS_USERNAME, memberCode); claimsMap.put(SecurityConstants.DETAILS_USER_TYPE, loginMember.getLoginType()); claimsMap.put(SecurityConstants.DETAILS_USER_COUNTRY, pkCountry); - claimsMap.put(SecurityConstants.SYSTEM_TYPE, systemType); // 接口返回信息 Map rspMap = new HashMap<>(); diff --git a/bd-gateway/src/main/resources/bootstrap.yml b/bd-gateway/src/main/resources/bootstrap.yml index b36ebbd4..ec0d264d 100644 --- a/bd-gateway/src/main/resources/bootstrap.yml +++ b/bd-gateway/src/main/resources/bootstrap.yml @@ -175,6 +175,11 @@ security: - /system/manage/area/get-light-area # 新零售白名单 - /retail-member/api/retail-auth/* + # 188分享注册白名单 + - /member/api/member/fans-convert-code/* + - /member/api/member/fans-order/* + - /system/api/idempotent/generate + - /member/api/retail-auth/auto-login # 日志配置 logging: diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/TOnlinePaymentServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/TOnlinePaymentServiceImpl.java index db5c6cbc..911d8a75 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/TOnlinePaymentServiceImpl.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/impl/TOnlinePaymentServiceImpl.java @@ -61,6 +61,9 @@ public class TOnlinePaymentServiceImpl extends ServiceImpl