diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberGroupController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberGroupController.java index eb622dbc9..51e93c1f8 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberGroupController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberGroupController.java @@ -6,6 +6,7 @@ import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.domain.AjaxResult; import com.jsowell.common.core.page.TableDataInfo; import com.jsowell.common.enums.BusinessType; +import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.poi.ExcelUtil; import com.jsowell.pile.domain.MemberGroup; import com.jsowell.pile.dto.MemberGroupDTO; @@ -78,7 +79,22 @@ public class MemberGroupController extends BaseController { @Log(title = "会员组", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody MemberGroup memberGroup) { - return toAjax(memberGroupService.insertMemberGroup(memberGroup)); + AjaxResult ajaxResult; + try { + int i = memberGroupService.insertMemberGroup(memberGroup); + if (i > 0) { + ajaxResult = AjaxResult.success(); + } else { + ajaxResult = AjaxResult.error(); + } + } catch (BusinessException e) { + logger.error("创建运营商集团异常", e); + ajaxResult = AjaxResult.error(e.getMessage()); + } catch (Exception e) { + logger.error("创建运营商集团失败", e); + ajaxResult = AjaxResult.error("创建运营商集团失败"); + } + return ajaxResult; } /** @@ -106,7 +122,7 @@ public class MemberGroupController extends BaseController { } /** - * 会员组添加会员 + * 会员组添加会员, 后管添加 */ @PostMapping("/addMember") public AjaxResult addMember(@RequestBody MemberGroupDTO dto) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberGroupMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberGroupMapper.java index 4c642601b..4db2e36d4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberGroupMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberGroupMapper.java @@ -80,4 +80,10 @@ public interface MemberGroupMapper { List queryMemberList(@Param("groupCode") String groupCode); MemberGroup selectByGroupCode(String groupCode); + + MemberGroupVO queryByStationId(String stationId); + + MemberGroupVO queryByMerchantId(String merchantId); + + MemberDiscountVO queryMemberDiscountV2(@Param("groupCode") String groupCode, @Param("memberId") String memberId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberGroupService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberGroupService.java index 94ffd0b52..3f0b4b04a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberGroupService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberGroupService.java @@ -74,4 +74,20 @@ public interface MemberGroupService { List queryMemberList(MemberGroupDTO dto); + MemberGroupVO queryByMerchantId(String merchantId); + + /** + * 通过站点id查询当前站点是否配置集团 + * @param stationId 站点信息 + * @return + */ + MemberGroupVO queryByStationId(String stationId); + + /** + * 添加会员到集团 + * 如果该站点配置的有集团,就把会员自动加入到集团中 + * 目前只有汇鑫大厦使用 + * @return + */ + int addMember2MemberGroup(String memberId, String stationId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberGroupServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberGroupServiceImpl.java index dbe542a8b..829ef396c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberGroupServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberGroupServiceImpl.java @@ -2,6 +2,7 @@ package com.jsowell.pile.service.impl; import com.google.common.collect.Lists; import com.jsowell.common.enums.DelFlagEnum; +import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.SecurityUtils; import com.jsowell.common.util.StringUtils; @@ -90,6 +91,11 @@ public class MemberGroupServiceImpl implements MemberGroupService { */ @Override public int insertMemberGroup(MemberGroup memberGroup) { + String merchantId = memberGroup.getMerchantId(); + MemberGroupVO memberGroupVO = queryByMerchantId(merchantId); + if (memberGroupVO != null) { + throw new BusinessException("", "该运营商已经创建过集团"); + } // 生成编号 memberGroup.setGroupCode(generateGroupCode()); memberGroup.setCreateTime(DateUtils.getNowDate()); @@ -107,14 +113,14 @@ public class MemberGroupServiceImpl implements MemberGroupService { return memberGroupMapper.insertMemberGroup(memberGroup); } - private boolean isBetween(BigDecimal price){ + private boolean isBetween(BigDecimal price) { BigDecimal start = BigDecimal.ZERO; BigDecimal end = BigDecimal.TEN; return isBetween(price, start, end); } - private boolean isBetween(BigDecimal price, BigDecimal start, BigDecimal end){ - return price.compareTo(start) > 0 && price.compareTo(end) < 0; + private boolean isBetween(BigDecimal source, BigDecimal start, BigDecimal end) { + return source.compareTo(start) > 0 && source.compareTo(end) < 0; } // 生成编号 @@ -131,6 +137,7 @@ public class MemberGroupServiceImpl implements MemberGroupService { /** * 根据会员组编号查询 + * * @param groupCode * @return */ @@ -181,6 +188,11 @@ public class MemberGroupServiceImpl implements MemberGroupService { return MemberDiscountVO; } + /** + * 后管保存集团会员关系 + * @param dto + * @return + */ @Override public int addMember(MemberGroupDTO dto) { String groupCode = dto.getGroupCode(); @@ -193,15 +205,51 @@ public class MemberGroupServiceImpl implements MemberGroupService { return 0; } // 查询会员id - String phoneNumber = dto.getPhoneNumber(); String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByMerchantId(memberGroup.getMerchantId()); - MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(phoneNumber, firstLevelMerchantId); + MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(dto.getPhoneNumber(), firstLevelMerchantId); if (memberBasicInfo == null) { return 0; } // 校验通过,关系存入数据库 + return saveMemberGroupRelation(memberBasicInfo.getMemberId(), groupCode); + } + + /** + * 订单保存集团会员关系 + * @param memberId 会员id + * @param merchantId 运营商id + * @return + */ + @Override + public int addMember2MemberGroup(String memberId, String merchantId) { + log.info("添加会员id:{}, 到运营商:{}的集团中", memberId, merchantId); + // 查询该站点有没有集团信息 + MemberGroupVO memberGroupVO = queryByMerchantId(merchantId); + if (memberGroupVO == null) { + return 0; + } + // 检查memberId是否在集团中 + MemberDiscountVO vo = memberGroupMapper.queryMemberDiscountV2(memberGroupVO.getGroupCode(), memberId); + if (vo == null) { + // 校验通过,关系存入数据库 加入到集团 + return saveMemberGroupRelation(memberId, memberGroupVO.getGroupCode()); + } + return 0; + } + + /** + * 会员与集团的关系保存到数据库 + * @param memberId 会员id + * @param groupCode 集团编号 + * @return + */ + private int saveMemberGroupRelation(String memberId, String groupCode) { + if (StringUtils.isBlank(memberId) || StringUtils.isBlank(groupCode)) { + return 0; + } + // 校验通过,关系存入数据库 加入到集团 MemberGroupRelation relation = new MemberGroupRelation(); - relation.setMemberId(memberBasicInfo.getMemberId()); + relation.setMemberId(memberId); relation.setGroupCode(groupCode); relation.setCreateTime(DateUtils.getNowDate()); relation.setDelFlag(DelFlagEnum.NORMAL.getValue()); @@ -214,4 +262,14 @@ public class MemberGroupServiceImpl implements MemberGroupService { return list; } + @Override + public MemberGroupVO queryByMerchantId(String merchantId) { + return memberGroupMapper.queryByMerchantId(merchantId); + } + + @Override + public MemberGroupVO queryByStationId(String stationId) { + return memberGroupMapper.queryByStationId(stationId); + } + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 762503190..83c2e8904 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -774,6 +774,19 @@ public abstract class AbstractProgramLogic implements InitializingBean { orderBasicInfo.getOrderCode(), memberId, discountAmount, discountElectricityAmount, discountServiceAmount, totalConsumeAmount); } + /** + * 计算订单折扣V2 + * 使用优惠计费模板计算优惠金额 + * @param orderBasicInfo 订单主表 + * @param orderDetail 订单详情 + */ + protected void calculateOrderDiscountsV2(OrderBasicInfo orderBasicInfo, OrderDetail orderDetail) { + String memberId = orderBasicInfo.getMemberId(); // 会员id + String stationId = orderBasicInfo.getStationId(); // 站点id + + + } + /** * 计算余额支付下发金额 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MemberDiscountVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MemberDiscountVO.java index c28254d8e..e8606f3aa 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MemberDiscountVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MemberDiscountVO.java @@ -33,4 +33,10 @@ public class MemberDiscountVO { /** 折扣率 */ private BigDecimal discount; + + /** + * 优惠计费模板 + */ + private BillingTemplateVO billingTemplateVO; + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MemberGroupInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MemberGroupInfoVO.java new file mode 100644 index 000000000..3aad61105 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MemberGroupInfoVO.java @@ -0,0 +1,33 @@ +package com.jsowell.pile.vo.web; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Map; + +@Getter +@Setter +public class MemberGroupInfoVO { + private String id; + + /** + * 会员组编号 + */ + private String groupCode; + + /** + * 运营商id + */ + private String merchantId; + + /** + * 站点id + */ + private String stationId; + + /** + * 优惠计费模板 + */ + private Map billingTemplateMap; + +} diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberGroupMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberGroupMapper.xml index 6d2ceb2ad..a592849a8 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/MemberGroupMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberGroupMapper.xml @@ -170,4 +170,48 @@ where del_flag = '0' and group_code = #{groupCode,jdbcType=VARCHAR} + + + + + + \ No newline at end of file