123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- package services
- import (
- "encoding/json"
- "errors"
- "fmt"
- "log"
- "strconv"
- "go.mod/web/utils"
- "github.com/kataras/iris/v12"
- "go.mod/dao"
- "go.mod/datasource"
- "go.mod/web/viewmodels"
- )
- type RuleService interface {
- Get(pid int, id int) viewmodels.ViewRule
- Post(pid int, id int, key string, value string) error
- AutoCode(bid int, pid int, codeType string) (string, string, error)
- ValidRule(ctx iris.Context) (viewmodels.ValidField, error)
- }
- // //返回service操作类
- type ruleService struct {
- daoRule *dao.RuleDao
- daoSafe *dao.SafeDao
- daoQuality *dao.QualityDao
- daoContract *dao.ContractDao
- daoContractPaid *dao.ContractPaidDao
- validAutoPath string
- }
- //创建项目用户service
- func NewRuleService() RuleService {
- return &ruleService{
- validAutoPath: "/api/rule/auto",
- daoRule: dao.NewRuleDao(datasource.InstanceDbMaster()),
- daoSafe: dao.NewSafeDao(datasource.InstanceDbMaster()),
- daoQuality: dao.NewQualityDao(datasource.InstanceDbMaster()),
- daoContract: dao.NewContractDao(datasource.InstanceDbMaster()),
- }
- }
- func (s *ruleService) Get(pid int, id int) viewmodels.ViewRule {
- data := s.daoRule.FindByPidWithBid(pid, id)
- viewData := viewmodels.ViewRule{SafeRule: data.SafeRule, QualityRule: data.QualityRule, ContractPaidRule: data.ContractPaidRule, ContractReturnRule: data.ContractReturnRule}
- return viewData
- }
- func (s *ruleService) Post(pid int, id int, key string, value string) error {
- err := s.daoRule.UpdateOrCreate(pid, id, key, value)
- return err
- }
- // 生成code
- func (s *ruleService) AutoCode(bid int, pid int, codeType string) (string, string, error) {
- // 获取该标段的规则
- rule := s.daoRule.FindByPidWithBid(pid, bid)
- if codeType == "safeRule" {
- if rule.SafeRule == "" {
- return "", "", errors.New("该标段未设置编号规则")
- }
- var code viewmodels.RuleCode
- err := json.Unmarshal([]byte(rule.SafeRule), &code)
- total, err := s.daoSafe.CountRuleCode(bid)
- k, _ := strconv.Atoi(code.Code)
- newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
- return rule.SafeRule, newCode, err
- } else if codeType == "contractReturnRule" {
- if rule.ContractReturnRule == "" {
- return "", "", errors.New("该标段未设置编号规则")
- }
- var code viewmodels.RuleCode
- err := json.Unmarshal([]byte(rule.ContractReturnRule), &code)
- total, err := s.daoContract.CountRuleCode(bid, 1)
- fmt.Printf("-----------------------", total)
- k, _ := strconv.Atoi(code.Code)
- newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
- return rule.ContractReturnRule, newCode, err
- } else if codeType == "contractPaidRule" {
- if rule.ContractPaidRule == "" {
- return "", "", errors.New("该标段未设置编号规则")
- }
- var code viewmodels.RuleCode
- err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
- total, err := s.daoContract.CountRuleCode(bid, 2)
- k, _ := strconv.Atoi(code.Code)
- newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
- return rule.ContractPaidRule, newCode, err
- } else if codeType == "contractPaidRule" {
- if rule.ContractPaidRule == "" {
- return "", "", errors.New("该标段未设置编号规则")
- }
- var code viewmodels.RuleCode
- err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
- total, err := s.daoContractPaid.CountPaidRuleCode(bid)
- k, _ := strconv.Atoi(code.Code)
- newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
- return rule.ContractPaidRule, newCode, err
- } else if codeType == "contractPaidRule" {
- if rule.ContractPaidRule == "" {
- return "", "", errors.New("该标段未设置编号规则")
- }
- var code viewmodels.RuleCode
- err := json.Unmarshal([]byte(rule.ContractPaidRule), &code)
- total, err := s.daoContractPaid.CountPaidRuleCode(bid)
- k, _ := strconv.Atoi(code.Code)
- newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
- return rule.ContractPaidRule, newCode, err
- } else {
- if rule.QualityRule == "" {
- return "", "", errors.New("该标段未设置编号规则")
- }
- var code viewmodels.RuleCode
- err := json.Unmarshal([]byte(rule.QualityRule), &code)
- total, err := s.daoQuality.CountRuleCode(bid)
- k, _ := strconv.Atoi(code.Code)
- newCode := utils.CreateRuleCode(int64(k), total, len(code.Code))
- return rule.QualityRule, newCode, err
- }
- }
- func (s *ruleService) ValidRule(ctx iris.Context) (viewmodels.ValidField, error) {
- safeVaild := viewmodels.ValidField{}
- if ctx.Method() == "GET" {
- err := ctx.ReadForm(&safeVaild)
- if err != nil {
- log.Println("safe-ValidRule-ReadForm转换异常, error=", err)
- return safeVaild, err
- }
- err = safeVaild.Validate()
- return safeVaild, err
- }
- if ctx.Method() == "POST" {
- err := ctx.ReadJSON(&safeVaild)
- if err != nil {
- log.Println("safe-ValidRule-ReadJson转换异常, error=", err)
- return safeVaild, err
- }
- if ctx.Path() == s.validAutoPath {
- err = safeVaild.ValidateAuto()
- } else {
- err = safeVaild.Validate()
- }
- }
- return safeVaild, nil
- }
|