Commit 77209d14 authored by liuyang's avatar liuyang

完成会员价格配置

parent 794990b5
......@@ -21,4 +21,10 @@ public class BizConstants {
* 普通用户
*/
public static final String ROLE_USER = "USER";
public static final String CONFIG_KEY_VIP_PRICE = "vip_price";
public static final String CONFIG_KEY_DISCOUNT_3MON = "discount_3mon";
public static final String CONFIG_KEY_DISCOUNT_6MON = "discount_6mon";
public static final String CONFIG_KEY_DISCOUNT_12MON = "discount_12mon";
public static final String CONFIG_KEY_ENTERPRICE_VIP_PRICE = "enterprice_vip_price";
}
package com.qkdata.biz.enums;
/**
* 组织类型
*/
public enum OrgTypeEnum {
ENTERPRISE, INSTITUTION;
}
package com.qkdata.biz.management.controller;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.management.service.OrganizationService;
import com.qkdata.biz.management.vo.InstitutionModel;
import com.qkdata.common.annotation.SysLog;
import com.qkdata.common.base.model.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 企业 前端控制器
* </p>
*
* @author liuyang
* @since 2021-04-27
*/
@Api(tags = "企业管理")
@RestController
@RequestMapping("/api/mgr/enterprise")
public class EnterpriseController {
@Autowired
private OrganizationService orgService;
@ApiOperation("添加机构")
@PostMapping("/save")
@SysLog(value = "添加培训机构")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR})
public Result<String> institutionSave(@RequestBody @Validated InstitutionModel model){
return Result.succeed("ok");
}
}
package com.qkdata.biz.management.controller;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.management.service.OrganizationService;
import com.qkdata.biz.management.vo.InstitutionModel;
import com.qkdata.common.annotation.SysLog;
import com.qkdata.common.base.model.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 培训机构 前端控制器
* </p>
*
* @author liuyang
* @since 2021-04-27
*/
@Api(tags = "培训机构管理")
@RestController
@RequestMapping("/api/mgr/institution")
public class InstitutionController {
@Autowired
private OrganizationService orgService;
@ApiOperation("添加机构")
@PostMapping("/save")
@SysLog(value = "添加培训机构")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR})
public Result<String> save(@RequestBody @Validated InstitutionModel model){
orgService.saveInstitution(model);
return Result.succeed("ok");
}
}
package com.qkdata.biz.management.controller;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.management.service.PriceConfigService;
import com.qkdata.biz.management.vo.PriceConfigModel;
import com.qkdata.common.base.model.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Api(tags = "会员价格配置")
@RestController
@RequestMapping("/api/mgr/priceConfig")
public class PriceConfigController {
@Autowired
private PriceConfigService priceConfigService;
@ApiOperation("获取系统价格配置")
@GetMapping("/get")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
public Result<PriceConfigModel> get() {
return Result.succeed(priceConfigService.findConfig());
}
@ApiOperation("修改系统价格配置")
@PostMapping("/update")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
public Result<String> update(@RequestBody PriceConfigModel model) {
priceConfigService.update(model);
return Result.succeed("ok");
}
}
package com.qkdata.biz.management.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qkdata.biz.enums.OrgTypeEnum;
import com.qkdata.common.base.entity.BasePO;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 组织
* </p>
*
* @author liuyang
* @since 2021-04-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("organization")
public class OrganizationPO extends BasePO {
private static final long serialVersionUID = 1L;
/**
* 组织名称
*/
private String name;
/**
* 组织类型(企业、培训机构)
*/
private OrgTypeEnum type;
/**
* 联系人电话
*/
private String contactTel;
/**
* 联系人名称
*/
private String contactName;
/**
* 企业LOG
*/
private String logoUrl;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 详细地址
*/
private String address;
/**
* 备注
*/
private String remark;
/**
* 删除标识
*/
@TableLogic
private Boolean isDel;
}
package com.qkdata.biz.management.mapper;
import com.qkdata.biz.management.entity.OrganizationPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 组织 Mapper 接口
* </p>
*
* @author liuyang
* @since 2021-04-27
*/
@Mapper
public interface OrganizationMapper extends BaseMapper<OrganizationPO> {
}
package com.qkdata.biz.management.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qkdata.biz.enums.OrgTypeEnum;
import com.qkdata.biz.management.entity.OrganizationPO;
import com.qkdata.biz.management.mapper.OrganizationMapper;
import com.qkdata.biz.management.vo.InstitutionModel;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.service.impl.BaseServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.awt.*;
/**
* <p>
* $!{table.comment} 服务类
* </p>
*
* @author liuyang
* @since 2021-04-27
*/
@Service
public class OrganizationService extends BaseServiceImpl<OrganizationMapper, OrganizationPO> {
/**
* 保存培训机构
* @param model
*/
public void saveInstitution(InstitutionModel model) {
OrganizationPO orgPO = getByName(model.getName());
if (orgPO != null){
throw new BusinessException("该机构名称已存在");
}
orgPO = new OrganizationPO();
BeanUtils.copyProperties(model,orgPO);
orgPO.setType(OrgTypeEnum.INSTITUTION);
save(orgPO);
}
private OrganizationPO getByName(String name){
return baseMapper.selectOne(Wrappers.<OrganizationPO>lambdaQuery().eq(OrganizationPO::getName,name));
}
}
\ No newline at end of file
package com.qkdata.biz.management.service;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.management.vo.PriceConfigModel;
import com.qkdata.biz.sys.entity.SysConfigPO;
import com.qkdata.biz.sys.service.SysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
@Service
public class PriceConfigService {
@Autowired
private SysConfigService sysConfigService;
private List<String> paramKeys = Lists.newArrayList(
BizConstants.CONFIG_KEY_VIP_PRICE,
BizConstants.CONFIG_KEY_DISCOUNT_3MON,
BizConstants.CONFIG_KEY_DISCOUNT_6MON,
BizConstants.CONFIG_KEY_DISCOUNT_12MON,
BizConstants.CONFIG_KEY_ENTERPRICE_VIP_PRICE);
public PriceConfigModel findConfig() {
List<SysConfigPO> configList = sysConfigService.list(Wrappers.<SysConfigPO>lambdaQuery().in(SysConfigPO::getParamKey, paramKeys));
PriceConfigModel model = new PriceConfigModel();
if (CollUtil.isNotEmpty(configList)) {
for (SysConfigPO config : configList) {
switch (config.getParamKey()) {
case BizConstants.CONFIG_KEY_VIP_PRICE:
model.setVipPrice(new BigDecimal(config.getParamValue()));
break;
case BizConstants.CONFIG_KEY_DISCOUNT_3MON:
model.setDiscountFor3Mon(new BigDecimal(config.getParamValue()));
break;
case BizConstants.CONFIG_KEY_DISCOUNT_6MON:
model.setDiscountFor6Mon(new BigDecimal(config.getParamValue()));
break;
case BizConstants.CONFIG_KEY_DISCOUNT_12MON:
model.setDiscountFor12Mon(new BigDecimal(config.getParamValue()));
break;
case BizConstants.CONFIG_KEY_ENTERPRICE_VIP_PRICE:
model.setEnterpriceVipPrice(new BigDecimal(config.getParamValue()));
break;
}
}
}
return model;
}
public void update(PriceConfigModel model) {
for (String paramKey : paramKeys) {
switch (paramKey) {
case BizConstants.CONFIG_KEY_VIP_PRICE:
sysConfigService.updateValueByKey(BizConstants.CONFIG_KEY_VIP_PRICE, model.getVipPrice().toString());
break;
case BizConstants.CONFIG_KEY_DISCOUNT_3MON:
sysConfigService.updateValueByKey(BizConstants.CONFIG_KEY_DISCOUNT_3MON, model.getVipPrice().toString());
break;
case BizConstants.CONFIG_KEY_DISCOUNT_6MON:
sysConfigService.updateValueByKey(BizConstants.CONFIG_KEY_DISCOUNT_6MON, model.getVipPrice().toString());
break;
case BizConstants.CONFIG_KEY_DISCOUNT_12MON:
sysConfigService.updateValueByKey(BizConstants.CONFIG_KEY_DISCOUNT_12MON, model.getVipPrice().toString());
break;
case BizConstants.CONFIG_KEY_ENTERPRICE_VIP_PRICE:
sysConfigService.updateValueByKey(BizConstants.CONFIG_KEY_ENTERPRICE_VIP_PRICE, model.getVipPrice().toString());
break;
}
}
}
}
package com.qkdata.biz.management.vo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class InstitutionModel {
private Long id;
/**
* 机构名称
*/
@NotBlank(message = "名称不能为空")
private String name;
/**
* 联系人电话
*/
private String contactTel;
/**
* 联系人名称
*/
private String contactName;
/**
* 机构LOG
*/
private String logoUrl;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 详细地址
*/
private String address;
/**
* 备注
*/
private String remark;
}
package com.qkdata.biz.management.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 会员价格配置对象
*/
@Data
public class PriceConfigModel {
/**
* 购买一个月会员价格
*/
private BigDecimal vipPrice;
/**
* 购买3个月会员折扣
*/
private BigDecimal discountFor3Mon;
/**
* 购买6个月会员折扣
*/
private BigDecimal discountFor6Mon;
/**
* 购买12个月会员折扣
*/
private BigDecimal discountFor12Mon;
/**
* 企业会员价格
*/
private BigDecimal enterpriceVipPrice;
}
package com.qkdata.biz.sys.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.sys.entity.SysConfigPO;
import com.qkdata.biz.sys.mapper.SysConfigMapper;
......@@ -9,6 +10,7 @@ import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.base.service.impl.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List;
@Service
......@@ -18,4 +20,17 @@ public class SysConfigService extends BaseServiceImpl<SysConfigMapper, SysConfig
List<SysConfigPO> pageList = baseMapper.queryPageList(page,queryConfigModel);
return PageResult.<SysConfigPO>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(pageList).build();
}
public void updateValueByKey(String paramKey, String paramValue) {
SysConfigPO sysConfigPO = baseMapper.selectOne(Wrappers.<SysConfigPO>lambdaQuery().eq(SysConfigPO::getParamKey,paramKey));
if (sysConfigPO == null){
sysConfigPO = new SysConfigPO();
sysConfigPO.setParamKey(paramKey);
sysConfigPO.setParamValue(paramValue);
save(sysConfigPO);
}else {
sysConfigPO.setParamValue(paramValue);
updateById(sysConfigPO);
}
}
}
<?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="com.qkdata.biz.management.mapper.OrganizationMapper">
</mapper>
......@@ -125,6 +125,7 @@ public class CodeGenerator {
// templateConfig.setEntity("templates/entity2.java");
templateConfig.setService("templates/ftl/Service.java");
templateConfig.setServiceImpl(null);
templateConfig.setMapper("templates/ftl/my_mapper.java");
// templateConfig.setController();
templateConfig.setXml(null);
......
package ${package.Mapper};
import ${package.Entity}.${entity};
import ${superMapperClassPackage};
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* ${table.comment!} Mapper 接口
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if kotlin>
interface ${table.mapperName} : ${superMapperClass}<${entity}>
<#else>
@Mapper
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {
}
</#if>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment