| | |
| | | private BigDecimal carriage; |
| | | |
| | | private BigDecimal star; |
| | | /** |
| | | * 排序位置 |
| | | */ |
| | | private Integer sortCnt; |
| | | /** |
| | | * 积分兑换比例 |
| | | */ |
| | | private Integer scorePercent; |
| | | |
| | | } |
| | |
| | | |
| | | private BigDecimal carriage; |
| | | private BigDecimal star; |
| | | /** |
| | | * 排序位置 |
| | | */ |
| | | private Integer sortCnt; |
| | | /** |
| | | * 积分兑换比例 |
| | | */ |
| | | private Integer scorePercent; |
| | | } |
| | |
| | | * 贡献值 |
| | | */ |
| | | private BigDecimal star; |
| | | /** |
| | | * 排序位置 |
| | | */ |
| | | private Integer sortCnt; |
| | | /** |
| | | * 积分兑换比例 |
| | | */ |
| | | private Integer scorePercent; |
| | | |
| | | } |
| | |
| | | sharePerkAmount, |
| | | MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), |
| | | mallOrderInfo.getOrderNo(), |
| | | FlowTypeEnum.BALANCE.getValue()); |
| | | "直推奖", |
| | | "补贴额度:"+totalScore, |
| | | memberId, |
| | | 2, |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | 1); |
| | | } |
| | | } |
| | | /** |
| | |
| | | mallMoneyFlow.setOrderNo(orderNo); |
| | | mallMoneyFlow.setRtMemberId(memberId); |
| | | mallMoneyFlow.setStatus(2); |
| | | mallMoneyFlow.setRemark("补贴额度:"+mallMemberWallet.getTotalScore()); |
| | | mallMoneyFlow.setFlowType(FlowTypeEnum.BALANCE.getValue()); |
| | | mallMoneyFlows.add(mallMoneyFlow); |
| | | } |
| | |
| | | mallMoneyFlow.setOrderNo(orderNo); |
| | | mallMoneyFlow.setRtMemberId(memberId); |
| | | mallMoneyFlow.setStatus(2); |
| | | mallMoneyFlow.setRemark("补贴额度:"+mallMemberWallet.getTotalScore()); |
| | | mallMoneyFlow.setFlowType(FlowTypeEnum.BALANCE.getValue()); |
| | | mallMoneyFlows.add(mallMoneyFlow); |
| | | } |
| | |
| | | /** |
| | | * 使用积分折扣现金 |
| | | */ |
| | | DataDictionaryCustom scorePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.SCORE_PERCENT.getType(), |
| | | DataDictionaryEnum.SCORE_PERCENT.getCode() |
| | | ); |
| | | DataDictionaryCustom scoreChangeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.SCORE_CHANGE.getType(), |
| | | DataDictionaryEnum.SCORE_CHANGE.getCode() |
| | | ); |
| | | BigDecimal score = ObjectUtil.isEmpty(addOrderDto.getScore()) ? BigDecimal.ZERO : addOrderDto.getScore(); |
| | | orderInfo.setScoreCnt(score); |
| | | if(ObjectUtil.isNotEmpty(scorePercentDic)){ |
| | | BigDecimal scoreChange = BigDecimal.ONE; |
| | | if(ObjectUtil.isNotEmpty(scoreChangeDic)){ |
| | | scoreChange = new BigDecimal(scoreChangeDic.getValue()).abs().setScale(2,BigDecimal.ROUND_DOWN); |
| | |
| | | //折扣现金 |
| | | BigDecimal scorePercentAmount = score.divide(scoreChange,BigDecimal.ROUND_DOWN).setScale(2,BigDecimal.ROUND_DOWN); |
| | | orderInfo.setScoreAmount(scorePercentAmount); |
| | | } |
| | | orderInfo.setAmount(total); |
| | | if(2 == deliverType){ |
| | | orderInfo.setDeliverType(2); |
| | |
| | | } |
| | | |
| | | boolean hasTc = false; |
| | | //总的折扣积分数量 |
| | | BigDecimal total = BigDecimal.ZERO; |
| | | for (AddOrderItemDto item : addOrderDto.getItems()) { |
| | | MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId()); |
| | |
| | | if (mallGoods.getIsNormal() == 2) { |
| | | hasTc = true; |
| | | } |
| | | BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); |
| | | /* |
| | | 获取单个商品的折扣积分数量 |
| | | = 现价 * 数量 * 折扣现金比例 |
| | | */ |
| | | BigDecimal scorePercent = new BigDecimal(mallGoods.getScorePercent()).multiply(new BigDecimal(0.01)); |
| | | BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())).multiply(scorePercent); |
| | | total = total.add(amount); |
| | | } |
| | | |
| | |
| | | /** |
| | | * 使用积分折扣现金 |
| | | */ |
| | | DataDictionaryCustom scorePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.SCORE_PERCENT.getType(), |
| | | DataDictionaryEnum.SCORE_PERCENT.getCode() |
| | | ); |
| | | DataDictionaryCustom scoreChangeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.SCORE_CHANGE.getType(), |
| | | DataDictionaryEnum.SCORE_CHANGE.getCode() |
| | | ); |
| | | |
| | | if(ObjectUtil.isNotEmpty(scorePercentDic)){ |
| | | //商品的现金折扣比例 |
| | | BigDecimal scorePercent = new BigDecimal(scorePercentDic.getValue()).multiply(BigDecimal.valueOf(0.01)); |
| | | //最大折扣金额对应需要的总积分数目 |
| | | BigDecimal scorePercentMaxAmount = total.multiply(scorePercent); |
| | | BigDecimal scorePercentMaxAmount = total; |
| | | BigDecimal scoreChange = BigDecimal.ONE; |
| | | if(ObjectUtil.isNotEmpty(scoreChangeDic)){ |
| | | scoreChange = new BigDecimal(scoreChangeDic.getValue()).abs().setScale(2,BigDecimal.ROUND_DOWN); |
| | |
| | | scorePercentMaxAmount = scorePercentMaxAmount.multiply(scoreChange).setScale(2,BigDecimal.ROUND_DOWN); |
| | | if(scorePercentMaxAmount.compareTo(score) < 0){ |
| | | throw new FebsException("最多可使用"+scorePercentMaxAmount+"积分"); |
| | | } |
| | | } |
| | | return new FebsResponse().success(); |
| | | } |
| | |
| | | mallMemberWalletMapper.reduceTotalScoreById(teamEqualsPerkAmount, mallMemberWallet.getId()); |
| | | |
| | | mallMemberWalletMapper.addBalanceById(teamEqualsPerkAmount, mallMemberWallet.getId()); |
| | | // |
| | | // mallMoneyFlowService.addMoneyFlow( |
| | | // adminTeamEqualsPerkVo.getRtMemberId(), |
| | | // teamEqualsPerkAmount, |
| | | // MoneyFlowTypeEnum.TEAM_EQUALS_PERK.getValue(), |
| | | // MallUtils.getOrderNum("TEP"), |
| | | // FlowTypeEnum.BALANCE.getValue()); |
| | | |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | adminTeamEqualsPerkVo.getRtMemberId(), |
| | | teamEqualsPerkAmount, |
| | | MoneyFlowTypeEnum.TEAM_EQUALS_PERK.getValue(), |
| | | MallUtils.getOrderNum("TEP"), |
| | | FlowTypeEnum.BALANCE.getValue()); |
| | | "平级奖励补贴", |
| | | "补贴额度:"+mallMemberWallet.getTotalScore(), |
| | | adminTeamEqualsPerkVo.getMemberId(), |
| | | 2, |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | 1); |
| | | } |
| | | } |
| | | } |
| | |
| | | private BigDecimal score; |
| | | |
| | | private int isNormal; |
| | | /** |
| | | * 排序位置 |
| | | */ |
| | | private Integer sortCnt; |
| | | /** |
| | | * 积分兑换比例 |
| | | */ |
| | | private Integer scorePercent; |
| | | } |
| | |
| | | private BigDecimal amount; |
| | | |
| | | private Integer type; |
| | | |
| | | private Integer flowType; |
| | | |
| | | private String orderNo; |
| | |
| | | private String description; |
| | | |
| | | private String remark; |
| | | /** |
| | | * 来源 |
| | | */ |
| | | private String fromMemberName; |
| | | |
| | | } |
| | |
| | | private String bindPhone; |
| | | |
| | | private Integer flowType; |
| | | /** |
| | | * 来源 |
| | | */ |
| | | private String fromMemberName; |
| | | |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "评论数量") |
| | | private Integer commentCount; |
| | | /** |
| | | * 排序位置 |
| | | */ |
| | | private Integer sortCnt; |
| | | /** |
| | | * 积分兑换比例 |
| | | */ |
| | | private Integer scorePercent; |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "是否有运费 1-是 2-包邮") |
| | | private Integer hasCarriage; |
| | | /** |
| | | * 排序位置 |
| | | */ |
| | | private Integer sortCnt; |
| | | /** |
| | | * 积分兑换比例 |
| | | */ |
| | | private Integer scorePercent; |
| | | } |
| | |
| | | a.present_price, |
| | | a.score, |
| | | a.is_hot, |
| | | a.score_percent, |
| | | a.sort_cnt, |
| | | min(b.present_price) price, |
| | | sum(b.sku_volume) saleVolume |
| | | from mall_goods a |
| | |
| | | order by a.id desc |
| | | ) a |
| | | <if test="record.sortType != null"> |
| | | <!-- <if test="record.sortType == 1">--> |
| | | <!-- order by a.is_hot, a.saleVolume desc, a.id--> |
| | | <!-- </if>--> |
| | | <if test="record.sortType == 1"> |
| | | order by a.is_hot, a.saleVolume desc, a.id |
| | | order by a.is_normal, a.sort_cnt asc |
| | | </if> |
| | | <if test="record.sortType == 2"> |
| | | order by a.saleVolume desc |
| | |
| | | a.is_hot, |
| | | a.score, |
| | | a.is_normal, |
| | | a.sort_cnt, |
| | | a.score_percent, |
| | | b.name categaryName, |
| | | IFNULL(sum(c.sku_volume), a.volume) skuVolume, |
| | | IFNULL(sum(c.stock), a.stock) stock |
| | |
| | | </if> |
| | | </where> |
| | | group by a.id |
| | | order by a.created_time desc |
| | | order by a.is_normal,a.sort_cnt asc |
| | | </select> |
| | | |
| | | <select id="selectMallGoodsCountByGoodsName" resultType="java.lang.Integer"> |
| | |
| | | <mapper namespace="cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper"> |
| | | |
| | | <select id="selectMoneyFlowInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallMoneyFlowVo"> |
| | | select * from mall_money_flow a where a.member_id = #{record.id} |
| | | select |
| | | a.*, |
| | | b.name fromMemberName |
| | | from mall_money_flow a |
| | | left join mall_member b on a.rt_member_id = b.id |
| | | where a.member_id = #{record.id} |
| | | order by a.CREATED_TIME desc |
| | | </select> |
| | | |
| | |
| | | b.name, |
| | | b.bind_phone bindPhone, |
| | | c.pay_method payMethod, |
| | | b.phone |
| | | b.phone, |
| | | d.name fromMemberName |
| | | from mall_money_flow a |
| | | inner join mall_member b on a.member_id=b.id |
| | | left join mall_member b on a.member_id=b.id |
| | | left join mall_order_info c on a.order_no = c.order_no |
| | | left join mall_member d on d.id = a.rt_member_id |
| | | <where> |
| | | <if test="record != null" > |
| | | <if test="record.name!=null and record.name!=''"> |
| | |
| | | order_no, |
| | | rt_member_id, |
| | | status, |
| | | remark, |
| | | flow_type) VALUES |
| | | ( |
| | | #{revision}, |
| | |
| | | #{orderNo}, |
| | | #{rtMemberId}, |
| | | #{status}, |
| | | #{remark}, |
| | | #{flowType} |
| | | ) |
| | | </insert> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">排序:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="sortCnt" lay-verify="required|integer" placeholder="" autocomplete="off" class="layui-input"> |
| | | <div class="layui-form-mid layui-word-aux">设置商品排序位置,想排列在前,设置的数字越小</div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">抵扣现金(%):</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="scorePercent" lay-verify="required|integer" placeholder="" autocomplete="off" class="layui-input"> |
| | | <div class="layui-word-aux">设置50,即商品价格1000,积分可抵扣的最大金额为1000*50%=500,填写整数,如【50】</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">商品介绍:</label> |
| | |
| | | id: 'userTable', |
| | | url: ctx + 'admin/goods/goodsList?goodsType=1', |
| | | cols: [[ |
| | | {field: 'sortCnt', title: '序号', minWidth: 80,align:'left'}, |
| | | {field: 'goodsNo', title: '商品编号', minWidth: 100,align:'left'}, |
| | | {field: 'goodsName', title: '商品名称', minWidth: 140,align:'left'}, |
| | | {field: 'thumb', title: '缩略图', |
| | | templet: function (d) { |
| | | return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.thumb+'" alt=""></a>'; |
| | | }, minWidth: 150,align:'center'}, |
| | | {field: 'categaryName', title: '分类', minWidth: 140,align:'left'}, |
| | | {field: 'categaryName', title: '分类', minWidth: 100,align:'left'}, |
| | | {field: 'isSale', title: '是否上架', templet: '#upOrDownSwitch', minWidth: 100,align:'center'}, |
| | | {field: 'isHot', title: '是否主推', templet: '#isHotSwitch', minWidth: 100,align:'center'}, |
| | | {templet:"#goodsTypeFormat", title: '商品类型', minWidth: 140,align:'left'}, |
| | | {templet:"#goodsTypeFormat", title: '商品类型', minWidth: 100,align:'left'}, |
| | | {templet:"#isSkuFormat", title: '是否多规格', minWidth: 100,align:'left'}, |
| | | {field: 'presentPrice', title: '现价', minWidth: 100,align:'left'}, |
| | | {field: 'originalPrice', title: '原价', minWidth: 100,align:'left'}, |
| | | // {field: 'originalPrice', title: '原价', minWidth: 100,align:'left'}, |
| | | {field: 'stock', title: '商品库存', minWidth: 100,align:'left'}, |
| | | {field: 'skuVolume', title: '商品销量', minWidth: 100,align:'left'}, |
| | | {field: 'scorePercent', title: '兑换比例', minWidth: 100,align:'left'}, |
| | | {title: '操作', |
| | | templet: function (d) { |
| | | if (d.isSale === 1) { |
| | | return ''; |
| | | // return '<button class="layui-btn layui-btn-normal layui-btn-xs febs-bg-orange" lay-event="downGoods" shiro:hasPermission="user:update">下架</button>' |
| | | // + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="detailGoods" shiro:hasPermission="user:update">详情</button>' |
| | | }else{ |
| | | // '<button class="layui-btn layui-btn-normal layui-btn-xs febs-bg-green" lay-event="upGoods" shiro:hasPermission="user:update">上架</button>' |
| | | return '' |
| | | + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="goodsUpdate" shiro:hasPermission="user:update">编辑</button>' |
| | | return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="goodsUpdate" shiro:hasPermission="user:update">编辑</button>' |
| | | + '<button class="layui-btn layui-btn-normal layui-btn-xs febs-bg-red" lay-event="delGoods" shiro:hasPermission="user:update">删除</button>' |
| | | |
| | | } |
| | |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">排序:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="sortCnt" lay-verify="required|integer" placeholder="" autocomplete="off" class="layui-input"> |
| | | <div class="layui-form-mid layui-word-aux">设置商品排序位置,想排列在前,设置的数字越小</div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">抵扣现金(%):</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="scorePercent" lay-verify="required|integer" placeholder="" autocomplete="off" class="layui-input"> |
| | | <div class="layui-word-aux">设置50,即商品价格1000,积分可抵扣的最大金额为1000*50%=500,填写整数,如【50】</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">商品介绍:</label> |
| | | <div class="layui-input-block"> |
| | | <label> |
| | |
| | | <div class="layui-form-item febs-hide tc-set"> |
| | | <label class="layui-form-label">贡献值:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="star" lay-verify="required|integer" placeholder="请输入贡献值" autocomplete="off" class="layui-input"> |
| | | <input type="text" name="star" lay-verify="required" placeholder="请输入贡献值" autocomplete="off" class="layui-input"> |
| | | <div class="layui-form-mid layui-word-aux">支付后,用户获取对应的贡献值</div> |
| | | </div> |
| | | </div> |
| | |
| | | "isSku": goodsInfo.isSku, |
| | | "thumb": goodsInfo.thumb, |
| | | "star": goodsInfo.star, |
| | | "sortCnt": goodsInfo.sortCnt, |
| | | "scorePercent": goodsInfo.scorePercent, |
| | | "thumbs": thumbs |
| | | }); |
| | | |
| | |
| | | id: 'moneyFlowChild', |
| | | url: ctx + 'admin/mallMember/moneyFlow?parentId=1', |
| | | cols: [[ |
| | | {field: 'fromMemberName', title: '来自', minWidth: 80,align:'center'}, |
| | | {field: 'amount', title: '金额', minWidth: 80,align:'center'}, |
| | | {field: 'type', title: '流水类型', |
| | | templet: function (d) { |
| | |
| | | }else if (d.type === 13) { |
| | | return '<span>佣金转余额</span>' |
| | | }else if (d.type === 14) { |
| | | return '<span>竞猜积分签到</span>' |
| | | return '<span>签到</span>' |
| | | }else if (d.type === 15) { |
| | | return '<span>感恩奖</span>' |
| | | }else if (d.type === 16) { |
| | | return '<span>系统拨付</span>' |
| | | }else if (d.type === 17) { |
| | | return '<span>抽奖</span>' |
| | | }else if (d.type === 18) { |
| | | return '<span>积分池收益</span>' |
| | | }else if (d.type === 19) { |
| | | return '<span>1星合伙人补贴</span>' |
| | | }else if (d.type === 20) { |
| | | return '<span>2星合伙人补贴</span>' |
| | | }else if (d.type === 21) { |
| | | return '<span>3星合伙人补贴</span>' |
| | | }else if (d.type === 22) { |
| | | return '<span>4星合伙人补贴</span>' |
| | | }else if (d.type === 23) { |
| | | return '<span>5星合伙人补贴</span>' |
| | | }else if (d.type === 24) { |
| | | return '<span>6星合伙人补贴</span>' |
| | | }else if (d.type === 25) { |
| | | return '<span>贡献点</span>' |
| | | }else if (d.type === 26) { |
| | | return '<span>补贴额度</span>' |
| | | }else if (d.type === 27) { |
| | | return '<span>团队补贴</span>' |
| | | }else if (d.type === 28) { |
| | | return '<span>平级奖励补贴</span>' |
| | | }else if (d.type === 29) { |
| | | return '<span>线下服务中心补贴</span>' |
| | | }else if (d.type === 30) { |
| | | return '<span>代理商补贴</span>' |
| | | }else{ |
| | | return '' |
| | | } |
| | |
| | | templet: function (d) { |
| | | if (d.flowType === 1) { |
| | | return '余额'; |
| | | } else if(d.flowType === 2) { |
| | | return '赠送积分' |
| | | } else if(d.flowType === 3) { |
| | | return '竞猜积分' |
| | | } else if(d.flowType === 4) { |
| | | return '佣金' |
| | | return '现金积分' |
| | | } else if(d.flowType === 5) { |
| | | return '贡献点' |
| | | } else { |
| | | return '-'; |
| | | } |
| | | }, minWidth: 80,align:'center'}, |
| | | {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'}, |
| | | {field: 'remark', title: '备注', minWidth: 150,align:'left'}, |
| | | {field: 'createdTime', title: '时间', minWidth: 150,align:'left'} |
| | | ]] |
| | | }); |
| | |
| | | {field: 'name', title: '名称', minWidth: 100,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: '流水类型', |
| | | templet: function (d) { |
| | | if (d.type === 1) { |
| | |
| | | } |
| | | }, minWidth: 80,align:'center'}, |
| | | {field: 'orderNo', title: '订单编号', minWidth: 150,align:'left'}, |
| | | {field: 'remark', title: '备注', minWidth: 150,align:'left'}, |
| | | {field: 'createdTime', title: '创建时间', minWidth: 180,align:'center'} |
| | | ]] |
| | | }); |
| | |
| | | </div> |
| | | |
| | | <blockquote class="layui-elem-quote blue-border">积分与现金</blockquote> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">抵扣现金(%):</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="scorePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" > |
| | | <div class="layui-word-aux">设置50,即商品价格1000,积分可抵扣的最大金额为1000*50%=500,填写整数,如【50】</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="scorePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >--> |
| | | <!-- <div class="layui-word-aux">设置50,即商品价格1000,积分可抵扣的最大金额为1000*50%=500,填写整数,如【50】</div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">积分兑换现金:</label> |
| | | <div class="layui-input-block"> |