14 files added
8 files modified
| | |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; |
| | | import cc.mrbird.febs.common.utils.OssUtils; |
| | | import cc.mrbird.febs.mall.dto.AddMallGoodsDto; |
| | | import cc.mrbird.febs.mall.dto.MallGoodsUpdateDto; |
| | | import cc.mrbird.febs.mall.dto.RankAwardUpdateDto; |
| | | import cc.mrbird.febs.mall.dto.UpMallGoodsDto; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.DataDictionaryCustom; |
| | | import cc.mrbird.febs.mall.entity.MallCarriageRule; |
| | | import cc.mrbird.febs.mall.entity.MallGoods; |
| | | import cc.mrbird.febs.mall.entity.MallGoodsCategory; |
| | | import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; |
| | |
| | | return adminMallGoodsService.deliveryHomeUpdate(adminHomeDeliverySettingVo); |
| | | } |
| | | |
| | | /** |
| | | * 运费模板列表 |
| | | */ |
| | | @GetMapping("carriageRuleList") |
| | | public FebsResponse carriageRuleList(MallCarriageRule mallCarriageRule, QueryRequest request) { |
| | | Map<String, Object> data = getDataTable(adminMallGoodsService.getMallCarriageRuleListInPage(mallCarriageRule, request)); |
| | | return new FebsResponse().success().data(data); |
| | | } |
| | | |
| | | /** |
| | | * 运费模板列表-删除 |
| | | */ |
| | | @GetMapping("carriageRuleDel/{id}") |
| | | @ControllerEndpoint(operation = "运费模板列表-删除", exceptionMessage = "操作失败") |
| | | public FebsResponse carriageRuleDel(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return adminMallGoodsService.carriageRuleDelById(id); |
| | | } |
| | | |
| | | /** |
| | | * 运费模板列表-新增 |
| | | */ |
| | | @PostMapping("carriageRuleAdd") |
| | | @ControllerEndpoint(operation = " 商品-新增", exceptionMessage = "操作失败") |
| | | public FebsResponse carriageRuleAdd(@RequestBody @Valid AdminCarriageRuleAddDto adminCarriageRuleAddDto) { |
| | | return adminMallGoodsService.carriageRuleAdd(adminCarriageRuleAddDto); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 运费模板列表-更新 |
| | | */ |
| | | @PostMapping("carriageRuleUpdate") |
| | | @ControllerEndpoint(operation = "运费模板列表-更新", exceptionMessage = "操作失败") |
| | | public FebsResponse carriageRuleUpdate(@RequestBody @Valid AdminCarriageRuleUpdateDto adminCarriageRuleUpdateDto) { |
| | | return adminMallGoodsService.carriageRuleUpdate(adminCarriageRuleUpdateDto); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | model.addAttribute("homeDeliverySetting", adminHomeDeliverySettingVo); |
| | | return FebsUtil.view("modules/goods/deliveryHomeUpdate"); |
| | | } |
| | | |
| | | /** |
| | | * 运费模板列表 |
| | | */ |
| | | @GetMapping("carriageRuleList") |
| | | @RequiresPermissions("carriageRuleList:view") |
| | | public String carriageRuleList() { |
| | | return FebsUtil.view("modules/goods/carriageRuleList"); |
| | | } |
| | | |
| | | /** |
| | | * 运费模板-新增 |
| | | */ |
| | | @GetMapping("carriageRuleAdd") |
| | | @RequiresPermissions("carriageRuleAdd:add") |
| | | public String carriageRuleAdd() { |
| | | return FebsUtil.view("modules/goods/carriageRuleAdd"); |
| | | } |
| | | |
| | | /** |
| | | * 运费模板-编辑-详情 |
| | | */ |
| | | @GetMapping("carriageRuleUpdate/{id}") |
| | | @RequiresPermissions("carriageRuleUpdate:update") |
| | | public String carriageRuleUpdate(@PathVariable long id, Model model) { |
| | | AdminMallCarriageRuleVo adminMallCarriageRuleVo = mallGoodsService.selectCarriageRuleByRuleId(id); |
| | | model.addAttribute("carriageRule", adminMallCarriageRuleVo); |
| | | return FebsUtil.view("modules/goods/carriageRuleUpdate"); |
| | | } |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "AdminCarriageRuleAddDto", description = "运费模板参数类") |
| | | public class AdminCarriageRuleAddDto { |
| | | //名称 |
| | | @NotBlank(message = "标题不能为空") |
| | | private String ruleName; |
| | | |
| | | @NotNull(message = "计价方式不能为空") |
| | | private Integer valuationType; |
| | | //基本数量 |
| | | private BigDecimal basicCntDefault; |
| | | //基本价格 |
| | | private BigDecimal basicPriceDefault; |
| | | //超出的部分的基数数量 |
| | | private BigDecimal moreCntDefault; |
| | | //超出的部分的基数的价格 |
| | | private BigDecimal morePriceDefault; |
| | | |
| | | private List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "AdminCarriageRuleAddInfoDto", description = "运费模板子表参数类") |
| | | public class AdminCarriageRuleAddInfoDto { |
| | | //模板id |
| | | private Long ruleId; |
| | | //计价方式(1:按件算 2:按重量算) |
| | | private Integer valuationType; |
| | | //计价单位(件,KG) |
| | | private String valuationUnit; |
| | | //指定区域(没有指定区域,则为默认) |
| | | private String areaAddress; |
| | | //基本数量 |
| | | private BigDecimal basicCnt; |
| | | //基本价格 |
| | | private BigDecimal basicPrice; |
| | | //超出的部分的基数数量 |
| | | private BigDecimal moreCnt; |
| | | //超出的部分的基数的价格 |
| | | private BigDecimal morePrice; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "AdminCarriageRuleUpdateDto", description = "运费模板更新参数类") |
| | | public class AdminCarriageRuleUpdateDto { |
| | | |
| | | private Long id; |
| | | //名称 |
| | | @NotBlank(message = "标题不能为空") |
| | | private String ruleName; |
| | | |
| | | @NotNull(message = "计价方式不能为空") |
| | | private Integer valuationType; |
| | | //基本数量 |
| | | private BigDecimal basicCntDefault; |
| | | //基本价格 |
| | | private BigDecimal basicPriceDefault; |
| | | //超出的部分的基数数量 |
| | | private BigDecimal moreCntDefault; |
| | | //超出的部分的基数的价格 |
| | | private BigDecimal morePriceDefault; |
| | | |
| | | private List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos; |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.entity; |
| | | |
| | | import cc.mrbird.febs.common.entity.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 运费模板表 |
| | | */ |
| | | @Data |
| | | @TableName("mall_carriage_rule") |
| | | public class MallCarriageRule extends BaseEntity { |
| | | //名称 |
| | | private String name; |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.entity; |
| | | |
| | | import cc.mrbird.febs.common.entity.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * 运费模板子表 |
| | | */ |
| | | @Data |
| | | @TableName("mall_carriage_rule_info") |
| | | public class MallCarriageRuleInfo extends BaseEntity { |
| | | //模板id |
| | | private Long ruleId; |
| | | //计价方式(1:按件算 2:按重量算) |
| | | private Integer valuationType; |
| | | //计价单位(件,KG) |
| | | private String valuationUnit; |
| | | //指定区域(没有指定区域,则为默认) |
| | | private String areaAddress; |
| | | //基本数量 |
| | | private BigDecimal basicCnt; |
| | | //基本价格 |
| | | private BigDecimal basicPrice; |
| | | //超出的部分的基数数量 |
| | | private BigDecimal moreCnt; |
| | | //超出的部分的基数的价格 |
| | | private BigDecimal morePrice; |
| | | } |
| | |
| | | private BigDecimal carriage; |
| | | |
| | | private String wxCodeImg; |
| | | //运费方式 (1:固定运费 2:运费模板) |
| | | private Integer carriageType; |
| | | //运费金额 |
| | | private BigDecimal carriageAmount; |
| | | //运费模板ID |
| | | private Long carriageRuleId; |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.mapper; |
| | | |
| | | import cc.mrbird.febs.mall.entity.MallCarriageRuleInfo; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface MallCarriageRuleInfoMapper extends BaseMapper<MallCarriageRuleInfo> { |
| | | |
| | | List<MallCarriageRuleInfo> selectMallCarriageRuleInfoByRuleIdAndAreaAddress(@Param("ruleId")long id, @Param("areaAddress")String areaAddress); |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.mapper; |
| | | |
| | | import cc.mrbird.febs.mall.entity.MallCarriageRule; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | |
| | | public interface MallCarriageRuleMapper extends BaseMapper<MallCarriageRule> { |
| | | |
| | | IPage<MallCarriageRule> selectMallCarriageRuleListInPage(Page<MallCarriageRule> page, MallCarriageRule mallCarriageRule); |
| | | } |
| | |
| | | |
| | | List<MallGoodsListVo> selectMallGoodsListQueryNoPage(@Param("record")MallGoodsQueryDto queryDto); |
| | | |
| | | List<MallGoods> selectMallGoodsListQueryByRuleId(@Param("id")Long id); |
| | | |
| | | List<MallGoods> selectMallGoodsListQueryByRuleIdAndIsSale(@Param("id")Long id, @Param("isSale")Integer ishotStateYes); |
| | | } |
| | |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.mall.dto.AddMallGoodsDto; |
| | | import cc.mrbird.febs.mall.dto.MallGoodsUpdateDto; |
| | | import cc.mrbird.febs.mall.dto.UpMallGoodsDto; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.MallCarriageRule; |
| | | import cc.mrbird.febs.mall.entity.MallGoods; |
| | | import cc.mrbird.febs.mall.entity.MallGoodsCategory; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | |
| | | IPage<AdminHomeDeliverySettingVo> getDeliveryHomeListInPage(AdminHomeDeliverySettingVo adminHomeDeliverySettingVo, QueryRequest request); |
| | | |
| | | FebsResponse deliveryHomeUpdate(AdminHomeDeliverySettingVo adminHomeDeliverySettingVo); |
| | | |
| | | IPage<MallCarriageRule> getMallCarriageRuleListInPage(MallCarriageRule mallCarriageRule, QueryRequest request); |
| | | |
| | | FebsResponse carriageRuleDelById(Long id); |
| | | |
| | | FebsResponse carriageRuleAdd(AdminCarriageRuleAddDto adminCarriageRuleAddDto); |
| | | |
| | | AdminMallCarriageRuleVo selectCarriageRuleByRuleId(long id); |
| | | |
| | | FebsResponse carriageRuleUpdate(AdminCarriageRuleUpdateDto adminCarriageRuleUpdateDto); |
| | | } |
| | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | |
| | | private final MallGoodsStyleMapper mallGoodsStyleMapper; |
| | | private final MallGoodsImagesMapper mallGoodsImagesMapper; |
| | | private final MallShoppingCartMapper mallShoppingCartMapper; |
| | | private final MallCarriageRuleMapper mallCarriageRuleMapper; |
| | | private final MallCarriageRuleInfoMapper mallCarriageRuleInfoMapper; |
| | | |
| | | @Override |
| | | public IPage<AdminMallGoodsVo> getCategoryListInPage(MallGoods mallGoods, QueryRequest request) { |
| | |
| | | dataDictionaryCustomMapper.updateById(dataDictionaryCustom); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<MallCarriageRule> getMallCarriageRuleListInPage(MallCarriageRule mallCarriageRule, QueryRequest request) { |
| | | Page<MallCarriageRule> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<MallCarriageRule> mallCarriageRules = mallCarriageRuleMapper.selectMallCarriageRuleListInPage(page, mallCarriageRule); |
| | | return mallCarriageRules; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse carriageRuleDelById(Long id) { |
| | | MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallCarriageRule)){ |
| | | return new FebsResponse().fail().message("操作失败"); |
| | | } |
| | | List<MallGoods> mallGoods = this.baseMapper.selectMallGoodsListQueryByRuleId(id); |
| | | if(CollUtil.isNotEmpty(mallGoods)){ |
| | | StringBuffer goodsNameBuffer = new StringBuffer(); |
| | | for(MallGoods goods : mallGoods){ |
| | | goodsNameBuffer.append(goods.getGoodsName()); |
| | | goodsNameBuffer.append(","); |
| | | } |
| | | return new FebsResponse().fail().message(goodsNameBuffer+"正在使用当前模板,请先编辑商品信息"); |
| | | } |
| | | QueryWrapper<MallCarriageRuleInfo> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("rule_id",id); |
| | | mallCarriageRuleInfoMapper.delete(objectQueryWrapper); |
| | | |
| | | mallCarriageRuleMapper.deleteById(id); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse carriageRuleAdd(AdminCarriageRuleAddDto adminCarriageRuleAddDto) { |
| | | String ruleName = adminCarriageRuleAddDto.getRuleName(); |
| | | QueryWrapper<MallCarriageRule> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("name",ruleName); |
| | | List<MallCarriageRule> mallCarriageRules = mallCarriageRuleMapper.selectList(objectQueryWrapper); |
| | | if(CollUtil.isNotEmpty(mallCarriageRules)){ |
| | | return new FebsResponse().fail().message("标题不能重复"); |
| | | } |
| | | |
| | | MallCarriageRule mallCarriageRule = new MallCarriageRule(); |
| | | mallCarriageRule.setName(ruleName); |
| | | mallCarriageRuleMapper.insert(mallCarriageRule); |
| | | |
| | | Long ruleId = mallCarriageRule.getId(); |
| | | /** |
| | | * 生成默认的运费规则 |
| | | */ |
| | | MallCarriageRuleInfo mallCarriageRuleInfoDefault = new MallCarriageRuleInfo(); |
| | | mallCarriageRuleInfoDefault.setRuleId(ruleId); |
| | | //计价方式(1:按件算 2:按重量算) |
| | | mallCarriageRuleInfoDefault.setValuationType(adminCarriageRuleAddDto.getValuationType()); |
| | | mallCarriageRuleInfoDefault.setValuationUnit( |
| | | adminCarriageRuleAddDto.getValuationType() == 1?"件":"千克" |
| | | ); |
| | | mallCarriageRuleInfoDefault.setBasicCnt(adminCarriageRuleAddDto.getBasicCntDefault()); |
| | | mallCarriageRuleInfoDefault.setBasicPrice(adminCarriageRuleAddDto.getBasicPriceDefault()); |
| | | mallCarriageRuleInfoDefault.setMoreCnt(adminCarriageRuleAddDto.getMoreCntDefault()); |
| | | mallCarriageRuleInfoDefault.setMorePrice(adminCarriageRuleAddDto.getMorePriceDefault()); |
| | | mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfoDefault); |
| | | |
| | | List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos = adminCarriageRuleAddDto.getAdminCarriageRuleAddInfoDtos(); |
| | | if(CollUtil.isNotEmpty(adminCarriageRuleAddInfoDtos)){ |
| | | for(AdminCarriageRuleAddInfoDto adminCarriageRuleAddInfoDto : adminCarriageRuleAddInfoDtos){ |
| | | MallCarriageRuleInfo mallCarriageRuleInfo = new MallCarriageRuleInfo(); |
| | | mallCarriageRuleInfo.setRuleId(ruleId); |
| | | mallCarriageRuleInfo.setAreaAddress(adminCarriageRuleAddInfoDto.getAreaAddress()); |
| | | //计价方式(1:按件算 2:按重量算) |
| | | mallCarriageRuleInfo.setValuationType(adminCarriageRuleAddDto.getValuationType()); |
| | | mallCarriageRuleInfo.setValuationUnit( |
| | | adminCarriageRuleAddDto.getValuationType() == 1?"件":"千克" |
| | | ); |
| | | mallCarriageRuleInfo.setBasicCnt(adminCarriageRuleAddInfoDto.getBasicCnt()); |
| | | mallCarriageRuleInfo.setBasicPrice(adminCarriageRuleAddInfoDto.getBasicPrice()); |
| | | mallCarriageRuleInfo.setMoreCnt(adminCarriageRuleAddInfoDto.getMoreCnt()); |
| | | mallCarriageRuleInfo.setMorePrice(adminCarriageRuleAddInfoDto.getMorePrice()); |
| | | mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfo); |
| | | } |
| | | } |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public AdminMallCarriageRuleVo selectCarriageRuleByRuleId(long id) { |
| | | AdminMallCarriageRuleVo adminMallCarriageRuleVo = new AdminMallCarriageRuleVo(); |
| | | |
| | | MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id); |
| | | adminMallCarriageRuleVo.setId(id); |
| | | adminMallCarriageRuleVo.setRuleName(mallCarriageRule.getName()); |
| | | |
| | | List<MallCarriageRuleInfo> mallCarriageRuleInfos = mallCarriageRuleInfoMapper.selectMallCarriageRuleInfoByRuleIdAndAreaAddress(id,null); |
| | | if(CollUtil.isNotEmpty(mallCarriageRuleInfos)){ |
| | | List<AdminMallCarriageRuleInfoVo> adminCarriageRuleInfoVos = new ArrayList<>(); |
| | | for(MallCarriageRuleInfo mallCarriageRuleInfo : mallCarriageRuleInfos){ |
| | | if(StrUtil.isNotEmpty(mallCarriageRuleInfo.getAreaAddress())){ |
| | | AdminMallCarriageRuleInfoVo adminMallCarriageRuleInfoVo = new AdminMallCarriageRuleInfoVo(); |
| | | adminMallCarriageRuleInfoVo.setId(mallCarriageRuleInfo.getId()); |
| | | adminMallCarriageRuleInfoVo.setAreaAddress(mallCarriageRuleInfo.getAreaAddress()); |
| | | adminMallCarriageRuleInfoVo.setBasicCnt(mallCarriageRuleInfo.getBasicCnt()); |
| | | adminMallCarriageRuleInfoVo.setBasicPrice(mallCarriageRuleInfo.getBasicPrice()); |
| | | adminMallCarriageRuleInfoVo.setMoreCnt(mallCarriageRuleInfo.getMoreCnt()); |
| | | adminMallCarriageRuleInfoVo.setMorePrice(mallCarriageRuleInfo.getMorePrice()); |
| | | adminCarriageRuleInfoVos.add(adminMallCarriageRuleInfoVo); |
| | | }else{ |
| | | //默认规则 |
| | | adminMallCarriageRuleVo.setBasicCntDefault(mallCarriageRuleInfo.getBasicCnt()); |
| | | adminMallCarriageRuleVo.setBasicPriceDefault(mallCarriageRuleInfo.getBasicPrice()); |
| | | adminMallCarriageRuleVo.setMoreCntDefault(mallCarriageRuleInfo.getMoreCnt()); |
| | | adminMallCarriageRuleVo.setMorePriceDefault(mallCarriageRuleInfo.getMorePrice()); |
| | | adminMallCarriageRuleVo.setValuationType(mallCarriageRuleInfo.getValuationType()); |
| | | } |
| | | } |
| | | adminMallCarriageRuleVo.setAdminCarriageRuleInfoVos(adminCarriageRuleInfoVos); |
| | | } |
| | | return adminMallCarriageRuleVo; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse carriageRuleUpdate(AdminCarriageRuleUpdateDto adminCarriageRuleUpdateDto) { |
| | | Long id = adminCarriageRuleUpdateDto.getId(); |
| | | MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallCarriageRule)){ |
| | | return new FebsResponse().fail().message("运费模板不存在"); |
| | | } |
| | | |
| | | List<MallGoods> mallGoods = this.baseMapper.selectMallGoodsListQueryByRuleIdAndIsSale(id,MallGoods.ISHOT_STATE_YES); |
| | | if(CollUtil.isNotEmpty(mallGoods)){ |
| | | StringBuffer goodsNameBuffer = new StringBuffer(); |
| | | for(MallGoods goods : mallGoods){ |
| | | goodsNameBuffer.append(goods.getGoodsName()); |
| | | goodsNameBuffer.append(","); |
| | | } |
| | | return new FebsResponse().fail().message(goodsNameBuffer+"正在使用当前模板,请先下架商品"); |
| | | } |
| | | //删除现有的所有运费模板子表数据 |
| | | List<MallCarriageRuleInfo> mallCarriageRuleInfos = mallCarriageRuleInfoMapper.selectMallCarriageRuleInfoByRuleIdAndAreaAddress(id, null); |
| | | if(CollUtil.isNotEmpty(mallCarriageRuleInfos)){ |
| | | for(MallCarriageRuleInfo mallCarriageRuleInfo : mallCarriageRuleInfos){ |
| | | mallCarriageRuleInfoMapper.deleteById(mallCarriageRuleInfo.getId()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 生成运费模板子表数据 |
| | | */ |
| | | MallCarriageRuleInfo mallCarriageRuleInfoDefault = new MallCarriageRuleInfo(); |
| | | mallCarriageRuleInfoDefault.setRuleId(id); |
| | | //计价方式(1:按件算 2:按重量算) |
| | | mallCarriageRuleInfoDefault.setValuationType(adminCarriageRuleUpdateDto.getValuationType()); |
| | | mallCarriageRuleInfoDefault.setValuationUnit( |
| | | adminCarriageRuleUpdateDto.getValuationType() == 1?"件":"千克" |
| | | ); |
| | | mallCarriageRuleInfoDefault.setBasicCnt(adminCarriageRuleUpdateDto.getBasicCntDefault()); |
| | | mallCarriageRuleInfoDefault.setBasicPrice(adminCarriageRuleUpdateDto.getBasicPriceDefault()); |
| | | mallCarriageRuleInfoDefault.setMoreCnt(adminCarriageRuleUpdateDto.getMoreCntDefault()); |
| | | mallCarriageRuleInfoDefault.setMorePrice(adminCarriageRuleUpdateDto.getMorePriceDefault()); |
| | | mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfoDefault); |
| | | |
| | | List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos = adminCarriageRuleUpdateDto.getAdminCarriageRuleAddInfoDtos(); |
| | | if(CollUtil.isNotEmpty(adminCarriageRuleAddInfoDtos)){ |
| | | for(AdminCarriageRuleAddInfoDto adminCarriageRuleAddInfoDto : adminCarriageRuleAddInfoDtos){ |
| | | MallCarriageRuleInfo mallCarriageRuleInfo = new MallCarriageRuleInfo(); |
| | | mallCarriageRuleInfo.setRuleId(id); |
| | | mallCarriageRuleInfo.setAreaAddress(adminCarriageRuleAddInfoDto.getAreaAddress()); |
| | | //计价方式(1:按件算 2:按重量算) |
| | | mallCarriageRuleInfo.setValuationType(mallCarriageRuleInfoDefault.getValuationType()); |
| | | mallCarriageRuleInfo.setValuationUnit( |
| | | mallCarriageRuleInfoDefault.getValuationType() == 1?"件":"千克" |
| | | ); |
| | | mallCarriageRuleInfo.setBasicCnt(adminCarriageRuleAddInfoDto.getBasicCnt()); |
| | | mallCarriageRuleInfo.setBasicPrice(adminCarriageRuleAddInfoDto.getBasicPrice()); |
| | | mallCarriageRuleInfo.setMoreCnt(adminCarriageRuleAddInfoDto.getMoreCnt()); |
| | | mallCarriageRuleInfo.setMorePrice(adminCarriageRuleAddInfoDto.getMorePrice()); |
| | | mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfo); |
| | | } |
| | | } |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "AdminMallCarriageRuleInfoVo", description = "运费模板子表返回参数类") |
| | | public class AdminMallCarriageRuleInfoVo { |
| | | private Long id; |
| | | //指定区域(没有指定区域,则为默认) |
| | | private String areaAddress; |
| | | //基本数量 |
| | | private BigDecimal basicCnt; |
| | | //基本价格 |
| | | private BigDecimal basicPrice; |
| | | //超出的部分的基数数量 |
| | | private BigDecimal moreCnt; |
| | | //超出的部分的基数的价格 |
| | | private BigDecimal morePrice; |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.mall.vo; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "AdminMallCarriageRuleVo", description = "运费模板返回参数类") |
| | | public class AdminMallCarriageRuleVo { |
| | | |
| | | private Long id; |
| | | //名称 |
| | | private String ruleName; |
| | | |
| | | private Integer valuationType; |
| | | //基本数量 |
| | | private BigDecimal basicCntDefault; |
| | | //基本价格 |
| | | private BigDecimal basicPriceDefault; |
| | | //超出的部分的基数数量 |
| | | private BigDecimal moreCntDefault; |
| | | //超出的部分的基数的价格 |
| | | private BigDecimal morePriceDefault; |
| | | |
| | | private List<AdminMallCarriageRuleInfoVo> adminCarriageRuleInfoVos; |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cc.mrbird.febs.mall.mapper.MallCarriageRuleInfoMapper"> |
| | | |
| | | <!-- <select id="selectByMemberIdAndState" resultType="cc.mrbird.febs.mall.entity.MallAgentRecord">--> |
| | | <!-- select a.* from mall_agent_record a--> |
| | | <!-- where a.member_id = #{memberId}--> |
| | | <!-- and a.state = #{state}--> |
| | | <!-- limit 1--> |
| | | <!-- </select>--> |
| | | |
| | | <select id="selectMallCarriageRuleInfoByRuleIdAndAreaAddress" resultType="cc.mrbird.febs.mall.entity.MallCarriageRuleInfo"> |
| | | SELECT |
| | | a.* |
| | | FROM mall_carriage_rule_info a |
| | | <where> |
| | | a.rule_id = #{ruleId} |
| | | <if test="areaAddress != null and areaAddress != ''"> |
| | | and a.area_address like concat('%', #{areaAddress},'%') |
| | | </if> |
| | | </where> |
| | | GROUP BY a.id order by a.CREATED_TIME desc |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cc.mrbird.febs.mall.mapper.MallCarriageRuleMapper"> |
| | | |
| | | <!-- <select id="selectByMemberIdAndState" resultType="cc.mrbird.febs.mall.entity.MallAgentRecord">--> |
| | | <!-- select a.* from mall_agent_record a--> |
| | | <!-- where a.member_id = #{memberId}--> |
| | | <!-- and a.state = #{state}--> |
| | | <!-- limit 1--> |
| | | <!-- </select>--> |
| | | |
| | | <select id="selectMallCarriageRuleListInPage" resultType="cc.mrbird.febs.mall.entity.MallCarriageRule"> |
| | | SELECT |
| | | a.* |
| | | FROM mall_carriage_rule a |
| | | GROUP BY a.id order by a.CREATED_TIME desc |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="selectMallGoodsListQueryByRuleId" resultType="cc.mrbird.febs.mall.entity.MallGoods"> |
| | | select a.goods_name from mall_goods a where a.carriage_rule_id = #{id} |
| | | </select> |
| | | |
| | | <select id="selectMallGoodsListQueryByRuleIdAndIsSale" resultType="cc.mrbird.febs.mall.entity.MallGoods"> |
| | | select a.goods_name |
| | | from mall_goods a |
| | | where a.carriage_rule_id = #{id} |
| | | and a.is_sale = #{isSale} |
| | | </select> |
| | | |
| | | </mapper> |
New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-carriage-rule-add" lay-title="运费模板新增"> |
| | | <div class="layui-row febs-container"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-fluid" id="carriage-rule-add"> |
| | | <form class="layui-form" action="" lay-filter="carriage-rule-add-form"> |
| | | <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"> |
| | | <ul class="layui-tab-title"> |
| | | <li class="layui-this">运费模板</li> |
| | | </ul> |
| | | <div class="layui-tab-content"> |
| | | <div class="layui-tab-item layui-show"> |
| | | <blockquote class="layui-elem-quote blue-border">基本信息</blockquote> |
| | | <div class="layui-row layui-col-space10 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="ruleName" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> |
| | | </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="radio" name="valuationType" value="1" title="按件算" checked /> |
| | | <input type="radio" name="valuationType" value="2" title="按重量算" /> |
| | | </div> |
| | | </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-inline" style="width: 80px"> |
| | | <input type="text" name="basicCntDefault" lay-verify="required" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">件内,</div> |
| | | <div class="layui-input-inline" style="width: 80px"> |
| | | <input type="text" name="basicPriceDefault" lay-verify="required" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">元,</div> |
| | | <div class="layui-form-mid">每增加</div> |
| | | <div class="layui-input-inline" style="width: 80px"> |
| | | <input type="text" name="moreCntDefault" lay-verify="required" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">件,增加运费</div> |
| | | <div class="layui-input-inline" style="width: 80px"> |
| | | <input type="text" name="morePriceDefault" lay-verify="required" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">元。</div> |
| | | </div> |
| | | <div class="layui-form-item multi-rule-table"> |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <blockquote class="layui-elem-quote blue-border">为指定省份设置运费</blockquote> |
| | | |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">指定省份:</label> |
| | | <div class="layui-input-block"> |
| | | <div id="province-set"></div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-lg6"> |
| | | <button type="button" class="layui-btn layui-btn-normal layui-btn" id="test3" >添加</button> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <div class="layui-input-block"> |
| | | <table id="multiRule" lay-filter="multiRule"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item febs-hide"> |
| | | <button class="layui-btn" lay-submit="" lay-filter="carriage-rule-add-form-submit" id="submit">保存</button> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <style> |
| | | .blue-border { |
| | | border-left-color: #2db7f5; |
| | | font-size: 18px; |
| | | } |
| | | </style> |
| | | <script type="text/html" id="toolbar"> |
| | | <div class="layui-btn-container"> |
| | | <button class="layui-btn layui-btn-danger layui-btn-sm" type="button" lay-event="delSku">删除</button> |
| | | </div> |
| | | </script> |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="javascript"> |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','dropdown', 'laydate', 'layedit', 'upload', 'element', 'table', 'xmSelect'], function () { |
| | | var $ = layui.jquery, |
| | | febs = layui.febs, |
| | | layer = layui.layer, |
| | | table = layui.table, |
| | | formSelects = layui.formSelects, |
| | | treeSelect = layui.treeSelect, |
| | | form = layui.form, |
| | | laydate = layui.laydate, |
| | | eleTree = layui.eleTree, |
| | | $view = $('#carriage-rule-add'), |
| | | layedit = layui.layedit, |
| | | upload = layui.upload, |
| | | validate = layui.validate, |
| | | element = layui.element; |
| | | |
| | | form.render(); |
| | | |
| | | formSelects.render(); |
| | | |
| | | var provinceSet = xmSelect.render({ |
| | | el: '#province-set', |
| | | toolbar: { |
| | | show: true, |
| | | list: [ 'ALL', 'CLEAR', 'REVERSE' ] |
| | | }, |
| | | filterable: true, |
| | | data: [ |
| | | {name: '北京市',value: 1,selected:false}, |
| | | {name: '天津市',value: 2,selected:false}, |
| | | {name: '河北省',value: 3,selected:false}, |
| | | {name: '山西省',value: 4,selected:false}, |
| | | {name: '辽宁省',value: 5,selected:false}, |
| | | |
| | | {name: '吉林省',value: 6,selected:false}, |
| | | {name: '黑龙江省',value: 7,selected:false}, |
| | | {name: '上海市',value: 8,selected:false}, |
| | | {name: '江苏省',value: 9,selected:false}, |
| | | {name: '浙江省',value: 10,selected:false}, |
| | | |
| | | {name: '安徽省',value: 11,selected:false}, |
| | | {name: '福建省',value: 12,selected:false}, |
| | | {name: '江西省',value: 13,selected:false}, |
| | | {name: '山东省',value: 14,selected:false}, |
| | | {name: '河南省',value: 15,selected:false}, |
| | | |
| | | {name: '湖北省',value: 16,selected:false}, |
| | | {name: '湖南省',value: 17,selected:false}, |
| | | {name: '广东省',value: 18,selected:false}, |
| | | {name: '广西壮族自治区',value: 19,selected:false}, |
| | | {name: '海南省',value: 20,selected:false}, |
| | | |
| | | {name: '重庆市',value: 21,selected:false}, |
| | | {name: '四川省',value: 22,selected:false}, |
| | | {name: '贵州省',value: 23,selected:false}, |
| | | {name: '云南省',value: 24,selected:false}, |
| | | {name: '西藏自治区',value: 25,selected:false}, |
| | | |
| | | {name: '陕西省',value: 26,selected:false}, |
| | | {name: '甘肃省',value: 27,selected:false}, |
| | | {name: '青海省',value: 28,selected:false}, |
| | | {name: '宁夏回族自治区',value: 29,selected:false}, |
| | | {name: '内蒙古自治区',value: 30,selected:false}, |
| | | |
| | | {name: '新疆维吾尔自治区',value: 31,selected:false}, |
| | | {name: '台湾省',value: 32,selected:false}, |
| | | {name: '香港特别行政区',value: 33,selected:false}, |
| | | {name: '澳门特别行政区',value: 34,selected:false}, |
| | | ], |
| | | }) |
| | | |
| | | $('#test3').on('click', function (){ |
| | | let provinceChoice = provinceSet.getValue('name'); |
| | | if(provinceChoice == null || provinceChoice == ""){ |
| | | febs.alert.warn('指定省份不能为空'); |
| | | return false; |
| | | } |
| | | let provinceChoiceStr = ""; |
| | | console.log(provinceChoice); |
| | | for (let i = 0; i < provinceChoice.length; i++) { |
| | | provinceChoiceStr = provinceChoiceStr + provinceChoice[i]+","; |
| | | } |
| | | |
| | | console.log(provinceChoiceStr); |
| | | let data = {}; |
| | | data.areaAddress = provinceChoiceStr; |
| | | data.basicCnt = 1; |
| | | data.basicPrice = 1; |
| | | data.moreCnt = 1; |
| | | data.morePrice = 1; |
| | | addTableDate(data); |
| | | }); |
| | | |
| | | var ruleData=[]; |
| | | var tableIns = table.render({ |
| | | elem: '#multiRule' |
| | | ,limit:999 |
| | | ,toolbar:"#toolbar" |
| | | ,defaultToolbar:[] |
| | | ,cols: [ |
| | | [ |
| | | ,{align: 'center', title: '请选择', colspan: 2} |
| | | ,{field:'areaAddress', title:'指定省份', width:400, rowspan: 2,align: 'center'} |
| | | ,{align: 'center', title: '规则( 2 件内,2 元,每 1 增加件,增加运费 1 元。)', colspan: 4} |
| | | ], |
| | | [ //表头 |
| | | {type: 'checkbox', rowspan: 2,align: 'center' } |
| | | ,{field: 'index', title: '序号', width:100, rowspan: 2,align: 'center'} |
| | | ,{field: 'basicCnt', title: '件内', width:200,edit:'text'} |
| | | ,{field: 'basicPrice', title: '运费', width:200,edit:'text'} |
| | | ,{field: 'moreCnt', title: '每增加', width:200,edit:'text'} |
| | | ,{field: 'morePrice', title: '增加运费', width:200,edit:'text'} |
| | | ]] |
| | | ,data: [] |
| | | }); |
| | | |
| | | table.on('toolbar(multiRule)', function(obj){ |
| | | var data = obj.data; |
| | | var hasData = table.cache['multiRule']; |
| | | var checkData = table.checkStatus('multiRule').data; |
| | | |
| | | if (checkData.length <= 0) { |
| | | febs.alert.warn('请选择删除数据'); |
| | | return; |
| | | } |
| | | if(obj.event === 'delSku'){ |
| | | for (let i = 0; i < checkData.length; i++) { |
| | | var delData = checkData[i]; |
| | | for (let j = 0; j < hasData.length; j++) { |
| | | if (hasData[j].index == delData.index) { |
| | | hasData.splice(j, 1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (let i = 0; i < hasData.length; i++) { |
| | | hasData[i].index = i + 1; |
| | | } |
| | | |
| | | ruleData=hasData; |
| | | reloadTable(hasData); |
| | | } |
| | | }); |
| | | |
| | | function addTableDate(data) { |
| | | var hasData = table.cache['multiRule']; |
| | | |
| | | data.index = hasData.length + 1; |
| | | ruleData.push(data); |
| | | |
| | | reloadTable(ruleData); |
| | | return data.index; |
| | | } |
| | | |
| | | function reloadTable(data) { |
| | | table.reload('multiRule', { |
| | | data : data |
| | | }); |
| | | } |
| | | |
| | | table.on('edit(multiRule)', function(obj){ |
| | | var value = obj.value //得到修改后的值 |
| | | ,data = obj.data //得到所在行所有键值 |
| | | ,field = obj.field; //得到字段 |
| | | |
| | | for (let i = 0; i < ruleData.length; i++) { |
| | | if (ruleData[i].index == data.index) { |
| | | ruleData[i] = data; |
| | | } |
| | | } |
| | | }); |
| | | |
| | | form.on('submit(carriage-rule-add-form-submit)', function (data) { |
| | | data.field.adminCarriageRuleAddInfoDtos = ruleData; |
| | | $.ajax({ |
| | | 'url':ctx + 'admin/goods/carriageRuleAdd', |
| | | 'type':'post', |
| | | 'dataType':'json', |
| | | 'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式 |
| | | 'traditional': true,//ajax传递数组必须添加属性 |
| | | 'data':JSON.stringify(data.field), |
| | | 'success':function (data) { |
| | | if(data.code==200){ |
| | | layer.closeAll(); |
| | | febs.alert.success(data.message); |
| | | $('#febs-carriage-rule').find('#reset').click(); |
| | | }else{ |
| | | febs.alert.warn(data.message); |
| | | } |
| | | }, |
| | | 'error':function () { |
| | | febs.alert.warn('服务器繁忙'); |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | }); |
| | | </script> |
New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-carriage-rule" lay-title="运费模板管理"> |
| | | <div class="layui-row febs-container"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body febs-table-full"> |
| | | <form class="layui-form layui-table-form" lay-filter="user-table-form"> |
| | | <div class="layui-row"> |
| | | <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> |
| | | <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="add"> |
| | | 新增 |
| | | </div> |
| | | <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> |
| | | <i class="layui-icon"></i> |
| | | </div> |
| | | <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> |
| | | <i class="layui-icon"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | <table lay-filter="carriageRuleTable" lay-data="{id: 'carriageRuleTable'}"></table> |
| | | <style type="text/css"> |
| | | .layui-table-cell{ |
| | | text-align:center; |
| | | height: auto; |
| | | white-space: nowrap; /*文本不会换行,在同一行显示*/ |
| | | overflow: hidden; /*超出隐藏*/ |
| | | text-overflow: ellipsis; /*省略号显示*/ |
| | | } |
| | | .layui-table img{ |
| | | max-width:100px |
| | | } |
| | | </style> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 表格操作栏 start --> |
| | | <script type="text/html" id="user-option"> |
| | | <span shiro:lacksPermission="user:view,user:update,user:delete"> |
| | | <span class="layui-badge-dot febs-bg-orange"></span> 无权限 |
| | | </span> |
| | | <a lay-event="edit" shiro:hasPermission="user:update"><i |
| | | class="layui-icon febs-edit-area febs-blue"></i></a> |
| | | </script> |
| | | <style> |
| | | .layui-form-onswitch { |
| | | background-color: #5FB878 !important; |
| | | } |
| | | </style> |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="none" type="text/javascript"> |
| | | // 引入组件并初始化 |
| | | layui.use([ 'jquery', 'form', 'table', 'febs'], function () { |
| | | var $ = layui.jquery, |
| | | febs = layui.febs, |
| | | form = layui.form, |
| | | table = layui.table, |
| | | $view = $('#febs-carriage-rule'), |
| | | $query = $view.find('#query'), |
| | | $reset = $view.find('#reset'), |
| | | $searchForm = $view.find('form'), |
| | | $add = $view.find('#add'), |
| | | sortObject = {field: 'phone', type: null}, |
| | | tableIns; |
| | | |
| | | form.render(); |
| | | |
| | | // 表格初始化 |
| | | initTable(); |
| | | |
| | | // 初始化表格操作栏各个按钮功能 |
| | | table.on('tool(carriageRuleTable)', function (obj) { |
| | | var data = obj.data, |
| | | layEvent = obj.event; |
| | | if (layEvent === 'carriageRuleDel') { |
| | | febs.modal.confirm('删除', '确认删除['+data.name+']运费模板?', function () { |
| | | carriageRuleDel(data.id); |
| | | }); |
| | | } |
| | | if (layEvent === 'carriageRuleUpdate') { |
| | | febs.modal.open('运费模板编辑', 'modules/goods/carriageRuleUpdate/' + data.id, { |
| | | btn: ['提交', '取消'], |
| | | area:['100%','100%'], |
| | | yes: function (index, layero) { |
| | | $('#febs-carriage-rule-update').find('#submit').trigger('click'); |
| | | }, |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | function carriageRuleDel(id) { |
| | | febs.get(ctx + 'admin/goods/carriageRuleDel/' + id, null, function () { |
| | | febs.alert.success('操作成功'); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | |
| | | // 查询按钮 |
| | | $query.on('click', function () { |
| | | var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); |
| | | tableIns.reload({where: params, page: {curr: 1}}); |
| | | }); |
| | | |
| | | // 刷新按钮 |
| | | $reset.on('click', function () { |
| | | $searchForm[0].reset(); |
| | | sortObject.type = 'null'; |
| | | tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); |
| | | }); |
| | | |
| | | $add.on('click', function () { |
| | | febs.modal.open('运费模板新增', 'modules/goods/carriageRuleAdd/', { |
| | | btn: ['提交', '取消'], |
| | | area:['100%','100%'], |
| | | yes: function (index, layero) { |
| | | $('#febs-carriage-rule-add').find('#submit').trigger('click'); |
| | | }, |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | function initTable() { |
| | | tableIns = febs.table.init({ |
| | | elem: $view.find('table'), |
| | | id: 'carriageRuleTable', |
| | | url: ctx + 'admin/goods/carriageRuleList', |
| | | cols: [[ |
| | | {field: 'name', title: '标题', minWidth: 100,align:'left'}, |
| | | {field: 'createdTime', title: '创建时间', minWidth: 140,align:'left'}, |
| | | {title: '操作', |
| | | templet: function (d) { |
| | | return '' |
| | | + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="carriageRuleUpdate" shiro:hasPermission="user:update">编辑</button>' |
| | | + '<button class="layui-btn layui-btn-normal layui-btn-xs febs-bg-red" lay-event="carriageRuleDel" shiro:hasPermission="user:update">删除</button>' |
| | | |
| | | },minWidth: 160,align:'center'} |
| | | ]] |
| | | }); |
| | | } |
| | | |
| | | // 获取查询参数 |
| | | function getQueryParams() { |
| | | return { |
| | | }; |
| | | } |
| | | |
| | | }) |
| | | </script> |
New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-carriage-rule-update" lay-title="运费模板编辑"> |
| | | <div class="layui-row febs-container"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-fluid" id="carriage-rule-update"> |
| | | <form class="layui-form" action="" lay-filter="carriage-rule-update-form"> |
| | | <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"> |
| | | <ul class="layui-tab-title"> |
| | | <li class="layui-this">运费模板</li> |
| | | </ul> |
| | | <div class="layui-tab-content"> |
| | | <div class="layui-tab-item layui-show"> |
| | | <blockquote class="layui-elem-quote blue-border">基本信息</blockquote> |
| | | <input type="text" name="id" |
| | | placeholder="" autoComplete="off" class="layui-input febs-hide"> |
| | | <div class="layui-row layui-col-space10 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="ruleName" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> |
| | | </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="radio" name="valuationType" value="1" title="按件算" checked /> |
| | | <input type="radio" name="valuationType" value="2" title="按重量算" /> |
| | | </div> |
| | | </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-inline" style="width: 80px"> |
| | | <input type="text" name="basicCntDefault" lay-verify="required" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">件内,</div> |
| | | <div class="layui-input-inline" style="width: 80px"> |
| | | <input type="text" name="basicPriceDefault" lay-verify="required" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">元,</div> |
| | | <div class="layui-form-mid">每增加</div> |
| | | <div class="layui-input-inline" style="width: 80px"> |
| | | <input type="text" name="moreCntDefault" lay-verify="required" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">件,增加运费</div> |
| | | <div class="layui-input-inline" style="width: 80px"> |
| | | <input type="text" name="morePriceDefault" lay-verify="required" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">元。</div> |
| | | </div> |
| | | <div class="layui-form-item multi-rule-table"> |
| | | <div class="layui-row layui-col-space10 layui-form-item"> |
| | | <blockquote class="layui-elem-quote blue-border">为指定省份设置运费</blockquote> |
| | | |
| | | <div class="layui-col-lg6"> |
| | | <label class="layui-form-label febs-form-item-require">指定省份:</label> |
| | | <div class="layui-input-block"> |
| | | <div id="province-set"></div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-lg6"> |
| | | <button type="button" class="layui-btn layui-btn-normal layui-btn" id="test3" >添加</button> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <div class="layui-input-block"> |
| | | <table id="multiRule" lay-filter="multiRule"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item febs-hide"> |
| | | <button class="layui-btn" lay-submit="" lay-filter="carriage-rule-update-form-submit" id="submit">保存</button> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <style> |
| | | .blue-border { |
| | | border-left-color: #2db7f5; |
| | | font-size: 18px; |
| | | } |
| | | </style> |
| | | <script type="text/html" id="toolbar"> |
| | | <div class="layui-btn-container"> |
| | | <button class="layui-btn layui-btn-danger layui-btn-sm" type="button" lay-event="delSku">删除</button> |
| | | </div> |
| | | </script> |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="javascript"> |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','dropdown', 'laydate', 'layedit', 'upload', 'element', 'table', 'xmSelect'], function () { |
| | | var $ = layui.jquery, |
| | | febs = layui.febs, |
| | | layer = layui.layer, |
| | | table = layui.table, |
| | | formSelects = layui.formSelects, |
| | | treeSelect = layui.treeSelect, |
| | | form = layui.form, |
| | | laydate = layui.laydate, |
| | | eleTree = layui.eleTree, |
| | | $view = $('#carriage-rule-update'), |
| | | layedit = layui.layedit, |
| | | carriageRule = [[${carriageRule}]], |
| | | upload = layui.upload, |
| | | validate = layui.validate, |
| | | element = layui.element; |
| | | |
| | | form.render(); |
| | | |
| | | formSelects.render(); |
| | | |
| | | var provinceSet = xmSelect.render({ |
| | | el: '#province-set', |
| | | toolbar: { |
| | | show: true, |
| | | list: [ 'ALL', 'CLEAR', 'REVERSE' ] |
| | | }, |
| | | filterable: true, |
| | | data: [ |
| | | {name: '北京市',value: 1,selected:false}, |
| | | {name: '天津市',value: 2,selected:false}, |
| | | {name: '河北省',value: 3,selected:false}, |
| | | {name: '山西省',value: 4,selected:false}, |
| | | {name: '辽宁省',value: 5,selected:false}, |
| | | |
| | | {name: '吉林省',value: 6,selected:false}, |
| | | {name: '黑龙江省',value: 7,selected:false}, |
| | | {name: '上海市',value: 8,selected:false}, |
| | | {name: '江苏省',value: 9,selected:false}, |
| | | {name: '浙江省',value: 10,selected:false}, |
| | | |
| | | {name: '安徽省',value: 11,selected:false}, |
| | | {name: '福建省',value: 12,selected:false}, |
| | | {name: '江西省',value: 13,selected:false}, |
| | | {name: '山东省',value: 14,selected:false}, |
| | | {name: '河南省',value: 15,selected:false}, |
| | | |
| | | {name: '湖北省',value: 16,selected:false}, |
| | | {name: '湖南省',value: 17,selected:false}, |
| | | {name: '广东省',value: 18,selected:false}, |
| | | {name: '广西壮族自治区',value: 19,selected:false}, |
| | | {name: '海南省',value: 20,selected:false}, |
| | | |
| | | {name: '重庆市',value: 21,selected:false}, |
| | | {name: '四川省',value: 22,selected:false}, |
| | | {name: '贵州省',value: 23,selected:false}, |
| | | {name: '云南省',value: 24,selected:false}, |
| | | {name: '西藏自治区',value: 25,selected:false}, |
| | | |
| | | {name: '陕西省',value: 26,selected:false}, |
| | | {name: '甘肃省',value: 27,selected:false}, |
| | | {name: '青海省',value: 28,selected:false}, |
| | | {name: '宁夏回族自治区',value: 29,selected:false}, |
| | | {name: '内蒙古自治区',value: 30,selected:false}, |
| | | |
| | | {name: '新疆维吾尔自治区',value: 31,selected:false}, |
| | | {name: '台湾省',value: 32,selected:false}, |
| | | {name: '香港特别行政区',value: 33,selected:false}, |
| | | {name: '澳门特别行政区',value: 34,selected:false}, |
| | | ], |
| | | }) |
| | | |
| | | $('#test3').on('click', function (){ |
| | | let provinceChoice = provinceSet.getValue('name'); |
| | | if(provinceChoice == null || provinceChoice == ""){ |
| | | febs.alert.warn('指定省份不能为空'); |
| | | return false; |
| | | } |
| | | let provinceChoiceStr = ""; |
| | | console.log(provinceChoice); |
| | | for (let i = 0; i < provinceChoice.length; i++) { |
| | | provinceChoiceStr = provinceChoiceStr + provinceChoice[i]+","; |
| | | } |
| | | |
| | | console.log(provinceChoiceStr); |
| | | let data = {}; |
| | | data.areaAddress = provinceChoiceStr; |
| | | data.basicCnt = 1; |
| | | data.basicPrice = 1; |
| | | data.moreCnt = 1; |
| | | data.morePrice = 1; |
| | | addTableDate(data); |
| | | }); |
| | | |
| | | let ruleData=[]; |
| | | let tableIns = table.render({ |
| | | elem: '#multiRule' |
| | | ,limit:999 |
| | | ,toolbar:"#toolbar" |
| | | ,defaultToolbar:[] |
| | | ,cols: [ |
| | | [ |
| | | ,{align: 'center', title: '请选择', colspan: 2} |
| | | ,{field:'areaAddress', title:'指定省份', width:400, rowspan: 2,align: 'center'} |
| | | ,{align: 'center', title: '规则( 2 件内,2 元,每 1 增加件,增加运费 1 元。)', colspan: 4} |
| | | ], |
| | | [ //表头 |
| | | {type: 'checkbox', rowspan: 2,align: 'center' } |
| | | ,{field: 'index', title: '序号', width:100, rowspan: 2,align: 'center'} |
| | | ,{field: 'basicCnt', title: '件内', width:200,edit:'text'} |
| | | ,{field: 'basicPrice', title: '运费', width:200,edit:'text'} |
| | | ,{field: 'moreCnt', title: '每增加', width:200,edit:'text'} |
| | | ,{field: 'morePrice', title: '增加运费', width:200,edit:'text'} |
| | | ]] |
| | | ,data: [] |
| | | }); |
| | | |
| | | initValue(); |
| | | |
| | | function initValue() { |
| | | form.val("carriage-rule-update-form", { |
| | | "id": carriageRule.id, |
| | | "ruleName": carriageRule.ruleName, |
| | | "valuationType": carriageRule.valuationType, |
| | | "basicCntDefault": carriageRule.basicCntDefault, |
| | | "basicPriceDefault": carriageRule.basicPriceDefault, |
| | | "moreCntDefault": carriageRule.moreCntDefault, |
| | | "morePriceDefault": carriageRule.morePriceDefault |
| | | }); |
| | | let carriageRuleInfos = carriageRule.adminCarriageRuleInfoVos; |
| | | if(Array.isArray(carriageRuleInfos) && carriageRuleInfos.length){ |
| | | for (let i = 0; i < carriageRuleInfos.length; i++) { |
| | | carriageRuleInfos[i].index = i+1; |
| | | } |
| | | } |
| | | if (carriageRuleInfos) { |
| | | ruleData = carriageRuleInfos; |
| | | reloadTable(carriageRuleInfos); |
| | | } |
| | | } |
| | | |
| | | |
| | | let delCarriageRuleInfo = []; |
| | | table.on('toolbar(multiRule)', function(obj){ |
| | | var data = obj.data; |
| | | var hasData = table.cache['multiRule']; |
| | | var checkData = table.checkStatus('multiRule').data; |
| | | |
| | | if (checkData.length <= 0) { |
| | | febs.alert.warn('请选择删除数据'); |
| | | return; |
| | | } |
| | | if(obj.event === 'delSku'){ |
| | | for (let i = 0; i < checkData.length; i++) { |
| | | var delData = checkData[i]; |
| | | for (let j = 0; j < hasData.length; j++) { |
| | | if (hasData[j].index == delData.index) { |
| | | if (delData.id) { |
| | | delCarriageRuleInfo.push(delData.id); |
| | | } |
| | | hasData.splice(j, 1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (let i = 0; i < hasData.length; i++) { |
| | | hasData[i].index = i + 1; |
| | | } |
| | | |
| | | ruleData=hasData; |
| | | reloadTable(hasData); |
| | | } |
| | | }); |
| | | |
| | | function addTableDate(data) { |
| | | var hasData = table.cache['multiRule']; |
| | | |
| | | data.index = hasData.length + 1; |
| | | ruleData.push(data); |
| | | |
| | | reloadTable(ruleData); |
| | | return data.index; |
| | | } |
| | | |
| | | function reloadTable(data) { |
| | | table.reload('multiRule', { |
| | | data : data |
| | | }); |
| | | } |
| | | |
| | | table.on('edit(multiRule)', function(obj){ |
| | | var value = obj.value //得到修改后的值 |
| | | ,data = obj.data //得到所在行所有键值 |
| | | ,field = obj.field; //得到字段 |
| | | |
| | | for (let i = 0; i < ruleData.length; i++) { |
| | | if (ruleData[i].index == data.index) { |
| | | ruleData[i] = data; |
| | | } |
| | | } |
| | | }); |
| | | |
| | | form.on('submit(carriage-rule-update-form-submit)', function (data) { |
| | | data.field.delCarriageRuleInfoIds=delCarriageRuleInfo; |
| | | data.field.adminCarriageRuleAddInfoDtos = ruleData; |
| | | $.ajax({ |
| | | 'url':ctx + 'admin/goods/carriageRuleUpdate', |
| | | 'type':'post', |
| | | 'dataType':'json', |
| | | 'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式 |
| | | 'traditional': true,//ajax传递数组必须添加属性 |
| | | 'data':JSON.stringify(data.field), |
| | | 'success':function (data) { |
| | | if(data.code==200){ |
| | | layer.closeAll(); |
| | | febs.alert.success(data.message); |
| | | $('#febs-carriage-rule').find('#reset').click(); |
| | | }else{ |
| | | febs.alert.warn(data.message); |
| | | } |
| | | }, |
| | | 'error':function () { |
| | | febs.alert.warn('服务器繁忙'); |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | }); |
| | | </script> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-inline">--> |
| | | <!-- <label class="layui-form-label layui-form-label-sm">会员类型</label>--> |
| | | <!-- <div class="layui-input-inline">--> |
| | | <!-- <select name="level">--> |
| | | <!-- <option value="">请选择</option>--> |
| | | <!-- <option value="FIRST_LEVEL">普通会员</option>--> |
| | | <!-- <option value="SECOND_LEVEL">一星</option>--> |
| | | <!-- <option value="THIRD_LEVEL">二星</option>--> |
| | | <!-- <option value="FOUR_LEVEL">三星</option>--> |
| | | <!-- <option value="FIFTH_LEVEL">四星</option>--> |
| | | <!-- </select>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> |
| | |
| | | url: ctx + 'admin/mallMember/getAgentApplyList', |
| | | defaultToolbar:[], |
| | | cols: [[ |
| | | {field: 'memberName', title: '微信昵称', minWidth: 150,align:'left'}, |
| | | {field: 'name', title: '姓名', minWidth: 100,align:'left'}, |
| | | {field: 'phone', title: '电话', minWidth: 100,align:'left'}, |
| | | {field: 'province', title: '省', minWidth: 100,align:'left'}, |
| | | {field: 'city', title: '市', minWidth: 100,align:'left'}, |
| | | {field: 'area', title: '区、县', minWidth: 100,align:'left'}, |
| | | {field: 'storeAddress', title: '详细地址', minWidth: 100,align:'left'}, |
| | | {field: 'storeName', title: '店铺名称', minWidth: 100,align:'left'}, |
| | | {field: 'state', title: '申请状态', |
| | | {field:'memberName', title:'微信昵称', width:100, rowspan: 3,align: 'center'} |
| | | ,{align: 'center', title: '基本信息', colspan: 7} |
| | | ,{field: 'state', title: '申请状态', |
| | | templet: function (d) { |
| | | if (d.state === 1) { |
| | | return '<span style="color:green;">申请中</span>' |
| | |
| | | }else{ |
| | | return '' |
| | | } |
| | | }, minWidth: 100,align:'center'}, |
| | | {field: 'createdTime', title: '申请时间', minWidth: 180,align:'center'}, |
| | | }, minWidth: 100,rowspan: 3,align:'center'}, |
| | | ,{field:'createdTime', title:'申请时间', width:100,rowspan: 3,align: 'center'} |
| | | ],[ |
| | | // {field: 'memberName', title: '微信昵称', minWidth: 150,align:'left'}, |
| | | {field: 'name', title: '姓名', minWidth: 100,align:'left'}, |
| | | {field: 'phone', title: '电话', minWidth: 100,align:'left'}, |
| | | {field: 'province', title: '省', minWidth: 100,align:'left'}, |
| | | {field: 'city', title: '市', minWidth: 100,align:'left'}, |
| | | {field: 'area', title: '区、县', minWidth: 100,align:'left'}, |
| | | {field: 'storeAddress', title: '详细地址', minWidth: 100,align:'left'}, |
| | | {field: 'storeName', title: '店铺名称', minWidth: 100,align:'left'}, |
| | | // {field: 'state', title: '申请状态', |
| | | // templet: function (d) { |
| | | // if (d.state === 1) { |
| | | // return '<span style="color:green;">申请中</span>' |
| | | // }else if (d.state === 2) { |
| | | // return '<span style="color:blue;">通过</span>' |
| | | // }else if (d.state === 3) { |
| | | // return '<span style="color:red;">拒绝</span>' |
| | | // }else{ |
| | | // return '' |
| | | // } |
| | | // }, minWidth: 100,align:'center'}, |
| | | // {field: 'createdTime', title: '申请时间', minWidth: 180,align:'center'}, |
| | | {title: '操作', |
| | | templet: function (d) { |
| | | if(d.state === 1 ){ |