MercFeeConfigSimCardServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.xy.service;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.xy.device.EnumSimConfig;
  9. import com.xy.dto.MercFeeConfigAlgorithmTypeDto;
  10. import com.xy.dto.MercFeeConfigDto;
  11. import com.xy.dto.MercFeeConfigSimCardDto;
  12. import com.xy.dto.be.MercDto;
  13. import com.xy.entity.MercFeeConfigSimCard;
  14. import com.xy.error.CommRuntimeException;
  15. import com.xy.mapper.MercFeeConfigSimCardMapper;
  16. import com.xy.service.be.MercService;
  17. import com.xy.utils.*;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import lombok.AllArgsConstructor;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.validation.annotation.Validated;
  23. import org.springframework.web.bind.annotation.PostMapping;
  24. import org.springframework.web.bind.annotation.RequestBody;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. import static com.xy.utils.Beans.copy;
  28. import static com.xy.utils.PlusBeans.toIPage;
  29. import static com.xy.utils.PlusBeans.toPageBean;
  30. /**
  31. * <p>
  32. * 商户流量卡费配置扩展 服务实现类
  33. * </p>
  34. *
  35. * @author 谭斌
  36. * @since 2024-04-07
  37. */
  38. @Service
  39. @AllArgsConstructor
  40. @Api(tags = "商户流量卡费配置扩展")
  41. public class MercFeeConfigSimCardServiceImpl extends ServiceImpl<MercFeeConfigSimCardMapper, MercFeeConfigSimCard> implements MercFeeConfigSimCardService {
  42. private MercService mercService;
  43. private DeviceAlgorithmChargingServiceImpl deviceAlgorithmChargingService;
  44. private MercFeeConfigService mercFeeConfigService;
  45. @PostMapping("obj")
  46. @ApiOperation("对象查询")
  47. public R<MercFeeConfigSimCardDto.Vo> obj(@RequestBody MercFeeConfigSimCardDto.Vo vo) {
  48. MercFeeConfigSimCardDto.SelectList selectList = copy(MercFeeConfigSimCardDto.SelectList.class, vo);
  49. List<MercFeeConfigSimCardDto.Vo> list = list(selectList).getData();
  50. if (Emptys.check(list)) {
  51. return R.ok(list.get(0));
  52. }
  53. return R.ok();
  54. }
  55. @PostMapping("list")
  56. @ApiOperation("集合查询")
  57. public R<List<MercFeeConfigSimCardDto.Vo>> list(@RequestBody MercFeeConfigSimCardDto.SelectList selectList) {
  58. LambdaQueryWrapper<MercFeeConfigSimCard> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, MercFeeConfigSimCard.class).build();
  59. List<MercFeeConfigSimCard> list = list(lambdaQueryWrapper);
  60. return R.ok(copy(MercFeeConfigSimCardDto.Vo.class, list));
  61. }
  62. @PostMapping("page")
  63. @ApiOperation("分页查询")
  64. public R<PageBean<MercFeeConfigSimCardDto.Vo>> page(@RequestBody MercFeeConfigSimCardDto.Page page) {
  65. PageBean pageBean = page.getPage();
  66. LambdaQueryWrapper<MercFeeConfigSimCard> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, MercFeeConfigSimCard.class).build();
  67. IPage<MercFeeConfigSimCard> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
  68. return R.ok(toPageBean(MercFeeConfigSimCardDto.Vo.class, iPage));
  69. }
  70. @PostMapping("listByFeeConfig")
  71. @ApiOperation("流量卡费用配置查询")
  72. public R<MercFeeConfigSimCardDto.DeviceSimConfigVO> listByFeeConfig(@RequestBody @Validated MercFeeConfigAlgorithmTypeDto.ListByFeeConfigDTO dto) {
  73. MercFeeConfigSimCardDto.DeviceSimConfigVO data = new MercFeeConfigSimCardDto.DeviceSimConfigVO();
  74. Long mercId = dto.getMercId();
  75. MercDto.Vo merc = R.feignCheckData(mercService.obj(new MercDto.Vo().setId(mercId)));
  76. //查询默认算法信息
  77. //流量卡费-平台默认配置
  78. List<MercFeeConfigSimCardDto.DeviceSimPlatformVO> deviceSimPlatformList = new ArrayList<>();
  79. Integer money = SysDictUtils.getValue(EnumSimConfig.Code.CODE.getCode(), EnumSimConfig.money.getCode(), Integer.class);
  80. String name = SysDictUtils.getValue(EnumSimConfig.Code.CODE.getCode(), EnumSimConfig.name.getCode(), String.class);
  81. Integer expireDay = SysDictUtils.getValue(EnumSimConfig.Code.CODE.getCode(), EnumSimConfig.N_200.getCode(), Integer.class);
  82. deviceSimPlatformList.add(new MercFeeConfigSimCardDto.DeviceSimPlatformVO().setName(name).setExpireDay(expireDay).setMoney(money));
  83. // 设备管理费-商家自定义费用
  84. List<MercFeeConfigSimCardDto.DeviceSimMercVO> deviceSimMercList = new ArrayList<>();
  85. LambdaQueryWrapper<MercFeeConfigSimCard> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(dto, MercFeeConfigSimCard.class)
  86. .eq(MercFeeConfigSimCard::getMercId, merc.getId())
  87. .build();
  88. //默认配置 type 2预充 1赠送天数
  89. List<MercFeeConfigSimCard> list = list(lambdaQueryWrapper);
  90. if (CollUtil.isNotEmpty(list)) {
  91. for (MercFeeConfigSimCard cfg : list) {
  92. MercFeeConfigSimCardDto.DeviceSimMercVO deviceSimMercVO = BeanUtil.copyProperties(cfg, MercFeeConfigSimCardDto.DeviceSimMercVO.class);
  93. deviceSimMercVO.setName(name).setExpireDay(expireDay).setMoney(money);
  94. deviceSimMercList.add(deviceSimMercVO);
  95. }
  96. }
  97. data.setDeviceSimPlatformList(deviceSimPlatformList);
  98. data.setDeviceSimMercList(deviceSimMercList);
  99. return R.ok(data);
  100. }
  101. @PostMapping("paySimCardFee")
  102. @ApiOperation("流量卡费用")
  103. public R<List<MercFeeConfigSimCardDto.DeviceSimPayVO>> paySimCardFee(@RequestBody @Validated MercFeeConfigAlgorithmTypeDto.SimPayQueryDTO dto) {
  104. Long mercId = dto.getMercId();
  105. MercDto.Vo merc = R.feignCheckData(mercService.obj(new MercDto.Vo().setId(mercId)));
  106. String mercCode = merc.getMercCode();
  107. List<String> mercCodes = new ArrayList<>();
  108. deviceAlgorithmChargingService.getMercCodes(mercCode, mercCodes);
  109. //查询默认算法信息
  110. //流量卡费-平台默认配置
  111. Integer money = SysDictUtils.getValue(EnumSimConfig.Code.CODE.getCode(), EnumSimConfig.money.getCode(), Integer.class);
  112. String name = SysDictUtils.getValue(EnumSimConfig.Code.CODE.getCode(), EnumSimConfig.name.getCode(), String.class);
  113. //佣金配置查询
  114. MercFeeConfigDto.FeeConfigByMercVO mercFeeConfig = R.feignCheckData(mercFeeConfigService.getFeeConfigByMerc(new MercFeeConfigDto.FeeConfigByMerc().setMercCode(merc.getMercCode())));
  115. // 设备管理费-商家自定义费用
  116. List<MercFeeConfigSimCardDto.DeviceSimPayVO> deviceSimMercList = new ArrayList<>();
  117. LambdaQueryWrapper<MercFeeConfigSimCard> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(dto, MercFeeConfigSimCard.class)
  118. .in(MercFeeConfigSimCard::getMercCode, mercCodes)
  119. .build();
  120. List<MercFeeConfigSimCard> list = list(lambdaQueryWrapper);
  121. if (CollUtil.isNotEmpty(list)) {
  122. for (MercFeeConfigSimCard cfg : list) {
  123. MercFeeConfigSimCardDto.DeviceSimPayVO deviceSimMercVO = BeanUtil.copyProperties(cfg, MercFeeConfigSimCardDto.DeviceSimPayVO.class);
  124. deviceSimMercVO.setName(name).setMoney(cfg.getExtraMoney() + mercFeeConfig.getFeeSimcard());
  125. deviceSimMercList.add(deviceSimMercVO);
  126. }
  127. } else {
  128. MercFeeConfigSimCardDto.DeviceSimPayVO deviceSimMercVO = new MercFeeConfigSimCardDto.DeviceSimPayVO();
  129. deviceSimMercVO.setName(name).setMoney(money + mercFeeConfig.getFeeSimcard());
  130. deviceSimMercList.add(deviceSimMercVO);
  131. }
  132. return R.ok(deviceSimMercList);
  133. }
  134. @Override
  135. @ApiOperation("商户自定义流量卡费用")
  136. public R<List<MercFeeConfigSimCardDto.DeviceSimPayVO>> listByMerc(MercFeeConfigAlgorithmTypeDto.SimPayQueryDTO dto) {
  137. Long mercId = dto.getMercId();
  138. MercDto.Vo merc = R.feignCheckData(mercService.obj(new MercDto.Vo().setId(mercId)));
  139. String mercCode = merc.getMercCode();
  140. List<String> mercCodes = new ArrayList<>();
  141. deviceAlgorithmChargingService.getMercCodes(mercCode, mercCodes);
  142. //查询默认算法信息
  143. //流量卡费-平台默认配置
  144. Integer money = SysDictUtils.getValue(EnumSimConfig.Code.CODE.getCode(), EnumSimConfig.money.getCode(), Integer.class);
  145. String name = SysDictUtils.getValue(EnumSimConfig.Code.CODE.getCode(), EnumSimConfig.name.getCode(), String.class);
  146. // 设备管理费-商家自定义费用
  147. List<MercFeeConfigSimCardDto.DeviceSimPayVO> deviceSimMercList = new ArrayList<>();
  148. LambdaQueryWrapper<MercFeeConfigSimCard> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(dto, MercFeeConfigSimCard.class)
  149. .in(MercFeeConfigSimCard::getMercCode, mercCodes)
  150. .build();
  151. List<MercFeeConfigSimCard> list = list(lambdaQueryWrapper);
  152. if (CollUtil.isNotEmpty(list)) {
  153. for (MercFeeConfigSimCard cfg : list) {
  154. MercFeeConfigSimCardDto.DeviceSimPayVO deviceSimMercVO = BeanUtil.copyProperties(cfg, MercFeeConfigSimCardDto.DeviceSimPayVO.class);
  155. deviceSimMercVO.setName(name).setMoney(money + cfg.getExtraMoney());
  156. deviceSimMercList.add(deviceSimMercVO);
  157. }
  158. }
  159. return R.ok(deviceSimMercList);
  160. }
  161. @PostMapping("save")
  162. @ApiOperation("添加")
  163. public R save(@RequestBody @Validated MercFeeConfigSimCardDto.Save save) {
  164. Long mercId = save.getMercId();
  165. MercFeeConfigSimCard mc = this.getOne(Wrappers.<MercFeeConfigSimCard>lambdaQuery()
  166. .eq(MercFeeConfigSimCard::getMercId, mercId)
  167. );
  168. if (mc != null) {
  169. throw new CommRuntimeException("该类型配置已存在,请勿重复添加!");
  170. }
  171. MercFeeConfigSimCard saveInfo = copy(MercFeeConfigSimCard.class, save);
  172. save(saveInfo);
  173. return R.ok();
  174. }
  175. @PostMapping("update")
  176. @ApiOperation("修改")
  177. public R update(@RequestBody @Validated MercFeeConfigSimCardDto.Update update) {
  178. MercFeeConfigSimCard updateInfo = copy(MercFeeConfigSimCard.class, update);
  179. updateById(updateInfo);
  180. return R.ok();
  181. }
  182. @PostMapping("delete")
  183. @ApiOperation("删除")
  184. public R delete(@RequestBody @Validated MercFeeConfigSimCardDto.Delete delete) {
  185. removeById(delete.getId());
  186. return R.ok();
  187. }
  188. }