提交 c0b9086a 作者: zhenjie

Merge branch 'develop'

......@@ -27,7 +27,7 @@
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.7.Final</version>
<version>6.0.20.Final</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
......
......@@ -23,19 +23,19 @@ import java.util.List;
public class IndustryCaseQO implements Serializable {
private static final long serialVersionUID = -4615177472593013257L;
@ApiModelProperty(value = "关键字", required = false)
@ApiModelProperty(value = "关键字", required = false, example = "张三")
private String keyword;
@ApiModelProperty(value = "需求类型id", required = false)
@ApiModelProperty(value = "需求类型id", required = false, example = "1")
private Integer requirementTypeId;
@ApiModelProperty(value = "省份编码", required = false)
@ApiModelProperty(value = "省份编码", required = false, example = "802323")
private Integer provinceCode;
@ApiModelProperty(value = "市编码", required = false)
@ApiModelProperty(value = "市编码", required = false, example = "802323")
private Integer cityCode;
@ApiModelProperty(value = "区编码", required = false)
@ApiModelProperty(value = "区编码", required = false, example = "802323")
private Integer districtCode;
@ApiModelProperty(value = "时间:2023-05-19", required = false)
......
package com.mmc.csf.infomation.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mmc.csf.release.model.group.Insert;
import com.mmc.csf.release.model.group.Update;
import io.swagger.annotations.ApiModelProperty;
......@@ -9,8 +10,11 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -26,6 +30,69 @@ public class RequirementsInfoVO implements Serializable {
@ApiModelProperty(value = "id")
@NotNull(message = "id不能为空", groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "需求发布id", hidden = true)
private Integer requirementsInfoId;
@ApiModelProperty(value = "需求类型id", example = "1", required = true)
@NotNull(message = "需求类型id不能为空", groups = {Insert.class, Update.class})
private Integer requirementTypeId;
@ApiModelProperty(value = "任务标题", example = "任务标题001", required = true)
@Size(max = 15, message = "任务标题限制15个字")
@NotBlank(message = "任务标题不能为空", groups = {Insert.class, Update.class})
private String taskTitle;
@ApiModelProperty(value = "任务开始时间", example = "2023-07-25", required = true)
@NotNull(message = "任务开始时间不能为空", groups = {Insert.class, Update.class})
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date taskStartTime;
@ApiModelProperty(value = "任务结束时间", example = "2023-07-26", required = true)
@NotNull(message = "任务开始时间不能为空", groups = {Insert.class, Update.class})
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date taskEndTime;
@ApiModelProperty(value = "任务地址", example = "广东省深圳市", required = true)
@NotBlank(message = "任务地址不能为空", groups = {Insert.class, Update.class})
private String taskAddress;
@ApiModelProperty(value = "任务经度", example = "23.344324", required = true)
@NotNull(message = "任务经度不能为空", groups = {Insert.class, Update.class})
private Double longitude;
@ApiModelProperty(value = "任务纬度", example = "44.344324", required = true)
@NotNull(message = "任务纬度不能为空", groups = {Insert.class, Update.class})
private Double latitude;
@ApiModelProperty(value = "需求描述", example = "描述一下", required = true)
@NotNull(message = "需求描述不能为空", groups = {Insert.class})
@Length(max = 300, message = "字符过长")
private String requireDescription;
@ApiModelProperty(value = "描述图片", example = "http://,http://", required = false)
private String requireUrl;
@ApiModelProperty(value = "发布者姓名", example = "张三")
// @NotNull(message = "发布者姓名不能为空", groups = {Insert.class})
private String publishName;
@ApiModelProperty(value = "发布者电话", example = "1892994543", required = true)
@NotNull(message = "发布者电话不能为空", groups = {Insert.class})
private String publishPhone;
/**
* 后台获取token里面的用户id
*/
@ApiModelProperty(value = "用户id", hidden = true)
//@NotNull(message = "用户id不能为空", groups = {Insert.class})
private Integer userAccountId;
@ApiModelProperty(value = "省份编码", required = false)
//@NotNull(message = "省份编码不能为空", groups = {Insert.class})
private Integer provinceCode;
......@@ -33,28 +100,26 @@ public class RequirementsInfoVO implements Serializable {
private Integer cityCode;
@ApiModelProperty(value = "区编码", required = false)
private Integer districtCode;
@ApiModelProperty(value = "需求类型id")
@NotNull(message = "需求类型id不能为空", groups = {Insert.class})
private Integer requirementTypeId;
@ApiModelProperty(value = "需求类型名称")
private String requirementTypeName;
@ApiModelProperty(value = "用户id")
//@NotNull(message = "用户id不能为空", groups = {Insert.class})
private Integer userAccountId;
@ApiModelProperty(value = "发布者姓名")
@NotNull(message = "发布者姓名不能为空", groups = {Insert.class})
private String publishName;
@ApiModelProperty(value = "发布者电话")
@NotNull(message = "发布者电话不能为空", groups = {Insert.class})
private String publishPhone;
@ApiModelProperty(value = "需求描述")
@NotNull(message = "需求描述不能为空", groups = {Insert.class})
@Length(max = 256, message = "字符过长")
private String requireDescription;
@ApiModelProperty(value = "是否已解决")
private Boolean solved;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "类型名称", hidden = true)
private String requirementTypeName;
@ApiModelProperty(value = "订单编号")
private String orderNumber;
@ApiModelProperty(value = "应支付金额 单位元", example = "1.00")
private BigDecimal paramMoney;
@ApiModelProperty(value = "发布者id", example = "1", required = true)
private Integer publishAccountId;
@ApiModelProperty(value = "发布者订单编号")
private String publisherNumber;
}
package com.mmc.csf.infomation.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author small
* @Date 2023/7/25 9:56
* @Version 1.0
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class RequirementsTypeSubclassVO {
/**
* 二级分类的id
*/
private Integer id;
/**
* 一级分类的id
*/
private Integer requirementsTypeId;
/**
* 二级分类的名称
*/
private String name;
}
......@@ -7,7 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author: zj
......@@ -23,4 +23,9 @@ public class RequirementsTypeVO implements Serializable {
private Integer id;
@ApiModelProperty(value = "需求名称")
private String typeName;
/**
* 二级分类
*/
private List<RequirementsTypeSubclassVO> typeSubclassList;
}
......@@ -34,4 +34,6 @@ public class TenderApplyVO implements Serializable {
@ApiModelProperty(value = "联系电话", hidden = true)
//@NotNull(message = "联系电话不能为空", groups = {Create.class})
private String phoneNum;
}
package com.mmc.csf.release.model.group;
import javax.validation.groups.Default;
/**
* @author 作者 dahang
* @version 创建时间:2022年7月20日
* @explain 类说明
*/
public interface Insert {
public interface Insert extends Default {
}
......@@ -83,13 +83,6 @@
<version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.wxpay/wxpay-sdk -->
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
......
......@@ -404,7 +404,11 @@ public enum ResultEnum implements BaseErrorInfoInterface {
// 论坛
DYNAMIC_SENSITIVE_INFO("50100", "发布信息涉及敏感信息!"),
THE_ORGANIZATION_NAME_ALREADY_EXISTS("60001", "机构名称已存在"),
YOU_CANNOT_MODIFY_REQUIREMENTS_PUBLISHED_BY_OTHERS("60003", "不能修改他(她)人发布的需求"),
YOU_CANNOT_DELETE_REQUIREMENTS_POSTED_BY_OTHERS("60004", "不能删除他(她)人发布的需求"),
THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED("60005", "第三方接口在更新请联系开发人员"),
THREE_FIELDS_CAN_BE_REPEATED("60002", "机型、等级、类型存在重复");
/**
* 错误码
*
......
......@@ -18,4 +18,4 @@ patches:
images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/ims
newTag: 89096d93770e8076a81d07f0386daff9a303bd14
newTag: 8d6510aa5d90515a62b0293d79641358521815c9
......@@ -6,12 +6,9 @@ import com.mmc.csf.infomation.vo.RequirementsInfoVO;
import com.mmc.csf.infomation.vo.RequirementsTypeVO;
import com.mmc.csf.release.model.group.Insert;
import com.mmc.csf.release.model.group.Page;
import com.mmc.csf.release.model.group.Query;
import com.mmc.csf.release.model.group.Update;
import com.mmc.csf.release.service.RequirementsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -25,44 +22,75 @@ import javax.servlet.http.HttpServletRequest;
@Api(tags = {"需求相关"})
@RestController
@RequestMapping("/requirements/")
public class RequirementsController extends BaseController{
public class RequirementsController extends BaseController {
@Autowired
private RequirementsService requirementsService;
@ApiOperation(value = "需求类型")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = RequirementsTypeVO.class) })
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = RequirementsTypeVO.class)})
@GetMapping("listType")
public ResultBody listType(){
return requirementsService.listType();
public ResultBody listType(@RequestParam(value = "1", required = false) Integer id) {
return requirementsService.listType(id);
}
@ApiOperation(value = "需求发布")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@ApiOperation(value = "小程序——需求发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("publish")
public ResultBody publish(@Validated(value = {Insert.class})@RequestBody RequirementsInfoVO requirementsInfoVO, HttpServletRequest request){
public ResultBody publish(@RequestBody @Validated(value = {Insert.class}) RequirementsInfoVO requirementsInfoVO, HttpServletRequest request) {
requirementsInfoVO.setUserAccountId(this.getUserLoginInfoFromRedis(request).getUserAccountId());
return requirementsService.publish(requirementsInfoVO, request);
}
@ApiOperation(value = "小程序-编辑——需求发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("updatePublish")
public ResultBody updatePublish(@RequestBody @Validated(value = {Update.class}) RequirementsInfoVO requirementsInfoVO, HttpServletRequest request) {
requirementsInfoVO.setUserAccountId(this.getUserLoginInfoFromRedis(request).getUserAccountId());
return requirementsService.updatePublish(requirementsInfoVO, request);
}
@ApiOperation(value = "小程序-删除——需求发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("deletePublish")
public ResultBody deletePublish(@ApiParam(value = "需求发布id", required = true) @RequestParam Integer id, HttpServletRequest request) {
return requirementsService.deletePublish(id, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
@ApiOperation(value = "小程序-列表——需求发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("appPublishList")
public ResultBody<RequirementsInfoVO> appPublishList() {
return requirementsService.appPublishList();
}
@ApiOperation(value = "小程序-详情——需求发布")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("detailPublish")
public ResultBody<RequirementsInfoVO> detailPublish(@ApiParam(value = "需求发布id", required = true) @RequestParam Integer id, HttpServletRequest request) {
return requirementsService.detailPublish(id, request, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
@ApiOperation(value = "需求发布列表")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = RequirementsInfoVO.class) })
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = RequirementsInfoVO.class)})
@PostMapping("listPublishPage")
public ResultBody listPublishPage(@Validated(value = {Page.class})@RequestBody IndustryCaseQO industryCaseQO, HttpServletRequest request){
public ResultBody listPublishPage(@Validated(value = {Page.class}) @RequestBody IndustryCaseQO
industryCaseQO, HttpServletRequest request) {
return requirementsService.listPublishPage(industryCaseQO, request);
}
@ApiOperation(value = "需求已解决")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("solveRequire")
public ResultBody solveRequire(@RequestParam Integer requirementsInfoId, HttpServletRequest request){
public ResultBody solveRequire(@RequestParam Integer requirementsInfoId, HttpServletRequest request) {
return requirementsService.solveRequire(requirementsInfoId, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
@ApiOperation(value = "删除需求")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("deleteRequire")
public ResultBody deleteRequire(@RequestParam Integer requirementsInfoId, HttpServletRequest request){
public ResultBody deleteRequire(@RequestParam Integer requirementsInfoId, HttpServletRequest request) {
return requirementsService.deleteRequire(requirementsInfoId, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
......
......@@ -15,30 +15,35 @@ import java.util.List;
public interface RequirementsDao {
/**
* 需求类型列表
*
* @return
*/
List<RequirementsTypeDO> listType();
/**
* 添加需求
*
* @param requirementsInfoDO
*/
void addRequirementsInfo(RequirementsInfoDO requirementsInfoDO);
/**
* 获取需求
*
* @param requirementsInfoId
*/
RequirementsInfoDO getRequirementsInfoById(Integer requirementsInfoId);
/**
* 解决需求
*
* @param requirementsInfoId
*/
void solveRequire(Integer requirementsInfoId);
/**
* 需求发布的数量
*
* @param industryCaseQO
* @return
*/
......@@ -46,6 +51,7 @@ public interface RequirementsDao {
/**
* 需求发布列表
*
* @param industryCaseQO
* @return
*/
......@@ -53,7 +59,22 @@ public interface RequirementsDao {
/**
* 删除需求
*
* @param requirementsInfoId
*/
void removeRequire(Integer requirementsInfoId);
List<RequirementsTypeDO> listTypeReq(Integer id);
Integer findPublish(RequirementsInfoDO requirementsInfoDO);
void updatePublish(RequirementsInfoDO requirementsInfoDO);
Integer findPublishCount(Integer id, Integer userAccountId);
void requirementsDao(Integer id);
List<RequirementsInfoDO> appPublishList();
RequirementsInfoDO detailPublish(Integer id);
}
package com.mmc.csf.release.entity.requirements;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mmc.csf.infomation.vo.RequirementsInfoVO;
import com.mmc.csf.release.model.group.Insert;
import com.mmc.csf.release.model.group.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
......@@ -31,13 +38,59 @@ public class RequirementsInfoDO implements Serializable {
private Boolean solved;
private Date createTime;
private Date updateTime;
@ApiModelProperty(value = "任务标题", example = "任务标题001", required = true)
@NotBlank(message = "任务标题不能为空", groups = {Insert.class, Update.class})
@Size(max = 15, message = "任务标题限制15个字")
private String taskTitle;
public RequirementsInfoVO buildRequirementsInfoVO(){
@ApiModelProperty(value = "任务开始时间", example = "2023-07-25", required = true)
@NotNull(message = "任务开始时间不能为空", groups = {Insert.class, Update.class})
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date taskStartTime;
@ApiModelProperty(value = "任务结束时间", example = "2023-07-26", required = true)
@NotNull(message = "任务开始时间不能为空", groups = {Insert.class, Update.class})
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date taskEndTime;
@ApiModelProperty(value = "任务地址", example = "广东省深圳市", required = true)
@NotBlank(message = "任务地址不能为空", groups = {Insert.class, Update.class})
private String taskAddress;
@ApiModelProperty(value = "任务经度", example = "23.344324", required = true)
@NotNull(message = "任务经度不能为空", groups = {Insert.class, Update.class})
private Double longitude;
@ApiModelProperty(value = "任务纬度", example = "44.344324", required = true)
@NotNull(message = "任务纬度不能为空", groups = {Insert.class, Update.class})
private Double latitude;
@ApiModelProperty(value = "描述图片", example = "http://,http://", required = false)
private String requireUrl;
@ApiModelProperty(value = "类型名称")
private String requirementTypeName;
@ApiModelProperty(value = "发布者订单编号")
private String publisherNumber;
public RequirementsInfoVO buildRequirementsInfoVO() {
return RequirementsInfoVO.builder().id(this.id).requirementTypeId(this.requirementTypeId).userAccountId(this.userAccountId).publishName(this.publishName)
.publishPhone(this.publishPhone).requireDescription(this.requireDescription).solved(this.solved).createTime(this.createTime).updateTime(this.updateTime).build();
.publishPhone(this.publishPhone).requireDescription(this.requireDescription).solved(this.solved).taskStartTime(this.taskStartTime).taskEndTime(this.taskEndTime)
.taskTitle(this.taskTitle)
.taskAddress(this.taskAddress)
.longitude(this.longitude)
.latitude(this.latitude)
.requirementTypeName(this.requirementTypeName)
.publisherNumber(this.publisherNumber)
.requireUrl(this.requireUrl).build();
}
public RequirementsInfoDO(RequirementsInfoVO requirementsInfoVO){
public RequirementsInfoDO(RequirementsInfoVO requirementsInfoVO) {
this.id = requirementsInfoVO.getId();
this.requirementTypeId = requirementsInfoVO.getRequirementTypeId();
this.userAccountId = requirementsInfoVO.getUserAccountId();
......@@ -47,6 +100,13 @@ public class RequirementsInfoDO implements Serializable {
this.provinceCode = requirementsInfoVO.getProvinceCode();
this.cityCode = requirementsInfoVO.getCityCode();
this.districtCode = requirementsInfoVO.getDistrictCode();
this.taskStartTime = requirementsInfoVO.getTaskStartTime();
this.taskEndTime = requirementsInfoVO.getTaskEndTime();
this.taskTitle = requirementsInfoVO.getTaskTitle();
this.taskAddress = requirementsInfoVO.getTaskAddress();
this.longitude = requirementsInfoVO.getLongitude();
this.latitude = requirementsInfoVO.getLatitude();
this.requireUrl = requirementsInfoVO.getRequireUrl();
}
}
package com.mmc.csf.release.entity.requirements;
import com.mmc.csf.infomation.vo.RequirementsTypeSubclassVO;
import com.mmc.csf.infomation.vo.RequirementsTypeVO;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -7,6 +8,7 @@ import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @description 需求类型 用枚举
......@@ -21,9 +23,14 @@ public class RequirementsTypeDO implements Serializable {
private Integer id;
private String typeName;
private Date createTime;
/**
* 二级分类
*/
private List<RequirementsTypeSubclassVO> typeSubclassList;
public RequirementsTypeVO buildRequirementsTypeVO(){
return RequirementsTypeVO.builder().id(this.id).typeName(this.typeName).build();
public RequirementsTypeVO buildRequirementsTypeVO() {
return RequirementsTypeVO.builder().id(this.id).typeName(this.typeName).typeSubclassList(this.typeSubclassList).
build();
}
}
package com.mmc.csf.release.entity.requirements;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author small
* @Date 2023/7/25 9:52
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RequirementsTypeSubclassDO {
/**
* 二级分类的id
*/
private Integer id;
/**
* 一级分类的id
*/
private Integer requirementsTypeId;
/**
* 二级分类的名称
*/
private String name;
}
......@@ -13,12 +13,14 @@ import javax.servlet.http.HttpServletRequest;
public interface RequirementsService {
/**
* 需求类型列表
*
* @return
*/
ResultBody listType();
ResultBody listType(Integer id);
/**
* 需求发布
*
* @param requirementsInfoVO
* @param request
* @return
......@@ -27,6 +29,7 @@ public interface RequirementsService {
/**
* 解决需求
*
* @param requirementsInfoId
* @param userAccountId
* @return
......@@ -35,6 +38,7 @@ public interface RequirementsService {
/**
* 需求发布列表
*
* @param industryCaseQO
* @param request
* @return
......@@ -43,9 +47,18 @@ public interface RequirementsService {
/**
* 删除需求
*
* @param requirementsInfoId
* @param userAccountId
* @return
*/
ResultBody deleteRequire(Integer requirementsInfoId, Integer userAccountId);
ResultBody updatePublish(RequirementsInfoVO requirementsInfoVO, HttpServletRequest request);
ResultBody deletePublish(Integer id, Integer userAccountId);
ResultBody appPublishList();
ResultBody detailPublish(Integer id, HttpServletRequest request, Integer userAccountId);
}
package com.mmc.csf.release.service.impl;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.common.util.web.ResultEnum;
import com.mmc.csf.infomation.qo.IndustryCaseQO;
import com.mmc.csf.infomation.vo.RequirementsInfoVO;
import com.mmc.csf.infomation.vo.RequirementsTypeVO;
......@@ -20,8 +14,23 @@ import com.mmc.csf.release.entity.requirements.RequirementsTypeDO;
import com.mmc.csf.release.feign.UserAppApi;
import com.mmc.csf.release.service.RequirementsService;
import com.mmc.csf.release.util.RestTemplateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.stream.Collectors;
/**
* @author: zj
......@@ -39,9 +48,18 @@ public class RequirementsServiceImpl implements RequirementsService {
@Autowired
private RestTemplateUtil restTemplateUtil;
@Autowired
private RestTemplate restTemplate;
@Value("${iuav.omsapp.url}")
private String omsApp;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Override
public ResultBody listType() {
List<RequirementsTypeDO> requirementsTypeDOList = requirementsDao.listType();
public ResultBody listType(Integer id) {
List<RequirementsTypeDO> requirementsTypeDOList = requirementsDao.listTypeReq(id);
List<RequirementsTypeVO> requirementsTypeVOList = requirementsTypeDOList.stream().map(RequirementsTypeDO::buildRequirementsTypeVO).collect(Collectors.toList());
return ResultBody.success(requirementsTypeVOList);
}
......@@ -53,15 +71,20 @@ public class RequirementsServiceImpl implements RequirementsService {
// if (userAccountSimpleDTO == null || !userAccountSimpleDTO.getCompanyAuthStatus().toString().equals("1")){
// return ResultBody.error(ResultEnum.COMPANY_NOT_VERIFY_ERROR);
// }
RequirementsInfoDO requirementsInfoDO = new RequirementsInfoDO(requirementsInfoVO);
requirementsInfoDO.setPublisherNumber(randomOrderCode());
requirementsDao.addRequirementsInfo(requirementsInfoDO);
return ResultBody.success();
}
HttpHeaders headers = new HttpHeaders();
@Override
public ResultBody solveRequire(Integer requirementsInfoId, Integer userAccountId) {
RequirementsInfoDO requirementsInfoDO = requirementsDao.getRequirementsInfoById(requirementsInfoId);
if (!requirementsInfoDO.getUserAccountId().toString().equals(userAccountId.toString())){
if (!requirementsInfoDO.getUserAccountId().toString().equals(userAccountId.toString())) {
return ResultBody.error("无权限");
}
requirementsDao.solveRequire(requirementsInfoId);
......@@ -91,4 +114,104 @@ public class RequirementsServiceImpl implements RequirementsService {
requirementsDao.removeRequire(requirementsInfoId);
return ResultBody.success();
}
@Override
public ResultBody updatePublish(RequirementsInfoVO requirementsInfoVO, HttpServletRequest request) {
RequirementsInfoDO requirementsInfoDO = new RequirementsInfoDO(requirementsInfoVO);
Integer publish = requirementsDao.findPublish(requirementsInfoDO);
if (publish == 0) {
return ResultBody.error(ResultEnum.YOU_CANNOT_MODIFY_REQUIREMENTS_PUBLISHED_BY_OTHERS);
}
requirementsDao.updatePublish(requirementsInfoDO);
return ResultBody.success();
}
@Override
public ResultBody deletePublish(Integer id, Integer userAccountId) {
Integer publish = requirementsDao.findPublishCount(id, userAccountId);
if (publish == 0) {
return ResultBody.error(ResultEnum.YOU_CANNOT_DELETE_REQUIREMENTS_POSTED_BY_OTHERS);
}
requirementsDao.requirementsDao(id);
return ResultBody.success();
}
@Override
public ResultBody appPublishList() {
List<RequirementsInfoDO> requirementsInfoDOS = requirementsDao.appPublishList();
List<RequirementsInfoVO> collect = requirementsInfoDOS.stream().map(RequirementsInfoDO::buildRequirementsInfoVO).collect(Collectors.toList());
return ResultBody.success(collect);
}
@Override
public ResultBody detailPublish(Integer id, HttpServletRequest request, Integer userAccountId) {
RequirementsInfoDO requirementsInfoDO = requirementsDao.detailPublish(id);
RequirementsInfoVO requirementsInfoVO = requirementsInfoDO.buildRequirementsInfoVO();
if (userAccountId.equals(requirementsInfoVO.getUserAccountId())) {
requirementsInfoVO.setParamMoney(BigDecimal.valueOf(0.00));
} else if (!userAccountId.equals(requirementsInfoVO.getUserAccountId())) {
requirementsInfoVO.setParamMoney(BigDecimal.valueOf(0.10));
}
requirementsInfoVO.setOrderNumber(randomOrderCode());
requirementsInfoVO.setPublishAccountId(requirementsInfoDO.getUserAccountId());
requirementsInfoVO.setRequirementsInfoId(requirementsInfoDO.getId());
//已经支付
String s = stringRedisTemplate.opsForValue().get(requirementsInfoDO.getId().toString());
RequirementsInfoVO orderVO = JSON.parseObject(s, RequirementsInfoVO.class);
if (s != null) {
if (requirementsInfoDO.getId().equals(orderVO.getRequirementsInfoId()) && userAccountId.equals(orderVO.getUserAccountId())) {
requirementsInfoVO.setParamMoney(new BigDecimal(0));
requirementsInfoVO.setOrderNumber(orderVO.getOrderNumber());
requirementsInfoVO.setPublishPhone("");
return ResultBody.success(requirementsInfoVO);
}
}
//生成
ResultBody resultBody = releaseOrder(requirementsInfoVO, request.getHeader("token"));
if (resultBody.getCode().equals(ResultEnum.THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED.getResultCode())) {
return resultBody;
}
requirementsInfoVO.setPublishPhone("");
return ResultBody.success(requirementsInfoVO);
}
public ResultBody releaseOrder(RequirementsInfoVO requirementsInfoVO, String token) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(requirementsInfoVO), headers);
ResponseEntity<Object> exchange = null;
try {
exchange = restTemplate.exchange(omsApp + "releaseOrder/publish", HttpMethod.POST, entity, Object.class);
} catch (RestClientException e) {
return ResultBody.error(ResultEnum.THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED);
}
return ResultBody.success();
}
public String randomOrderCode() {
SimpleDateFormat dmDate = new SimpleDateFormat("yyyyMMddHHmmss");
String ranData = getRandom(6);
Date date = new Date();
String dateRan = dmDate.format(date);
String xsCode = "R" + dateRan + ranData;
if (xsCode.length() < 24) {
xsCode = xsCode + 0;
}
return xsCode;
}
public String getRandom(int len) {
Random r = new Random();
StringBuilder rs = new StringBuilder();
for (int i = 0; i < len; i++) {
rs.append(r.nextInt(10));
}
return rs.toString();
}
}
......@@ -67,9 +67,9 @@ public class LicenceBackgroundServiceImpl implements LicenceBackgroundService {
return ResultBody.error(ResultEnum.THREE_FIELDS_CAN_BE_REPEATED);
}
}
// licenceBackgroundDao.insertLicenseOrgTraining(organizationsDO.getOrgTrainingIds(), organizationsDO.getId());
// licenceBackgroundDao.insertLicenseOrgTraining(organizationsDO.getOrgTrainingIds(), organizationsDO.getId());
}
if (organizations.getTrainingProgramsVOS()==null || organizations.getTrainingProgramsVOS().size()==0){
if (organizations.getTrainingProgramsVOS() == null || organizations.getTrainingProgramsVOS().size() == 0) {
licenceBackgroundDao.insertOrganizations(organizationsDO);
}
return ResultBody.success();
......@@ -97,7 +97,7 @@ public class LicenceBackgroundServiceImpl implements LicenceBackgroundService {
hashMap.put(trainingProgramsVO, pro++);
return ResultBody.error(ResultEnum.THREE_FIELDS_CAN_BE_REPEATED);
}
// licenceBackgroundDao.removeOrganizations(organizations.getId());
// licenceBackgroundDao.removeOrganizations(organizations.getId());
programsDO = new LicenseTrainingProgramsDO(trainingProgramsVO);
Integer id = organizations.getId();
programsDO.setOrgId(id);
......@@ -107,9 +107,9 @@ public class LicenceBackgroundServiceImpl implements LicenceBackgroundService {
}
licenceBackgroundDao.updateOrganizations(organizationsDO);
// licenceBackgroundDao.insertLicenseOrgTraining(organizationsDO.getOrgTrainingIds(), organizationsDO.getId());
// licenceBackgroundDao.insertLicenseOrgTraining(organizationsDO.getOrgTrainingIds(), organizationsDO.getId());
}
if (organizations.getTrainingProgramsVOS()==null || organizations.getTrainingProgramsVOS().size()==0){
if (organizations.getTrainingProgramsVOS() == null || organizations.getTrainingProgramsVOS().size() == 0) {
licenceBackgroundDao.updateOrganizations(organizationsDO);
}
return ResultBody.success();
......@@ -159,7 +159,10 @@ public class LicenceBackgroundServiceImpl implements LicenceBackgroundService {
}
return true;
}).collect(Collectors.toList());*/
if (organizationsQO.getModelsId() != null || organizationsQO.getGradeId() != null || organizationsQO.getTypeId() != null) {
orgList = orgList.stream().filter(t -> t.getProgramsDOList() != null).collect(Collectors.toList());
}
List<LicenseOrganizationsDTO> subList = orgList.stream().skip((pageNo - 1) * organizationsQO.getPageSize()).limit(organizationsQO.getPageSize()).
collect(Collectors.toList());
......
......@@ -147,6 +147,9 @@ iuav:
url: http://cms-svc:35150
pmsapp:
url: http://pms-svc:8099
omsapp:
url: https://test.iuav.shop/oms/
#mmc:
# appid: 80001
......@@ -174,4 +177,4 @@ iuav:
# endpoints:
# web:
# exposure:
# include: "*"
\ No newline at end of file
# include: "*"
......@@ -15,35 +15,34 @@ spring:
password: IUAV_DEV@2023&MYSQL
# Druid数据源配置
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 1 #初始化连接池大小
min-idle: 1 #最小大小
max-active: 1 #最大大小
max-wait: 60000 #获取连接时最大等待时间,单位毫秒
time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql
test-while-idle: true #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
testOnBorrow: false #获取连接时执行检测,建议关闭,影响性能
testOnReturn: false #归还连接时执行检测,建议关闭,影响性能
pool-prepared-statements: false #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
filters: stat,wall #配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
filter:
wall:
config:
multi-statement-allow: true
db-type: mysql
enabled: true
connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 #打开慢sql记录和延迟时间
web-stat-filter:
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
enabled: true
stat-view-servlet:
enabled: true
login-username: druid
login-password: druid
#cloud
# druid:
# initial-size: 1 #初始化连接池大小
# min-idle: 1 #最小大小
# max-active: 1 #最大大小
# max-wait: 60000 #获取连接时最大等待时间,单位毫秒
# time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
# min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
# validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql
# test-while-idle: true #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
# testOnBorrow: false #获取连接时执行检测,建议关闭,影响性能
# testOnReturn: false #归还连接时执行检测,建议关闭,影响性能
# pool-prepared-statements: false #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
# filters: stat,wall #配置扩展插件,常用的插件有=>stat:监控统计 log4j:日志 wall:防御sql注入
# filter:
# wall:
# config:
# multi-statement-allow: true
# db-type: mysql
# enabled: true
# connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 #打开慢sql记录和延迟时间
# web-stat-filter:
# url-pattern: /*
# exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
# enabled: true
# stat-view-servlet:
# enabled: true
# login-username: druid
# login-password: druid
cloud:
loadbalancer:
retry:
......@@ -53,8 +52,7 @@ spring:
#Redis
redis:
database: 1
host: r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
password: MMC@2022&REDIS
host: 127.0.0.1
port: 6379
#连接池
lettuce:
......@@ -69,13 +67,25 @@ spring:
#初始化最小
min-idle: 1
#rabbitMQ
#rabbitMQ
rabbitmq:
host: amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.net.mq.amqp.aliyuncs.com
port: 5672
username: MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password: ${RABBITMQ_PASSWORD}
password: RTg3OUMxQzk4NzU0NDQ4RkQ1RDg4MkEzQjY4M0M3MkQxOTM2QkEyNDoxNjUyNDA4NDk0NDg4
virtual-host: /
wx:
sub:
appid: wx5c6a105a0ddca4c5
secret: 96c75255dd26f82f8d55e15b59e101c7
app:
id: wx18b7883acd204278
secret: 28afe74ba373830237a8133a7431ee82
miniprogram-state: trial
env-version: trial
port: user
#eureka eureka.client.register-with-eureka=true
eureka:
instance:
......@@ -104,48 +114,40 @@ mybatis:
configuration:
map-underscore-to-camel-case: true
#feign
feign:
client:
config:
default:
connect-timeout: 3000
read-timeout: 6000
#Okhttp参数配置
httpclient:
enabled: false
okhttp:
enabled: true
hystrix:
enabled: true
hystrix:
command:
default:
execution:
isolation:
thread:
# hystrix 超时时间
timeoutInMilliseconds: 9000
#ribbon-ribbo和hystrix时间取最小的生效,feign和ribbon的超时时间只能选其一生效feign优先级高于ribbon
ribbon:
okhttp:
enabled: true
iuav:
userapp:
url: http://127.0.0.1:35150
url: http://cms-svc:35150
pmsapp:
url: http://127.0.0.1:8099
wx:
sub:
appid: wx5c6a105a0ddca4c5
secret: 96c75255dd26f82f8d55e15b59e101c7
app:
id: wx18b7883acd204278
secret: 28afe74ba373830237a8133a7431ee82
miniprogram-state: trial
env-version: trial
##feign
#feign:
# client:
# config:
# default:
# connect-timeout: 3000
# read-timeout: 6000
# #Okhttp参数配置
# httpclient:
# enabled: false
# okhttp:
# enabled: true
# hystrix:
# enabled: true
#hystrix:
# command:
# default:
# execution:
# isolation:
# thread:
# # hystrix 超时时间
# timeoutInMilliseconds: 9000
##ribbon-ribbo和hystrix时间取最小的生效,feign和ribbon的超时时间只能选其一生效feign优先级高于ribbon
#ribbon:
# okhttp:
# enabled: true
url: http://pms-svc:8099
omsapp:
url: http://localhost:8077/oms/
#mmc:
# appid: 80001
......
......@@ -145,6 +145,8 @@ iuav:
url: http://cms-svc:35150
pmsapp:
url: http://pms-svc:8099
omsapp:
url: https://www.iuav.shop/oms/
#mmc:
# appid: 80001
......@@ -172,4 +174,4 @@ iuav:
# endpoints:
# web:
# exposure:
# include: "*"
\ No newline at end of file
# include: "*"
......@@ -4,29 +4,75 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.csf.release.dao.RequirementsDao">
<resultMap id="listTypeMap" type="com.mmc.csf.release.entity.requirements.RequirementsTypeDO">
<result property="id" column="id"/>
<result property="typeName" column="type_name"/>
<collection property="typeSubclassList" ofType="com.mmc.csf.infomation.vo.RequirementsTypeSubclassVO"
select="selectSubListType" column="{requirementsTypeId=id}">
</collection>
</resultMap>
<select id="selectSubListType" resultType="com.mmc.csf.infomation.vo.RequirementsTypeSubclassVO">
select id, requirements_type_id AS requirementsTypeId, `name`
from requirements_type_subclass
where requirements_type_id = #{requirementsTypeId}
</select>
<insert id="addRequirementsInfo" parameterType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
keyProperty="id" useGeneratedKeys="true">
INSERT INTO `requirements_info`(`requirement_type_id`, `user_account_id`, `publish_name`, `publish_phone`, `require_description`, `province_code`, `city_code`, `district_code`, `create_time`)
VALUES (#{requirementTypeId}, #{userAccountId}, #{publishName}, #{publishPhone}, #{requireDescription}, #{provinceCode}, #{cityCode}, #{districtCode}, NOW());
keyProperty="id" useGeneratedKeys="true">
INSERT INTO requirements_info(requirement_type_id, user_account_id, publish_name, publish_phone,
require_description, province_code, city_code, district_code, create_time,
update_time, task_title, task_start_time, task_end_time, task_address, longitude,
latitude, require_url, publisher_number)
VALUES (#{requirementTypeId}, #{userAccountId}, #{publishName}, #{publishPhone},
#{requireDescription}, #{provinceCode}, #{cityCode}, #{districtCode}, NOW(),
NOW(), #{taskTitle}, #{taskStartTime}, #{taskEndTime}, #{taskAddress}, #{longitude},
#{latitude}, #{requireUrl}, #{publisherNumber});
</insert>
<update id="solveRequire">
update requirements_info set is_solved = 1 where id = #{requirementsInfoId}
update requirements_info
set is_solved = 1
where id = #{requirementsInfoId}
</update>
<update id="removeRequire">
update requirements_info set is_deleted = 1 where id = #{requirementsInfoId}
</update>
<delete id="removeRequire">
delete
from requirements_info
where id = #{requirementsInfoId}
</delete>
<select id="listType" resultType="com.mmc.csf.release.entity.requirements.RequirementsTypeDO">
select id, type_name from requirements_type where is_deleted = 0
select id, type_name
from requirements_type
where is_deleted = 0
</select>
<select id="listTypeReq" resultMap="listTypeMap">
select id, type_name
from requirements_type
where is_deleted = 0
<if test="id!= null ">
and id = #{id}
</if>
</select>
<select id="getRequirementsInfoById" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
select id, requirement_type_id, user_account_id, publish_name, publish_phone, require_description, is_solved as solved, create_time from requirements_info where id = #{id}
select id,
requirement_type_id,
user_account_id,
publish_name,
publish_phone,
require_description,
is_solved as solved,
create_time
from requirements_info
where id = #{id}
</select>
<select id="countListPublishPage" resultType="java.lang.Integer" parameterType="com.mmc.csf.infomation.qo.IndustryCaseQO">
<select id="countListPublishPage" resultType="java.lang.Integer"
parameterType="com.mmc.csf.infomation.qo.IndustryCaseQO">
select count(*) from requirements_info
where is_deleted = 0
<if test="keyword != null">
......@@ -52,20 +98,31 @@
</if>
</select>
<select id="listPublishPage" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO" parameterType="com.mmc.csf.infomation.qo.IndustryCaseQO">
select id,
<select id="listPublishPage" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
parameterType="com.mmc.csf.infomation.qo.IndustryCaseQO">
SELECT
id,
requirement_type_id,
user_account_id,
publish_name,
publish_phone,
require_description,
is_solved as solved,
is_deleted as deleted,
is_solved AS solved,
is_deleted AS deleted,
create_time,
update_time
from requirements_info
where is_deleted = 0
<if test="keyword != null">
update_time,
task_title,
task_start_time,
task_end_time,
task_address,
longitude,
latitude,
require_url
FROM
requirements_info
WHERE
is_deleted = 0
<if test="keyword != null and keyword != '' ">
and (
publish_name like CONCAT("%",#{keyword},"%") or
publish_phone like CONCAT("%",#{keyword},"%")
......@@ -89,4 +146,115 @@
order by create_time desc
limit #{pageNo}, #{pageSize}
</select>
</mapper>
\ No newline at end of file
<select id="findPublish" parameterType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO"
resultType="java.lang.Integer">
SELECT count(*)
FROM requirements_info
WHERE id = #{id}
AND user_account_id = #{userAccountId}
</select>
<update id="updatePublish"
parameterType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
UPDATE requirements_info
<set>
<if test=" requirementTypeId != null and requirementTypeId != '' ">
requirement_type_id = #{requirementTypeId},
</if>
<if test=" userAccountId != null and userAccountId != '' ">
user_account_id = #{userAccountId},
</if>
<if test=" publishName != null and publishName != '' ">
publish_name = #{publishName},
</if>
<if test=" publishPhone != null and publishPhone != '' ">
publish_phone = #{publishPhone},
</if>
<if test=" requireDescription != null and requireDescription != '' ">
require_description = #{requireDescription},
</if>
<if test=" provinceCode != null and provinceCode != '' ">
province_code = #{provinceCode},
</if>
<if test=" cityCode != null and cityCode != '' ">
city_code = #{cityCode},
</if>
<if test=" districtCode != null and districtCode != '' ">
district_code = #{districtCode},
</if>
<if test=" taskTitle != null and taskTitle != '' ">
task_title = #{taskTitle},
</if>
<if test=" taskStartTime != null ">
task_start_time = #{taskStartTime},
</if>
<if test=" taskEndTime != null ">
task_end_time = #{taskEndTime},
</if>
<if test=" taskAddress != null and taskAddress != '' ">
task_address = #{taskAddress},
</if>
<if test=" longitude != null and longitude != '' ">
longitude = #{longitude},
</if>
<if test=" latitude != null and latitude != '' ">
latitude = #{latitude},
</if>
<if test=" requireUrl != null and requireUrl != '' ">
require_url = #{requireUrl},
</if>
update_time=NOW()
</set>
where id = #{id}
</update>
<select id="findPublishCount" resultType="java.lang.Integer">
SELECT count(*)
FROM requirements_info
WHERE id = #{id}
AND user_account_id = #{userAccountId}
</select>
<delete id="requirementsDao">
delete
from requirements_info
where id = #{id}
</delete>
<select id="appPublishList" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
SELECT id,
task_title,
task_start_time,
task_end_time,
task_address,
longitude,
latitude,
require_url,
require_description,
requirement_type_id,
user_account_id
FROM requirements_info
order by create_time desc
</select>
<select id="detailPublish" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
SELECT ri.id,
ri.task_title,
ri.task_start_time,
ri.task_end_time,
ri.task_address,
ri.longitude,
ri.latitude,
ri.require_url,
ri.require_description,
ri.requirement_type_id,
ri.user_account_id,
rt.type_name AS requirementTypeName,
ri.publish_phone,
ri.publisher_number
FROM requirements_info ri
LEFT JOIN requirements_type rt
ON rt.id = ri.requirement_type_id
WHERE ri.id = #{id}
</select>
</mapper>
......@@ -37,3 +37,4 @@ data-filter:
- /release/wechat/mediaCheckAsync
- /release/licence/background/appListOrgPage
- /release/licence/background/webListOrgPage
- /release/requirements/appPublishList
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论