44 files modified
1 files added
| | |
| | | @Getter |
| | | public enum DataDictionaryEnum { |
| | | /** |
| | | * 星级补贴百分比 |
| | | */ |
| | | PERK_AGENT_ACHIEVE_PERCENT("PERK_SET","PERK_AGENT_ACHIEVE_PERCENT"), |
| | | /** |
| | | * 星级补贴总数 |
| | | */ |
| | | PERK_AGENT_ACHIEVE_TOTAL("PERK_SET","PERK_AGENT_ACHIEVE_TOTAL"), |
| | | /** |
| | | * 贡献点设置-购买商品获得 |
| | | */ |
| | | STAR_GET("PERK_SET","STAR_GET"), |
| | |
| | | import cc.mrbird.febs.common.controller.BaseController; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.utils.excl.ExcelSheetPO; |
| | | import cc.mrbird.febs.common.utils.excl.ExcelUtil; |
| | | import cc.mrbird.febs.common.utils.excl.ExcelVersion; |
| | | import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.MallMemberMapper; |
| | | import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper; |
| | | import cc.mrbird.febs.mall.service.IAdminMallMemberService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberService; |
| | | import cc.mrbird.febs.mall.vo.AdminAgentLevelOptionTreeVo; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.validation.Valid; |
| | | import javax.validation.constraints.NotNull; |
| | | import java.io.IOException; |
| | | import java.io.OutputStream; |
| | | import java.net.URLEncoder; |
| | | import java.text.DecimalFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | public class AdminMallMemberController extends BaseController { |
| | | |
| | | private final IAdminMallMemberService mallMemberService; |
| | | private final MallMemberWalletMapper mallMemberWalletMapper; |
| | | private final MallMemberMapper mallMemberMapper; |
| | | private final IApiMallMemberService apiMallMemberService; |
| | | |
| | | /** |
| | |
| | | @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "开启失败") |
| | | public FebsResponse openAccount(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return mallMemberService.openAccount(id); |
| | | } |
| | | |
| | | /** |
| | | * 会员列表---禁止 |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @GetMapping("outsideWithYes/{id}") |
| | | @ControllerEndpoint(operation = "会员列表---禁止", exceptionMessage = "禁止失败") |
| | | public FebsResponse outsideWithYes(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return mallMemberService.outsideWithType(id,1); |
| | | } |
| | | |
| | | /** |
| | | * 会员列表---开启 |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @GetMapping("outsideWithNo/{id}") |
| | | @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "开启失败") |
| | | public FebsResponse outsideWithNo(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return mallMemberService.outsideWithType(id,2); |
| | | } |
| | | |
| | | /** |
| | |
| | | @ControllerEndpoint(operation = "会员提现-同意", exceptionMessage = "操作失败") |
| | | public FebsResponse chargeAgree(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return mallMemberService.chargeAgree(id); |
| | | } |
| | | |
| | | /** |
| | | * 会员提现-同意 |
| | | */ |
| | | @PostMapping("chargeAgreeWithType") |
| | | @ControllerEndpoint(operation = " 会员提现-同意", exceptionMessage = "操作失败") |
| | | public FebsResponse chargeAgreeWithType(@Valid MallMemberWithdraw mallMemberWithdraw) { |
| | | return mallMemberService.chargeAgreeWithType(mallMemberWithdraw); |
| | | } |
| | | |
| | | /** |
| | |
| | | return new FebsResponse().success().data(dataTable); |
| | | } |
| | | |
| | | @GetMapping("exportMember") |
| | | @ControllerEndpoint(operation = "会员列表", exceptionMessage = "导出失败") |
| | | public FebsResponse exportMemberList(MallMember mallMember, HttpServletResponse response) throws IOException { |
| | | |
| | | List<ExcelSheetPO> res = new ArrayList<>(); |
| | | ExcelSheetPO orderSheet = new ExcelSheetPO(); |
| | | String title = "会员列表"; |
| | | orderSheet.setSheetName(title); |
| | | orderSheet.setTitle(title); |
| | | String[] header = {"登录账户", "手机号码", "名称", "余额", "现金积分", "贡献点", "补贴额度", "凭证", "凭证现金"}; |
| | | orderSheet.setHeaders(header); |
| | | |
| | | QueryRequest request = new QueryRequest(); |
| | | request.setPageNum(1); |
| | | request.setPageSize(9999); |
| | | List<MallMember> dataList = mallMemberMapper.selectList(null); |
| | | List<List<Object>> list = new ArrayList<>(); |
| | | if (dataList.size() > 0) { |
| | | for (MallMember item : dataList) { |
| | | List<Object> temp = new ArrayList<>(); |
| | | temp.add(item.getAccountLogin()); |
| | | temp.add(item.getPhone()); |
| | | temp.add(item.getName()); |
| | | |
| | | Long memberId = item.getId(); |
| | | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); |
| | | if(ObjectUtil.isNotNull(mallMemberWallet)){ |
| | | temp.add(mallMemberWallet.getBalance()); |
| | | temp.add(mallMemberWallet.getPrizeScore()); |
| | | temp.add(mallMemberWallet.getStar()); |
| | | temp.add(mallMemberWallet.getTotalScore()); |
| | | temp.add(mallMemberWallet.getVoucherCnt()); |
| | | temp.add(mallMemberWallet.getVoucherAmount()); |
| | | } |
| | | list.add(temp); |
| | | } |
| | | } |
| | | orderSheet.setDataList(list); |
| | | res.add(orderSheet); |
| | | response = ResponseHeadUtil.setExcelHead(response); |
| | | response.setHeader("Content-Disposition", |
| | | "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), "yyyyMMDDHHmmss") + ".xlsx".trim(), "UTF-8")); |
| | | OutputStream os = response.getOutputStream(); |
| | | ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); |
| | | return null; |
| | | } |
| | | |
| | | } |
| | |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.MallExpressInfoMapper; |
| | | import cc.mrbird.febs.mall.mapper.MallMemberMapper; |
| | | import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; |
| | | import cc.mrbird.febs.mall.mapper.MallOrderRefundOperationMapper; |
| | | import cc.mrbird.febs.mall.service.IAdminMallGoodsService; |
| | | import cc.mrbird.febs.mall.service.IAdminMallOrderService; |
| | |
| | | private final IAdminMallOrderService adminMallOrderService; |
| | | private final MallExpressInfoMapper mallExpressInfoMapper; |
| | | private final MallMemberMapper mallMemberMapper; |
| | | private final MallOrderInfoMapper mallOrderInfoMapper; |
| | | |
| | | /** |
| | | * 订单列表 |
| | |
| | | return null; |
| | | } |
| | | |
| | | @GetMapping("exportOrderListAll") |
| | | @ControllerEndpoint(operation = "订单列表", exceptionMessage = "导出失败") |
| | | public FebsResponse exportOrderListAll(MallOrderInfo mallOrderInfo, HttpServletResponse response) throws IOException { |
| | | |
| | | List<ExcelSheetPO> res = new ArrayList<>(); |
| | | ExcelSheetPO orderSheet = new ExcelSheetPO(); |
| | | String title = "订单列表"; |
| | | orderSheet.setSheetName(title); |
| | | orderSheet.setTitle(title); |
| | | String[] header = {"订单编号", "登录账户", "购买人", "手机号码", "订单金额", "状态"}; |
| | | orderSheet.setHeaders(header); |
| | | |
| | | QueryRequest request = new QueryRequest(); |
| | | request.setPageNum(1); |
| | | request.setPageSize(9999); |
| | | List<MallOrderInfo> dataList = mallOrderInfoMapper.selectList(null); |
| | | List<List<Object>> list = new ArrayList<>(); |
| | | if (dataList.size() > 0) { |
| | | for (MallOrderInfo item : dataList) { |
| | | List<Object> temp = new ArrayList<>(); |
| | | temp.add(item.getOrderNo()); |
| | | temp.add(mallMemberMapper.selectById(item.getMemberId()).getAccountLogin()); |
| | | temp.add(mallMemberMapper.selectById(item.getMemberId()).getName()); |
| | | temp.add(mallMemberMapper.selectById(item.getMemberId()).getPhone()); |
| | | temp.add(item.getAmount()); |
| | | switch (item.getStatus()) { |
| | | case 1: |
| | | temp.add("待支付"); |
| | | break; |
| | | case 2: |
| | | temp.add("待发货"); |
| | | break; |
| | | case 3: |
| | | temp.add("待收货"); |
| | | break; |
| | | case 4: |
| | | temp.add("已完成"); |
| | | break; |
| | | case 5: |
| | | temp.add("退款中"); |
| | | break; |
| | | case 6: |
| | | temp.add("已退款"); |
| | | break; |
| | | case 7: |
| | | temp.add("已取消"); |
| | | break; |
| | | default: |
| | | } |
| | | list.add(temp); |
| | | } |
| | | } |
| | | orderSheet.setDataList(list); |
| | | res.add(orderSheet); |
| | | response = ResponseHeadUtil.setExcelHead(response); |
| | | response.setHeader("Content-Disposition", |
| | | "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), "yyyyMMDDHHmmss") + ".xlsx".trim(), "UTF-8")); |
| | | OutputStream os = response.getOutputStream(); |
| | | ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); |
| | | return null; |
| | | } |
| | | |
| | | @PostMapping(value = "/importDeliver") |
| | | @ControllerEndpoint(operation = "导入发货", exceptionMessage = "导入失败") |
| | | public FebsResponse importDeliver(@RequestBody MultipartFile file) throws IOException { |
| | |
| | | DataDictionaryEnum.AGENT_PERK.getType(), |
| | | DataDictionaryEnum.AGENT_PERK.getCode(), |
| | | hlmBasicPerkDto.getAgentPerk()); |
| | | commonService.updateDataDic( |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode(), |
| | | hlmBasicPerkDto.getPerkAgentAchieveTotal()); |
| | | commonService.updateDataDic( |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(), |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode(), |
| | | hlmBasicPerkDto.getPerkAgentAchievePercent()); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 提现列表-付款方式 |
| | | * @param id |
| | | * @param model |
| | | * @return |
| | | */ |
| | | @GetMapping("chargeFlowListType/{id}") |
| | | @RequiresPermissions("chargeFlowListType:update") |
| | | public String chargeFlowListType(@PathVariable long id, Model model) { |
| | | AdminMallMemberPaymentVo data = new AdminMallMemberPaymentVo(); |
| | | data.setId(id); |
| | | model.addAttribute("chargeUpdateInfo", data); |
| | | return FebsUtil.view("modules/mallMember/chargeFlowListType"); |
| | | } |
| | | |
| | | /** |
| | | * 代理列表 |
| | | * @return |
| | | */ |
| | |
| | | String agentPerk = ObjectUtil.isEmpty(agentPerkDic.getValue()) ? "0" : agentPerkDic.getValue(); |
| | | hlmBasicPerkDto.setAgentPerk(agentPerk); |
| | | } |
| | | DataDictionaryCustom perkAgentAchieveTotalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode()); |
| | | if (perkAgentAchieveTotalDic != null) { |
| | | String perkAgentAchieveTotal = ObjectUtil.isEmpty(perkAgentAchieveTotalDic.getValue()) ? "0" : perkAgentAchieveTotalDic.getValue(); |
| | | hlmBasicPerkDto.setPerkAgentAchieveTotal(perkAgentAchieveTotal); |
| | | } |
| | | DataDictionaryCustom perkAgentAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(), |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode()); |
| | | if (perkAgentAchievePercentDic != null) { |
| | | String perkAgentAchievePercent = ObjectUtil.isEmpty(perkAgentAchievePercentDic.getValue()) ? "0" : perkAgentAchievePercentDic.getValue(); |
| | | hlmBasicPerkDto.setPerkAgentAchievePercent(perkAgentAchievePercent); |
| | | } |
| | | model.addAttribute("hlmBasicPerk", hlmBasicPerkDto); |
| | | return FebsUtil.view("modules/system/hlmBasicPerk"); |
| | | } |
| | |
| | | |
| | | private String name; |
| | | |
| | | private String accountLogin; |
| | | |
| | | private String account; |
| | | |
| | | private String level; |
| | |
| | | * 基础补贴-代理商补贴 |
| | | */ |
| | | private String agentPerk; |
| | | /** |
| | | * 星级补贴总数 |
| | | */ |
| | | private String perkAgentAchieveTotal; |
| | | /** |
| | | * 星级补贴百分比 |
| | | */ |
| | | private String perkAgentAchievePercent; |
| | | |
| | | } |
| | |
| | | |
| | | private String name; |
| | | |
| | | private String accountLogin; |
| | | |
| | | private Integer orderType; |
| | | |
| | | private String startTime; |
| | |
| | | |
| | | private String name; |
| | | |
| | | private String accountLogin; |
| | | |
| | | private String phone; |
| | | |
| | | private Integer status; |
| | |
| | | @ApiModel(value = "MoneyFlowListDto", description = "接收参数类") |
| | | public class MoneyFlowListDto { |
| | | |
| | | private String accountLogin; |
| | | |
| | | private String name; |
| | | |
| | | private String phone; |
| | |
| | | public class RegisterDto { |
| | | |
| | | @NotBlank(message = "账号不能为空") |
| | | @ApiModelProperty(value = "账号", example = "hjsj") |
| | | private String accountLogin; |
| | | |
| | | @NotBlank(message = "手机号不能为空") |
| | | @ApiModelProperty(value = "手机号", example = "15773001234") |
| | | private String account; |
| | | |
| | |
| | | public class MallMember extends BaseEntity { |
| | | |
| | | /** |
| | | * 登录账号 |
| | | */ |
| | | private String accountLogin; |
| | | /** |
| | | * 姓名 |
| | | */ |
| | | private String name; |
| | |
| | | |
| | | //内转标识 1:开启 2:关闭 |
| | | private Integer insideWith; |
| | | |
| | | //提现开关 1:开启 2:关闭 |
| | | private Integer outsideWith; |
| | | } |
| | |
| | | package cc.mrbird.febs.mall.entity; |
| | | |
| | | import cc.mrbird.febs.common.entity.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | |
| | | private String withdrawNo; |
| | | |
| | | private String remark; |
| | | /** |
| | | * 绿色凭证 |
| | | */ |
| | | @TableField(exist = false) |
| | | private String agreeType; |
| | | } |
| | |
| | | private String name; |
| | | |
| | | @TableField(exist = false) |
| | | private String accountLogin; |
| | | |
| | | @TableField(exist = false) |
| | | private String phone; |
| | | } |
| | |
| | | List<MallMember> selectByRole(@Param("type") int type, @Param("state")int state); |
| | | |
| | | List<MallMember> selectByLevel( @Param("level")String type); |
| | | |
| | | MallMember selectByAccountLogin(@Param("accountLogin")String accountLogin); |
| | | |
| | | MallMember selectInfoByAccountLoginAndPwd(@Param("accountLogin")String account, @Param("password")String md5Pwd); |
| | | } |
| | |
| | | import cc.mrbird.febs.mall.entity.MallMoneyFlow; |
| | | import cc.mrbird.febs.mall.mapper.MallMemberMapper; |
| | | import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper; |
| | | import cc.mrbird.febs.mall.service.IAgentService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.mall.service.IMemberProfitService; |
| | |
| | | |
| | | @Autowired |
| | | private IMemberProfitService memberProfitService; |
| | | @Autowired |
| | | private IAgentService agentService; |
| | | |
| | | /** |
| | | * 代理分红 |
| | |
| | | memberProfitService.achieveReleaseJob(); |
| | | } |
| | | |
| | | /** |
| | | * 代理星级补贴 |
| | | */ |
| | | @Scheduled(cron = "0 0 0 * * ?") |
| | | public void perkAgentAchieveJob() { |
| | | agentService.perkAgent(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import com.alipay.api.domain.AlipayOfflineTrade; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | |
| | | FebsResponse searchInfo(Long id); |
| | | |
| | | FebsResponse accountInfo(Long id); |
| | | |
| | | FebsResponse outsideWithType(Long id, int i); |
| | | |
| | | FebsResponse chargeAgreeWithType(MallMemberWithdraw mallMemberWithdraw); |
| | | } |
| | |
| | | * 按购买业绩(不按权益积分)每天静态释0.6%~1.2% |
| | | */ |
| | | void achieveReleasePercent(); |
| | | |
| | | void perkAgent(); |
| | | } |
| | |
| | | return new FebsResponse().success().message("可以转账"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse outsideWithType(Long id, int i) { |
| | | MallMember mallMember = mallMemberMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallMember)) { |
| | | return new FebsResponse().fail().message("会员信息不存在"); |
| | | } |
| | | mallMember.setOutsideWith(i); |
| | | mallMemberMapper.updateById(mallMember); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse chargeAgreeWithType(MallMemberWithdraw mallMemberWithdrawInfo) { |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(mallMemberWithdrawInfo.getId()); |
| | | |
| | | if(ObjectUtil.isEmpty(mallMemberWithdraw)){ |
| | | return new FebsResponse().fail().message("系统繁忙,请刷新后重试"); |
| | | } |
| | | if(1 != mallMemberWithdraw.getStatus()){ |
| | | return new FebsResponse().fail().message("当前状态不是提现中"); |
| | | } |
| | | |
| | | Long wtihdrawTypeId = mallMemberWithdraw.getWtihdrawTypeId(); |
| | | MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId); |
| | | if(ObjectUtil.isEmpty(mallMemberBank)){ |
| | | return new FebsResponse().fail().message("提现银行卡已删除"); |
| | | } |
| | | String agreeType = mallMemberWithdrawInfo.getAgreeType(); |
| | | if("1".equals(agreeType)){ |
| | | mallMemberWithdraw.setStatus(2); |
| | | mallMemberWithdrawMapper.updateById(mallMemberWithdraw); |
| | | |
| | | QueryWrapper<MallMoneyFlow> flowQueryWrapper = new QueryWrapper<>(); |
| | | flowQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo()); |
| | | flowQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue()); |
| | | MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(flowQueryWrapper); |
| | | if(ObjectUtil.isNotEmpty(mallMoneyFlow)){ |
| | | mallMoneyFlow.setStatus(2); |
| | | mallMoneyFlowMapper.updateById(mallMoneyFlow); |
| | | } |
| | | return new FebsResponse().success(); |
| | | }else{ |
| | | String bankName = mallMemberBank.getBankName(); |
| | | NBYHResponse nbyhResponse = new NBYHResponse(); |
| | | if("宁波银行".equals(bankName)){ |
| | | nbyhResponse = nbyhService.tradeSinge(mallMemberWithdraw.getId()); |
| | | }else{ |
| | | nbyhResponse = nbyhService.tradeSingeOuterTransfer(mallMemberWithdraw.getId()); |
| | | } |
| | | if(nbyhResponse.isFlag()){ |
| | | mallMemberWithdraw.setStatus(2); |
| | | mallMemberWithdrawMapper.updateById(mallMemberWithdraw); |
| | | |
| | | QueryWrapper<MallMoneyFlow> flowQueryWrapper = new QueryWrapper<>(); |
| | | flowQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo()); |
| | | flowQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue()); |
| | | MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(flowQueryWrapper); |
| | | if(ObjectUtil.isNotEmpty(mallMoneyFlow)){ |
| | | mallMoneyFlow.setStatus(2); |
| | | mallMoneyFlowMapper.updateById(mallMoneyFlow); |
| | | } |
| | | return new FebsResponse().success().message(nbyhResponse.getMsg()); |
| | | }else{ |
| | | return new FebsResponse().fail().message(nbyhResponse.getMsg()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | private String refererIds(String parentId) { |
| | | boolean flag = false; |
| | | if (StrUtil.isBlank(parentId)) { |
| | |
| | | private final MallMoneyFlowMapper mallMoneyFlowMapper; |
| | | private final MallMqRecordMapper mallMqRecordMapper; |
| | | |
| | | private final ICommonService commonService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void autoUpAgentLevel(Long memberId) { |
| | |
| | | * 从最顶级级别的合伙人开始补贴 |
| | | * 补贴完,把已经补贴的合伙人加入下一个级别 |
| | | */ |
| | | List<MallMember> sevenLevelRecord = getStarRecord(null, MemberLevelEnum.SEVEN_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue()); |
| | | List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord, MemberLevelEnum.SIX_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue()); |
| | | List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord, MemberLevelEnum.FIFTH_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue()); |
| | | List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord, MemberLevelEnum.FOUR_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue()); |
| | | List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord, MemberLevelEnum.THIRD_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue()); |
| | | List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); |
| | | |
| | | DataDictionaryCustom perkAgentAchieveTotalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode()); |
| | | BigDecimal perkAgentAchieveTotal = new BigDecimal(perkAgentAchieveTotalDic.getValue()); |
| | | //星级奖励百分比等于每个级别的累计之和 |
| | | List<DataDictionaryCustom> starPerkDics = dataDictionaryCustomMapper.selectDicByType( |
| | | "AGENT_LEVEL_REQUIRE"); |
| | | BigDecimal totalProfitProp = BigDecimal.ZERO; |
| | | if(CollUtil.isNotEmpty(starPerkDics)){ |
| | | for(DataDictionaryCustom starPerkDic : starPerkDics){ |
| | | String starPerkStr = starPerkDic.getValue(); |
| | | AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class); |
| | | BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100)); |
| | | String code = starPerkDic.getCode(); |
| | | //存在当前级别的会员,则加上这个比例的补贴 |
| | | List<MallMember> mallMembers = memberMapper.selectByLevel(code); |
| | | if(CollUtil.isNotEmpty(mallMembers)){ |
| | | totalProfitProp = totalProfitProp.add(profitProp); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(totalProfitProp.compareTo(BigDecimal.ZERO) > 0){ |
| | | BigDecimal perkTotal = amount.multiply(totalProfitProp).setScale(2,BigDecimal.ROUND_DOWN); |
| | | perkAgentAchieveTotal = perkAgentAchieveTotal.add(perkTotal); |
| | | perkAgentAchieveTotalDic.setValue(perkAgentAchieveTotal.toString()); |
| | | dataDictionaryCustomMapper.updateById(perkAgentAchieveTotalDic); |
| | | } |
| | | // List<MallMember> sevenLevelRecord = getStarRecord(null, MemberLevelEnum.SEVEN_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue()); |
| | | // List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord, MemberLevelEnum.SIX_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue()); |
| | | // List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord, MemberLevelEnum.FIFTH_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue()); |
| | | // List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord, MemberLevelEnum.FOUR_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue()); |
| | | // List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord, MemberLevelEnum.THIRD_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue()); |
| | | // List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); |
| | | |
| | | /** |
| | | * 团队补贴 |
| | |
| | | * @return |
| | | */ |
| | | public List<MallMember> getStarRecord(List<MallMember> mallMembersOlds,String LevelParam,BigDecimal amount,String orderNo,Long memberId,int starPerkType){ |
| | | |
| | | //实际补贴总金额 |
| | | BigDecimal totalPerkAgentAmount = BigDecimal.ZERO; |
| | | //根据用户的level获取用户 |
| | | List<MallMember> mallMemberStars = memberMapper.selectMemberWithLevel(LevelParam); |
| | | if(CollUtil.isNotEmpty(mallMembersOlds)){ |
| | |
| | | if(starSum <= 0){ |
| | | return mallMemberStars; |
| | | } |
| | | |
| | | BigDecimal totalProfitProp = BigDecimal.ZERO; |
| | | List<DataDictionaryCustom> agentLevelRequireDics = dataDictionaryCustomMapper.selectDicByType("AGENT_LEVEL_REQUIRE"); |
| | | if(CollUtil.isNotEmpty(agentLevelRequireDics)){ |
| | | for(DataDictionaryCustom dic : agentLevelRequireDics){ |
| | | String starPerkStr = dic.getValue(); |
| | | AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class); |
| | | //当前星级所占份数 |
| | | BigDecimal profitProp = agentInfo.getProfitProp().abs(); |
| | | List<MallMember> mallMembers = memberMapper.selectByLevel(dic.getCode()); |
| | | if(CollUtil.isNotEmpty(mallMembers)){ |
| | | totalProfitProp = profitProp.add(totalProfitProp); |
| | | } |
| | | } |
| | | } |
| | | //星级补贴比例 |
| | | DataDictionaryCustom starPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | "AGENT_LEVEL_REQUIRE", |
| | | LevelParam); |
| | | String starPerkStr = starPerkDic.getValue(); |
| | | AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class); |
| | | BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100)); |
| | | // BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100)); |
| | | //当前星级所占份数 |
| | | BigDecimal profitProp = agentInfo.getProfitProp().abs(); |
| | | //每一份多少钱 |
| | | amount = amount.divide(totalProfitProp,4,BigDecimal.ROUND_DOWN); |
| | | //当前等级的星级补贴 |
| | | BigDecimal starPerkAmountSum = amount.multiply(profitProp); |
| | | //当前等级的每一个贡献点的补贴金额 |
| | |
| | | mallMoneyFlows.add(mallMoneyFlow); |
| | | |
| | | reduceStar(mallMemberWallet.getMemberId(),starPerkAmount); |
| | | totalPerkAgentAmount = totalPerkAgentAmount.add(starPerkAmount); |
| | | } |
| | | count = count + 1; |
| | | if (count % 1000 == 0 || count == mallMemberWallets.size()) { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | log.info("============实际补贴金额:{}",totalPerkAgentAmount.setScale(2,BigDecimal.ROUND_DOWN)); |
| | | DataDictionaryCustom totalPerkAgentAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode() |
| | | ); |
| | | totalPerkAgentAmountDic.setValue( |
| | | new BigDecimal(totalPerkAgentAmountDic.getValue()).subtract(totalPerkAgentAmount).setScale(2,BigDecimal.ROUND_DOWN).toString() |
| | | ); |
| | | dataDictionaryCustomMapper.updateById(totalPerkAgentAmountDic); |
| | | return mallMemberStars; |
| | | } |
| | | |
| | |
| | | ); |
| | | |
| | | List<MallMember> mallMembers = memberMapper.selectByLevel(MemberLevelEnum.SECOND_LEVEL.getType()); |
| | | BigDecimal jobAchieveReleasePercent = new BigDecimal(jobAchieveReleasePercentDic.getValue()) |
| | | .multiply(new BigDecimal(0.001)); |
| | | BigDecimal totalAchieve = BigDecimal.ZERO; |
| | | Integer totalStar = 0; |
| | | if(CollUtil.isNotEmpty(mallMembers)){ |
| | | for(MallMember mallMember : mallMembers){ |
| | | //总业绩 |
| | | BigDecimal sumAchieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId()); |
| | | BigDecimal jobAchieveReleasePercent = new BigDecimal(jobAchieveReleasePercentDic.getValue()) |
| | | .multiply(new BigDecimal(0.001)); |
| | | //每个人的补贴额度 |
| | | BigDecimal multiply = sumAchieve.multiply(jobAchieveReleasePercent); |
| | | BigDecimal achieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId()); |
| | | totalAchieve = totalAchieve.add(achieve); |
| | | |
| | | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); |
| | | Integer star = mallMemberWallet.getStar(); |
| | | totalStar = totalStar + star; |
| | | } |
| | | } |
| | | if(BigDecimal.ZERO.compareTo(totalAchieve) >= 0){ |
| | | return; |
| | | } |
| | | //总释放=总业绩*一星每日业绩每日释放业绩到余额的千分比 |
| | | totalAchieve = totalAchieve.multiply(jobAchieveReleasePercent); |
| | | |
| | | if(totalStar <= 0){ |
| | | return; |
| | | } |
| | | //一个贡献点的价值 |
| | | BigDecimal divide = totalAchieve.divide(new BigDecimal(totalStar), 2, BigDecimal.ROUND_DOWN); |
| | | |
| | | if(CollUtil.isNotEmpty(mallMembers)){ |
| | | for(MallMember mallMember : mallMembers){ |
| | | |
| | | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); |
| | | Integer star = mallMemberWallet.getStar(); |
| | | //每个人贡献值数量*一个贡献点的价值=获取的收益 |
| | | BigDecimal multiply = divide.multiply(new BigDecimal(star)).setScale(2,BigDecimal.ROUND_DOWN); |
| | | |
| | | BigDecimal totalScore = mallMemberWallet.getTotalScore(); |
| | | if(BigDecimal.ZERO.compareTo(multiply) < 0){ |
| | | if(BigDecimal.ZERO.compareTo(totalScore) < 0){ |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | // if(CollUtil.isNotEmpty(mallMembers)){ |
| | | // for(MallMember mallMember : mallMembers){ |
| | | // //总业绩 |
| | | // BigDecimal sumAchieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId()); |
| | | // //每个人的补贴额度 |
| | | // BigDecimal multiply = sumAchieve.multiply(jobAchieveReleasePercent); |
| | | // MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); |
| | | // BigDecimal totalScore = mallMemberWallet.getTotalScore(); |
| | | // if(BigDecimal.ZERO.compareTo(multiply) < 0){ |
| | | // if(BigDecimal.ZERO.compareTo(totalScore) < 0){ |
| | | // if(totalScore.compareTo(multiply) < 0){ |
| | | // multiply = totalScore; |
| | | // } |
| | | // //减少补贴额度 |
| | | // mallMemberWalletMapper.reduceTotalScoreById(multiply, mallMemberWallet.getId()); |
| | | // |
| | | // reduceStar(mallMember.getId(),multiply); |
| | | // |
| | | // mallMemberWalletMapper.addBalanceById(multiply, mallMemberWallet.getId()); |
| | | // |
| | | // mallMoneyFlowService.addMoneyFlow( |
| | | // mallMember.getId(), |
| | | // multiply, |
| | | // MoneyFlowTypeEnum.STATIC_BONUS.getValue(), |
| | | // MallUtils.getOrderNum(), |
| | | // FlowTypeEnum.BALANCE.getValue()); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | @Override |
| | | public void perkAgent() { |
| | | DataDictionaryCustom totalAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode() |
| | | ); |
| | | if(ObjectUtil.isEmpty(totalAmountDic)){ |
| | | return; |
| | | } |
| | | //星级补贴总数 |
| | | BigDecimal totalAmount = new BigDecimal(totalAmountDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN); |
| | | if(BigDecimal.ZERO.compareTo(totalAmount) >= 0){ |
| | | return; |
| | | } |
| | | |
| | | DataDictionaryCustom perkAgentPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(), |
| | | DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode() |
| | | ); |
| | | if(ObjectUtil.isEmpty(perkAgentPercentDic)){ |
| | | return; |
| | | } |
| | | //星级补贴百分比 |
| | | BigDecimal perkAgentPercent = new BigDecimal(perkAgentPercentDic.getValue()).abs().divide(new BigDecimal(100)); |
| | | BigDecimal amount = totalAmount.multiply(perkAgentPercent); |
| | | if(BigDecimal.ZERO.compareTo(amount) >= 0){ |
| | | return; |
| | | } |
| | | // //星级补贴总数 |
| | | // totalAmountDic.setValue(totalAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN).toString()); |
| | | // dataDictionaryCustomMapper.updateById(totalAmountDic); |
| | | |
| | | String orderNo = MallUtils.getOrderNum("SPA"); |
| | | /** |
| | | * 星级奖励 |
| | | * 从最顶级级别的合伙人开始补贴 |
| | | * 补贴完,把已经补贴的合伙人加入下一个级别 |
| | | */ |
| | | List<MallMember> sevenLevelRecord = getStarRecord(null, MemberLevelEnum.SEVEN_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue()); |
| | | List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord, MemberLevelEnum.SIX_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue()); |
| | | List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord, MemberLevelEnum.FIFTH_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue()); |
| | | List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord, MemberLevelEnum.FOUR_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue()); |
| | | List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord, MemberLevelEnum.THIRD_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue()); |
| | | List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); |
| | | } |
| | | |
| | | |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public FebsResponse register(RegisterDto registerDto) { |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount()); |
| | | // MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount()); |
| | | // if (mallMember != null) { |
| | | // throw new FebsException("该账号已被占用"); |
| | | // } |
| | | String accountLogin = registerDto.getAccountLogin(); |
| | | MallMember mallMember = this.baseMapper.selectByAccountLogin(accountLogin); |
| | | if (mallMember != null) { |
| | | throw new FebsException("该账号已被占用"); |
| | | } |
| | | |
| | | List<MallMember> mallMembers = this.baseMapper.selectMemberByName(registerDto.getName()); |
| | | if (CollUtil.isNotEmpty(mallMembers)) { |
| | | MallRegisterAppeal registerAppeal = mallRegisterAppealMapper.selectByPhoneAndName(registerDto.getName(), registerDto.getAccount()); |
| | | if (registerAppeal == null || registerAppeal.getStatus() != 1) { |
| | | return new FebsResponse().code(HttpStatus.ACCEPTED).message("用户名已存在"); |
| | | } |
| | | } |
| | | // List<MallMember> mallMembers = this.baseMapper.selectMemberByName(registerDto.getName()); |
| | | // if (CollUtil.isNotEmpty(mallMembers)) { |
| | | // MallRegisterAppeal registerAppeal = mallRegisterAppealMapper.selectByPhoneAndName(registerDto.getName(), registerDto.getAccount()); |
| | | // if (registerAppeal == null || registerAppeal.getStatus() != 1) { |
| | | // return new FebsResponse().code(HttpStatus.ACCEPTED).message("用户名已存在"); |
| | | // } |
| | | // } |
| | | |
| | | String account = registerDto.getAccount(); |
| | | if (!"admin".equals(registerDto.getRegistType())) { |
| | |
| | | } |
| | | |
| | | mallMember = new MallMember(); |
| | | mallMember.setAccountLogin(accountLogin); |
| | | mallMember.setPassword(SecureUtil.md5(registerDto.getPassword())); |
| | | |
| | | // 判断账号类型 |
| | |
| | | public FebsResponse toLogin(LoginDto loginDto) { |
| | | String md5Pwd = SecureUtil.md5(loginDto.getPassword()); |
| | | |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd); |
| | | // MallMember mallMember = this.baseMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd); |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccountLoginAndPwd(loginDto.getAccount(), md5Pwd); |
| | | if (mallMember == null) { |
| | | throw new FebsException("用户不存在或账号密码错误"); |
| | | } |
| | |
| | | public void withdrawal(WithdrawalDto withdrawalDto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMember mallMember = mallMemberService.getById(memberId); |
| | | |
| | | Integer outsideWith = mallMember.getOutsideWith() == null ? 2 :mallMember.getOutsideWith(); |
| | | if (1 != outsideWith) { |
| | | throw new FebsException("功能升级中"); |
| | | } |
| | | |
| | | if (StrUtil.isBlank(mallMember.getTradePassword())) { |
| | | throw new FebsException("未设置支付密码"); |
| | | } |
| | |
| | | |
| | | private String name; |
| | | |
| | | private String accountLogin; |
| | | |
| | | private String phone; |
| | | |
| | | private String level; |
| | |
| | | |
| | | private String name; |
| | | |
| | | private String accountLogin; |
| | | |
| | | private String phone; |
| | | |
| | | private String bindPhone; |
| | |
| | | |
| | | private String name; |
| | | |
| | | private String accountLogin; |
| | | |
| | | private String phone; |
| | | |
| | | private String address; |
| | |
| | | |
| | | private String name; |
| | | |
| | | private String accountLogin; |
| | | |
| | | private String phone; |
| | | |
| | | private String bindPhone; |
| | |
| | | |
| | | private String name; |
| | | |
| | | private String accountLogin; |
| | | |
| | | private String phone; |
| | | |
| | | private Integer status; |
| | |
| | | @ApiModelProperty(value = "id") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "登录账号") |
| | | private String accountLogin; |
| | | |
| | | @ApiModelProperty(value = "昵称") |
| | | private String name; |
| | | |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.*; |
| | | import java.math.BigDecimal; |
| | | import java.net.*; |
| | |
| | | * 接收报文url |
| | | */ |
| | | // private static final String URL = "http://127.0.0.1:9080/directlink/httpAccess"; |
| | | // private static final String URL = "http://220.168.79.89:9080/directlink/httpAccess"; |
| | | private static final String URL = "http://747f9407.r3.cpolar.top/directlink/httpAccess"; |
| | | // private static final String URL = "http://1d6d-220-168-79-89.ngrok.io/directlink/httpAccess"; |
| | | private static final String URL = "http://n5z7ej.natappfree.cc/directlink/httpAccess"; |
| | | /** |
| | | * 签名ip |
| | | */ |
| | | // private static final String VERIFY_IP = "127.0.0.1"; |
| | | private static final String VERIFY_IP = "3b425db8.r10.cpolar.top"; |
| | | // private static final String VERIFY_IP = "747f9407.r3.cpolar.top"; |
| | | private static final String VERIFY_IP = "server.natappfree.cc"; |
| | | /** |
| | | * 付款账号 |
| | | */ |
| | |
| | | /** |
| | | * 签名端口 |
| | | */ |
| | | private static final int VERIFY_PORT = 8010; |
| | | private static final int VERIFY_PORT = 41933; |
| | | // private static final int VERIFY_PORT = 8010; |
| | | |
| | | /** |
| | | * cookies |
| | |
| | | try { |
| | | |
| | | InetAddress addr = InetAddress.getByName(VERIFY_IP); |
| | | String hostName = addr.getHostName(); |
| | | // Socket socket = new Socket(hostName, VERIFY_PORT); |
| | | String hostAddress = addr.getHostAddress(); |
| | | SocketAddress address = new InetSocketAddress(VERIFY_IP, 8010); |
| | | Socket socket = new Socket(addr, VERIFY_PORT); |
| | | |
| | | Proxy proxy = new Proxy(Proxy.Type.HTTP, address); |
| | | Socket socket = new Socket(proxy); |
| | | int port = socket.getPort(); |
| | | System.out.println("发送登录请求:"+addr); |
| | | System.out.println("发送登录请求:"+address); |
| | | System.out.println("发送登录请求:"+hostName); |
| | | System.out.println("发送登录请求:"+port); |
| | | System.out.println("发送登录请求:"+socket.getKeepAlive()); |
| | | // System.out.println("发送登录请求:"); |
| | | // test.executeServerHttpService("srv001_signOn"); |
| | | // System.out.println("\n发送转账结果查询请求:"); |
| | | // executeServerHttpService("srv008_transferResultInfoQuery","转账结果查询","2023032910585227466"); |
| | | // System.out.println("\n发送跨行转账请求:"); |
| | | // test.executeServerHttpService("srv007_singleOuterTransfer","跨行转账",null); |
| | | // System.out.println("\n发送行内转账请求:"); |
| | |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | @Resource |
| | | private MallMemberWithdrawMapper mallMemberWithdrawMapper; |
| | | @Autowired |
| | | @Resource |
| | | private MallMemberWithdrawMsgMapper mallMemberWithdrawMsgMapper; |
| | | @Autowired |
| | | @Resource |
| | | private MallMemberBankMapper mallMemberBankMapper; |
| | | |
| | | @Override |
| | |
| | | try { |
| | | addr = InetAddress.getByName(VERIFY_IP); |
| | | socket = new Socket(addr, VERIFY_PORT); |
| | | // InetAddress localHost = addr.getLocalHost(); |
| | | // socket = new Socket(localHost, VERIFY_PORT); |
| | | // 发送 |
| | | BufferedWriter wr = new BufferedWriter(new OutputStreamWriter( |
| | | socket.getOutputStream(),"GBK")); |
| | |
| | | @Autowired |
| | | private IMemberProfitService memberProfitService; |
| | | |
| | | // @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT) |
| | | // public void agentReturn(Message message, Channel channel) { |
| | | // log.info("消费者:{}", new String(message.getBody())); |
| | | // } |
| | | // |
| | | // @RabbitListener(queues = "hlm_queue_order_delay") |
| | | // public void orderCancelDelay(String id) { |
| | | // try { |
| | | // orderInfoService.autoCancelOrder(Long.parseLong(id)); |
| | | // } catch (Exception e) { |
| | | // log.error("订单超时支付异常", e); |
| | | // } |
| | | // } |
| | | // |
| | | // @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP) |
| | | // public void agentAutoLevelUp(String id) { |
| | | // log.info("收到合伙人自动升级消息:{}", id); |
| | | // try { |
| | | // agentService.autoUpAgentLevel(Long.parseLong(id)); |
| | | // } catch (Exception e) { |
| | | // log.error("合伙人自动升级异常", e); |
| | | // } |
| | | // } |
| | | // |
| | | // @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY) |
| | | // public void agentReturnMoney(String orderId) { |
| | | // log.info("收到返利消息:{}", orderId); |
| | | // try { |
| | | // agentService.returnMoneyToAgent(Long.parseLong(orderId)); |
| | | // } catch (Exception e) { |
| | | // log.error("返利异常", e); |
| | | // } |
| | | // } |
| | | // |
| | | // @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY) |
| | | // public void orderReturnMoney(String orderId) { |
| | | // log.info("收到订单返利消息:{}", orderId); |
| | | // try { |
| | | // memberProfitService.dynamicProfit(Long.parseLong(orderId)); |
| | | // } catch (Exception e) { |
| | | // log.error("订单返利异常:", e); |
| | | // } |
| | | // } |
| | | // |
| | | // @RabbitListener(queues = QueueConstants.PERK_MONEY) |
| | | // public void perkMoneyConsumer(String id) { |
| | | // log.info("收到补贴消息:{}", id); |
| | | // try { |
| | | // agentService.perkMoneyConsumer(Long.parseLong(id)); |
| | | // } catch (Exception e) { |
| | | // log.error("用户补贴异常", e); |
| | | // // todo 更新表 |
| | | // |
| | | // } |
| | | // } |
| | | // |
| | | // @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE) |
| | | // public void forceVoucherSaleConsumer(String price) { |
| | | // log.info("收到强制卖出消息,价格:{}",price); |
| | | // try { |
| | | // memberProfitService.selaHalfVoucher(price); |
| | | // } catch (Exception e) { |
| | | // log.error("强制卖出异常", e); |
| | | // // todo 更新表 |
| | | // |
| | | // } |
| | | // } |
| | | @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT) |
| | | public void agentReturn(Message message, Channel channel) { |
| | | log.info("消费者:{}", new String(message.getBody())); |
| | | } |
| | | |
| | | @RabbitListener(queues = "hlm_queue_order_delay") |
| | | public void orderCancelDelay(String id) { |
| | | try { |
| | | orderInfoService.autoCancelOrder(Long.parseLong(id)); |
| | | } catch (Exception e) { |
| | | log.error("订单超时支付异常", e); |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP) |
| | | public void agentAutoLevelUp(String id) { |
| | | log.info("收到合伙人自动升级消息:{}", id); |
| | | try { |
| | | agentService.autoUpAgentLevel(Long.parseLong(id)); |
| | | } catch (Exception e) { |
| | | log.error("合伙人自动升级异常", e); |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY) |
| | | public void agentReturnMoney(String orderId) { |
| | | log.info("收到返利消息:{}", orderId); |
| | | try { |
| | | agentService.returnMoneyToAgent(Long.parseLong(orderId)); |
| | | } catch (Exception e) { |
| | | log.error("返利异常", e); |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY) |
| | | public void orderReturnMoney(String orderId) { |
| | | log.info("收到订单返利消息:{}", orderId); |
| | | try { |
| | | memberProfitService.dynamicProfit(Long.parseLong(orderId)); |
| | | } catch (Exception e) { |
| | | log.error("订单返利异常:", e); |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.PERK_MONEY) |
| | | public void perkMoneyConsumer(String id) { |
| | | log.info("收到补贴消息:{}", id); |
| | | try { |
| | | agentService.perkMoneyConsumer(Long.parseLong(id)); |
| | | } catch (Exception e) { |
| | | log.error("用户补贴异常", e); |
| | | // todo 更新表 |
| | | |
| | | } |
| | | } |
| | | |
| | | @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE) |
| | | public void forceVoucherSaleConsumer(String price) { |
| | | log.info("收到强制卖出消息,价格:{}",price); |
| | | try { |
| | | memberProfitService.selaHalfVoucher(price); |
| | | } catch (Exception e) { |
| | | log.error("强制卖出异常", e); |
| | | // todo 更新表 |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | <if test="record.name!=null and record.name!=''"> |
| | | and m.name like concat('%', #{record.name},'%') |
| | | </if> |
| | | <if test="record.accountLogin!=null and record.accountLogin!=''"> |
| | | and m.account_login like concat('%', #{record.accountLogin},'%') |
| | | </if> |
| | | <if test="record.account!=null and record.account!=''"> |
| | | and ( |
| | | m.phone like concat('%', #{record.account},'%') |
| | |
| | | left join data_dictionary_custom a on a.code = m.level |
| | | <where> |
| | | <if test="record != null" > |
| | | <if test="record.accountLogin!=null and record.accountLogin!=''"> |
| | | and m.account_login like concat('%', #{record.accountLogin},'%') |
| | | </if> |
| | | <if test="record.name!=null and record.name!=''"> |
| | | and m.name like concat('%', #{record.name},'%') |
| | | </if> |
| | |
| | | select * from mall_member |
| | | where level = #{level} |
| | | </select> |
| | | |
| | | <select id="selectByAccountLogin" resultType="cc.mrbird.febs.mall.entity.MallMember"> |
| | | select * from mall_member |
| | | where account_login = #{accountLogin} |
| | | </select> |
| | | |
| | | <select id="selectInfoByAccountLoginAndPwd" resultType="cc.mrbird.febs.mall.entity.MallMember"> |
| | | select * from mall_member |
| | | where account_login = #{accountLogin} and password = #{password} |
| | | </select> |
| | | </mapper> |
| | |
| | | a.*, |
| | | b.name, |
| | | b.bind_phone bindPhone, |
| | | b.account_login accountLogin, |
| | | c.pay_method payMethod, |
| | | b.phone, |
| | | d.name fromMemberName |
| | |
| | | left join mall_member d on d.id = a.rt_member_id |
| | | <where> |
| | | <if test="record != null" > |
| | | <if test="record.accountLogin!=null and record.accountLogin!=''"> |
| | | and b.account_login like concat('%', #{record.accountLogin},'%') |
| | | </if> |
| | | <if test="record.name!=null and record.name!=''"> |
| | | and b.name like concat('%', #{record.name},'%') |
| | | </if> |
| | |
| | | a.remark remark, |
| | | a.status status, |
| | | b.name, |
| | | b.account_login accountLogin, |
| | | b.bind_phone bindPhone, |
| | | b.phone |
| | | from mall_member_withdraw a |
| | | inner join mall_member b on a.member_id=b.id |
| | | <where> |
| | | <if test="record != null" > |
| | | <if test="record.accountLogin!=null and record.accountLogin!=''"> |
| | | and b.account_login like concat('%', #{record.accountLogin},'%') |
| | | </if> |
| | | <if test="record.name!=null and record.name!=''"> |
| | | and b.name like concat('%', #{record.name},'%') |
| | | </if> |
| | |
| | | select a.*, |
| | | b.name memberName, |
| | | b.bind_phone memberBindPhone, |
| | | b.account_login accountLogin, |
| | | b.phone memberPhone, |
| | | c.goods_name |
| | | from mall_order_item c |
| | |
| | | <if test="record.name != null and record.name != ''"> |
| | | and b.name like CONCAT('%', CONCAT(#{record.name}, '%')) |
| | | </if> |
| | | <if test="record.accountLogin != null and record.accountLogin != ''"> |
| | | and b.account_login like CONCAT('%', CONCAT(#{record.accountLogin}, '%')) |
| | | </if> |
| | | <if test="record.startTime != null and record.startTime != ''"> |
| | | and a.order_time >= #{record.startTime} |
| | | </if> |
| | |
| | | select |
| | | a.*, |
| | | b.name name, |
| | | b.account_login accountLogin, |
| | | b.phone phone |
| | | from mall_money_flow a |
| | | left join mall_member b on b.id = a.member_id |
| | |
| | | id: 'agentChild', |
| | | url: ctx + 'admin/mallMember/agentChild?parentId=1', |
| | | cols: [[ |
| | | {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'center'}, |
| | | {field: 'name', title: '姓名', minWidth: 150,align:'center'}, |
| | | {field: 'phone', title: '电话', minWidth: 150,align:'center',hide:toolbarAgentListChild}, |
| | | {field: 'phone', title: '手机号码', minWidth: 150,align:'center',hide:toolbarAgentListChild}, |
| | | {field: 'inviteId', title: '邀请码', minWidth: 150,align:'center'}, |
| | | {field: 'levelName', title: '等级', minWidth: 150,align:'center'}, |
| | | {field: 'amount', title: '团队业绩', minWidth: 150,align:'center'}, |
| | |
| | | <div class="layui-col-md10"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">登录账户:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">名称:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">账号:</label> |
| | | <label class="layui-form-label">手机号码:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="账号" name="account" autocomplete="off" class="layui-input"> |
| | | <input type="text" placeholder="手机号码" name="account" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | url: ctx + 'admin/mallMember/getAgentList', |
| | | cols: [[ |
| | | // {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'}, |
| | | {field: 'phone', title: '账号', minWidth: 150,align:'left',hide:toolbarAgentList}, |
| | | {field: 'phone', title: '手机号码', minWidth: 150,align:'left',hide:toolbarAgentList}, |
| | | {field: 'accountLogin', title: '登录账号', minWidth: 100,align:'left'}, |
| | | {field: 'name', title: '名称', minWidth: 100,align:'left'}, |
| | | {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'}, |
| | | {field: 'levelName', title: '代理层级', minWidth: 100,align:'left'}, |
| | |
| | | // 获取查询参数 |
| | | function getQueryParams() { |
| | | return { |
| | | accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), |
| | | name: $searchForm.find('input[name="name"]').val().trim(), |
| | | account: $searchForm.find('input[name="account"]').val().trim(), |
| | | level: $searchForm.find("select[name='level']").val(), |
| | |
| | | <div class="layui-col-md10"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">登录账户:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">名称:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">账号:</label> |
| | | <label class="layui-form-label">手机号码:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="账号" name="phone" autocomplete="off" class="layui-input"> |
| | | <input type="text" placeholder="手机号码" name="phone" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | </div> |
| | | <script type="text/html" id="charge-flow-list-option"> |
| | | {{# if(d.status === 1) { }} |
| | | <!-- <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="chargeAgree:update" lay-event="chargeAgree">同意</button>--> |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="chargeAgree:update" lay-event="chargeAgree">同意</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="searchInfo:view" lay-event="searchInfo">查询结果</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="accountInfo:view" lay-event="accountInfo">账户余额</button> |
| | |
| | | table.on('tool(moneyFlowChargeTable)', function (obj) { |
| | | var data = obj.data, |
| | | layEvent = obj.event; |
| | | // if (layEvent === 'chargeAgree') { |
| | | // febs.modal.confirm('同意', '同意提现?', function () { |
| | | // chargeAgree(data.id); |
| | | // }); |
| | | // } |
| | | if (layEvent === 'chargeAgree') { |
| | | febs.modal.confirm('同意', '同意提现?', function () { |
| | | chargeAgree(data.id); |
| | | febs.modal.open( '提现方式', 'modules/mallMember/chargeFlowListType/' + data.id, { |
| | | btn: ['提交', '取消'], |
| | | yes: function (index, layero) { |
| | | $('#charge-update').find('#submit').trigger('click'); |
| | | }, |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | } |
| | | }); |
| | | } |
| | | if (layEvent === 'chargeDisagree') { |
| | |
| | | febs.get(ctx + 'admin/mallMember/searchInfo/' + id, null, function (data) { |
| | | febs.alert.success(data.message); |
| | | // febs.alert.success('操作成功'); |
| | | window.location.reload(); |
| | | // $query.click(); |
| | | // window.location.reload(); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | function accountInfo(id) { |
| | | febs.get(ctx + 'admin/mallMember/accountInfo/' + id, null, function (data) { |
| | | febs.alert.success(data.message); |
| | | // febs.alert.success('操作成功'); |
| | | window.location.reload(); |
| | | // $query.click(); |
| | | // window.location.reload(); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | function chargeAgree(id) { |
| | |
| | | totalRow: true ,// 开启合计行 |
| | | cols: [[ |
| | | {field: 'withdrawNo', title: '编号', minWidth: 100,align:'left', totalRowText: '合计:'}, |
| | | {field: 'accountLogin', title: '登录账户', minWidth: 100,align:'left'}, |
| | | {field: 'name', title: '名称', minWidth: 100,align:'left'}, |
| | | {field: 'phone', title: '账号', minWidth: 150,align:'left'}, |
| | | {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'}, |
| | | {field: 'phone', title: '手机号码', minWidth: 150,align:'left'}, |
| | | // {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'}, |
| | | {field: 'amount', title: '金额', minWidth: 150,align:'left',totalRow: '{{= parseInt(d.amount) }}'}, |
| | | {field: 'amountFee', title: '手续费', minWidth: 150,align:'left',totalRow: '{{= parseInt(d.amountFee) }}'}, |
| | | {field: 'remark', title: '类型', minWidth: 150,align:'left'}, |
| | |
| | | function getQueryParams() { |
| | | return { |
| | | name: $searchForm.find('input[name="name"]').val().trim(), |
| | | accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), |
| | | phone: $searchForm.find('input[name="phone"]').val().trim(), |
| | | status: $searchForm.find("select[name='status']").val(), |
| | | }; |
New file |
| | |
| | | <style> |
| | | #charge-update { |
| | | padding: 20px 25px 25px 0; |
| | | } |
| | | |
| | | #charge-update .layui-treeSelect .ztree li a, .ztree li span { |
| | | margin: 0 0 2px 3px !important; |
| | | } |
| | | #charge-update #data-permission-tree-block { |
| | | border: 1px solid #eee; |
| | | border-radius: 2px; |
| | | padding: 3px 0; |
| | | } |
| | | #charge-update .layui-treeSelect .ztree li span.button.switch { |
| | | top: 1px; |
| | | left: 3px; |
| | | } |
| | | |
| | | </style> |
| | | <div class="layui-fluid" id="charge-update"> |
| | | <form class="layui-form" action="" lay-filter="charge-update-form"> |
| | | |
| | | <blockquote class="layui-elem-quote blue-border">请选择以下提现方式</blockquote> |
| | | <div class="layui-form-item febs-hide"> |
| | | <label class="layui-form-label febs-form-item-require">id:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="id"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item sftj"> |
| | | <label class="layui-form-label febs-form-item-require">方式:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="agreeType" value="1" title="手动转账" > |
| | | <input type="radio" name="agreeType" value="2" title="宁波银行转账" checked=""> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item febs-hide"> |
| | | <button class="layui-btn" lay-submit="" lay-filter="charge-update-form-submit" id="submit"></button> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | |
| | | <script data-th-inline="javascript"> |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () { |
| | | var $ = layui.$, |
| | | febs = layui.febs, |
| | | layer = layui.layer, |
| | | formSelects = layui.formSelects, |
| | | treeSelect = layui.treeSelect, |
| | | form = layui.form, |
| | | eleTree = layui.eleTree, |
| | | chargeUpdateInfo = [[${chargeUpdateInfo}]], |
| | | $view = $('#charge-update'), |
| | | validate = layui.validate, |
| | | _deptTree; |
| | | |
| | | form.render(); |
| | | |
| | | initUserValue(); |
| | | |
| | | function initUserValue() { |
| | | form.val("charge-update-form", { |
| | | "id": chargeUpdateInfo.id |
| | | }); |
| | | } |
| | | |
| | | form.on('submit(charge-update-form-submit)', function (data) { |
| | | febs.post(ctx + 'admin/mallMember/chargeAgreeWithType', data.field, function () { |
| | | layer.closeAll(); |
| | | febs.alert.success('操作成功'); |
| | | $('#febs-money-flow-charge').find('#reset').click(); |
| | | }); |
| | | return false; |
| | | }); |
| | | }); |
| | | </script> |
| | |
| | | <div class="layui-col-md10"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">登录账户:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">名称:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> |
| | |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">账号:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="账号/邀请码" name="account" autocomplete="off" class="layui-input"> |
| | | <input type="text" placeholder="手机号码/邀请码" name="account" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchInsideWith"> |
| | | {{# } }} |
| | | </script> |
| | | <script type="text/html" id="switchOutsideWith"> |
| | | {{# if(d.outsideWith === 1) { }} |
| | | <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchOutsideWith"> |
| | | {{# } else { }} |
| | | <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchOutsideWith"> |
| | | {{# } }} |
| | | </script> |
| | | <style> |
| | | .layui-form-onswitch { |
| | | background-color: #5FB878 !important; |
| | |
| | | </style> |
| | | <script type="text/html" id="tableMemberBar"> |
| | | <div class="layui-btn-container"> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="exportMember">导出会员信息</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="addMember:update" lay-event="registMember">添加会员</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="balance">拨付余额</button> |
| | | <!-- <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="score">拨付赠送积分</button>--> |
| | |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="none" type="text/javascript"> |
| | | // 引入组件并初始化 |
| | | layui.use([ 'jquery', 'form', 'table', 'febs'], function () { |
| | | layui.use([ 'jquery', 'form', 'table', 'upload','febs'], function () { |
| | | var $ = layui.jquery, |
| | | febs = layui.febs, |
| | | form = layui.form, |
| | |
| | | } |
| | | |
| | | }); |
| | | function outsideWithYes(id) { |
| | | febs.get(ctx + 'admin/mallMember/outsideWithYes/' + id, null, function () { |
| | | febs.alert.success('操作成功'); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | function outsideWithNo(id) { |
| | | febs.get(ctx + 'admin/mallMember/outsideWithNo/' + id, null, function () { |
| | | febs.alert.success('操作成功'); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | function insideWithYes(id) { |
| | | febs.get(ctx + 'admin/mallMember/insideWithYes/' + id, null, function () { |
| | | febs.alert.success('操作成功'); |
| | |
| | | id: 'userTable', |
| | | url: ctx + 'admin/mallMember/getMallMemberList', |
| | | toolbar:"#tableMemberBar", |
| | | defaultToolbar:[], |
| | | // defaultToolbar:[], |
| | | totalRow: true ,// 开启合计行 |
| | | cols: [[ |
| | | {type: 'checkbox'}, |
| | | {field: 'phone', title: '账号', minWidth: 150,align:'left',hide:toolbarMallmember}, |
| | | {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'left'}, |
| | | {field: 'phone', title: '手机号码', minWidth: 150,align:'left',hide:toolbarMallmember}, |
| | | {field: 'name', title: '名称', minWidth: 100,align:'left', totalRowText: '合计:'}, |
| | | {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'}, |
| | | {field: 'balance', title: '余额', minWidth: 100,align:'left',totalRow: '{{= parseInt(d.balance) }}'}, |
| | |
| | | {field: 'creater', title: '联创', templet:'#switchCreate', minWidth: 120,align:'left' ,hide:toolbarMallmember}, |
| | | {field: 'partner', title: '合伙人', templet:'#switchPartner', minWidth: 120,align:'left' ,hide:toolbarMallmember}, |
| | | {field: 'insideWith', title: '是否内转', templet:'#switchInsideWith', minWidth: 120,align:'left' ,hide:toolbarMallmember}, |
| | | {field: 'outsideWith', title: '是否提现', templet:'#switchOutsideWith', minWidth: 120,align:'left' ,hide:toolbarMallmember}, |
| | | {field: 'accountType', title: '账号类型', |
| | | templet: function (d) { |
| | | if (d.accountType === 2) { |
| | |
| | | var data = obj.data, |
| | | layEvent = obj.event; |
| | | |
| | | if (layEvent === 'exportMember') { |
| | | window.location.href = ctx + "admin/mallMember/exportMember"; |
| | | } |
| | | |
| | | if (layEvent === 'registMember') { |
| | | |
| | | febs.modal.open( '添加会员', 'modules/mallMember/addMember', { |
| | | btn: ['提交', '取消'], |
| | | yes: function (index, layero) { |
| | |
| | | return { |
| | | name: $searchForm.find('input[name="name"]').val().trim(), |
| | | account: $searchForm.find('input[name="account"]').val().trim(), |
| | | accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), |
| | | accountStatus: $searchForm.find("select[name='accountStatus']").val(), |
| | | level: $searchForm.find("select[name='level']").val(), |
| | | }; |
| | |
| | | } |
| | | }) |
| | | |
| | | form.on('switch(switchOutsideWith)', function (data) { |
| | | if (data.elem.checked) { |
| | | outsideWithYes(data.value); |
| | | } else { |
| | | outsideWithNo(data.value); |
| | | } |
| | | }) |
| | | |
| | | form.on('switch(switchStatus)', function (data) { |
| | | if (data.elem.checked) { |
| | | openAccount(data.value); |
| | |
| | | <div class="layui-col-md10"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">登录账户:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">名称:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">账号:</label> |
| | | <label class="layui-form-label">手机号码:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="账号" name="phone" autocomplete="off" class="layui-input"> |
| | | <input type="text" placeholder="手机号码" name="phone" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | <div class="layui-input-inline"> |
| | | <select name="type"> |
| | | <option value="">请选择</option> |
| | | <option value="1">静态收益</option> |
| | | <option value="2">直推奖</option> |
| | | <option value="8">提现</option> |
| | | <option value="9">转账</option> |
| | |
| | | id: 'moneyFlowTable', |
| | | url: ctx + 'admin/mallMember/getMoneyFlowList', |
| | | cols: [[ |
| | | {field: 'accountLogin', title: '登录账户', minWidth: 100,align:'left'}, |
| | | {field: 'name', title: '名称', minWidth: 100,align:'left'}, |
| | | {field: 'phone', title: '账号', minWidth: 150,align:'left'}, |
| | | {field: 'phone', title: '手机号码', minWidth: 150,align:'left'}, |
| | | {field: 'amount', title: '金额', minWidth: 150,align:'left'}, |
| | | {field: 'fromMemberName', title: '来自', minWidth: 150,align:'left'}, |
| | | {field: 'type', title: '流水类型', |
| | |
| | | function getQueryParams() { |
| | | return { |
| | | name: $searchForm.find('input[name="name"]').val().trim(), |
| | | accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), |
| | | phone: $searchForm.find('input[name="phone"]').val().trim(), |
| | | type: $searchForm.find("select[name='type']").val(), |
| | | flowType: $searchForm.find("select[name='flowType']").val(), |
| | |
| | | totalRow: true ,// 开启合计行 |
| | | cols: [[ |
| | | {field: 'name', title: '名称', minWidth: 150,align:'center', totalRowText: '合计:'}, |
| | | {field: 'phone', title: '电话', minWidth: 150,align:'center'}, |
| | | {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'center'}, |
| | | {field: 'phone', title: '手机号码', minWidth: 150,align:'center'}, |
| | | {field: 'createdTime', title: '释放时间', minWidth: 150,align:'center'}, |
| | | {field: 'type', title: '类型', |
| | | templet: function (d) { |
| | |
| | | <div class="layui-form-item"> |
| | | <div class="layui-col-md10"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">登录账户:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">购买人:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" placeholder="购买人" name="name" autocomplete="off" class="layui-input"> |
| | |
| | | <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" id="importDeliver" lay-event="importDeliver">导入发货</button> |
| | | <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" lay-event="exportDeliverDone">导出已发货订单</button> |
| | | <button id="printSelect" type="button" class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view">自定义打印</button> |
| | | <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" lay-event="exportDeliverAll">导出全部订单</button> |
| | | </div> |
| | | </script> |
| | | <!-- 表格操作栏 end --> |
| | |
| | | |
| | | if (event == 'exportDeliver') { |
| | | window.location.href = ctx + "admin/order/exportOrderList?orderType=1&status=2"; |
| | | } |
| | | |
| | | if (event == 'exportDeliverAll') { |
| | | window.location.href = ctx + "admin/order/exportOrderListAll?orderType=1&status=0"; |
| | | } |
| | | |
| | | if (event == 'exportDeliverDone') { |
| | |
| | | cols: [[ |
| | | {type: 'checkbox',fixed: 'left'}, |
| | | {field: 'orderNo', title: '订单编号', minWidth: 120,align:'left', totalRowText: '合计:'}, |
| | | {field: 'accountLogin', title: '登录账户', minWidth: 120,align:'left'}, |
| | | {field: 'memberName', title: '购买人', minWidth: 120,align:'left'}, |
| | | {field: 'memberPhone', title: '账号', minWidth: 120,align:'left'}, |
| | | {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'}, |
| | | {field: 'memberPhone', title: '手机号码', minWidth: 120,align:'left'}, |
| | | // {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'}, |
| | | {field: 'goodsName', title: '商品信息', minWidth: 200,align:'left'}, |
| | | {field: 'remark', title: '备注', minWidth: 200,align:'left'}, |
| | | {field: 'amount', title: '订单金额', minWidth: 120,align:'left',totalRow: '{{= parseInt(d.amount) }}'}, |
| | |
| | | return { |
| | | startTime: $searchForm.find('input[name="startTime"]').val().trim(), |
| | | endTime: $searchForm.find('input[name="endTime"]').val().trim(), |
| | | accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), |
| | | name: $searchForm.find('input[name="name"]').val().trim(), |
| | | orderNo: $searchForm.find('input[name="orderNo"]').val().trim(), |
| | | goodsName: $searchForm.find('input[name="goodsName"]').val().trim(), |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-card-body"> |
| | | <blockquote class="layui-elem-quote blue-border">星级每日补贴</blockquote> |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">补贴总额:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="perkAgentAchieveTotal" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" > |
| | | <div class="layui-word-aux">例:15000</div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">补贴百分比:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="perkAgentAchievePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" > |
| | | <div class="layui-word-aux">例:15%,填写15</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-card-footer"> |
| | | <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-basic-perk-submit" id="submit">保存</button> |
| | |
| | | |
| | | function initHlmBasicPerkValue() { |
| | | form.val("hlm-basic-perk-form", { |
| | | "perkAgentAchieveTotal": hlmBasicPerk.perkAgentAchieveTotal, |
| | | "perkAgentAchievePercent": hlmBasicPerk.perkAgentAchievePercent, |
| | | "sharePerk": hlmBasicPerk.sharePerk, |
| | | "teamPerk": hlmBasicPerk.teamPerk, |
| | | "teamEqualsPerk": hlmBasicPerk.teamEqualsPerk, |
| | |
| | | @SpringBootTest |
| | | public class ProfitTest { |
| | | |
| | | @Autowired |
| | | private IAgentService agentService; |
| | | // @Autowired |
| | | // private AgentConsumer agentConsumer; |
| | | // |
| | |
| | | private NBYHService nbyhService; |
| | | @Autowired |
| | | private IAdminMallMemberService mallMemberService; |
| | | |
| | | @Test |
| | | public void agentProfitTrade() { |
| | | // try { |
| | |
| | | // nbyhService.tradeSinge(306L); |
| | | // nbyhService.tradeSingeOuterTransfer(306L); |
| | | // nbyhService.accountInfoQuery(306L); |
| | | // nbyhService.transferResultInfoQuery(306L); |
| | | // nbyhService.transferResultInfoQuery(315L); |
| | | |
| | | // mallMemberService.chargeAgree(307L); |
| | | // mallMemberService.searchInfo(307L); |
| | | |
| | | agentService.perkAgent(); |
| | | } |
| | | @Test |
| | | public void agentProfit() { |