提交 da2b1bc1 作者: xiaowang

合并分支 'develop' 到 'master'

作业服务及飞手培训的课程列表

查看合并请求 !4
name: Build and Push to ACR
on:
push:
branches: [ "develop" ]
env:
REGION_ID: cn-shenzhen
REGISTRY: mmc-registry.cn-shenzhen.cr.aliyuncs.com
NAMESPACE: sharefly
IMAGE: ims
TAG: ${{ github.sha }}
ACR_EE_REGISTRY: mmc-registry.cn-shenzhen.cr.aliyuncs.com
ACR_EE_INSTANCE_ID: cri-yhk5zgfc2v1sia6l
ACR_EE_NAMESPACE: sharefly
ACR_EE_IMAGE: ims
ACR_EE_TAG: ${{ github.sha }}
JAVA_VERSION: '8'
GITLAB_URL: https://oauth2:MjVJKxB7m4tCy7symBzn@git.mmcuav.cn/iuav/ims.git
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
environment: dev
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v1
with:
java-version: ${{env.JAVA_VERSION}}
- name: Login to ACR EE with the AccessKey pair
uses: aliyun/acr-login@v1
with:
login-server: "https://${{ env.ACR_EE_REGISTRY }}"
region-id: "${{ env.REGION_ID }}"
username: "QD--KeBiTeHangKong@1354706964800968"
password: "MMC@2023&ACR"
instance-id: "${{ env.ACR_EE_INSTANCE_ID }}"
- name: Build and push image to ACR EE
run: |
mvn clean package
docker build -t "$ACR_EE_REGISTRY/$ACR_EE_NAMESPACE/$ACR_EE_IMAGE:$TAG" .
docker push "$ACR_EE_REGISTRY/$ACR_EE_NAMESPACE/$ACR_EE_IMAGE:$TAG"
- name: Kustomize Set Image
run: |-
cd kustomization/overlays/dev
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash /dev/stdin 3.8.6
./kustomize edit set image REGISTRY/NAMESPACE/IMAGE:TAG=$REGISTRY/$NAMESPACE/$IMAGE:$TAG
- name: Commit and Push
run: |
git config user.name "Chuck"
git config user.email "Chuck@users.noreply.github.com"
git remote set-url origin "$GITLAB_URL"
git commit -am "generated Image update"
git push origin develop
\ No newline at end of file
FROM openjdk:8-jdk-alpine
#VOLUME ["/tmp","/files","/var/logs/"]
ARG JAVA_OPTS
ENV JAVA_OPTS=$JAVA_OPTS
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
COPY ./release-service/target/release-service-0.0.1-SNAPSHOT.jar ims.jar
EXPOSE 10001
# For Spring-Boot project, use the entrypoint below to reduce Tomcat startup time.
ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar ims.jar
package com.mmc.csf.release.flyer.qo;
import com.mmc.csf.release.model.group.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author LW
* @date 2023/5/17 14:16
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CurriculumQo implements Serializable {
@ApiModelProperty(value = "地域id")
private Integer regionId;
@ApiModelProperty(value = "执照id")
private Integer licenseId;
@ApiModelProperty(value = "技能id")
private Integer flightSkillsId;
@ApiModelProperty(value = "页码", required = true)
@NotNull(message = "页码不能为空", groups = { Page.class })
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true)
@NotNull(message = "每页显示数不能为空", groups = { Page.class })
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
package com.mmc.csf.release.flyer.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/5/17 14:28
* 概要:课程信息
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CurriculumInfoVO implements Serializable {
@ApiModelProperty(value = "课程id")
private Integer id;
@ApiModelProperty(value = "价格")
private BigDecimal price;
@ApiModelProperty(value = "供应商名称")
private String supplierName;
@ApiModelProperty(value = "课程名称")
private String curriculumName;
@ApiModelProperty(value = "课程是否免费 0:免费 1:付费")
private Integer free;
@ApiModelProperty(value = "课程介绍")
private String curriculumDesc;
@ApiModelProperty(value = "课程视频")
private String videoUrl;
}
package com.mmc.csf.release.vo;
package com.mmc.csf.release.flyer.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......
package com.mmc.csf.release.vo;
package com.mmc.csf.release.flyer.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......
package com.mmc.csf.forum.vo;
package com.mmc.csf.release.forum.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......
package com.mmc.csf.forum.vo;
package com.mmc.csf.release.forum.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......
package com.mmc.csf.forum.vo;
package com.mmc.csf.release.forum.vo;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......
package com.mmc.csf.forum.vo;
package com.mmc.csf.release.forum.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......
package com.mmc.csf.release.task.qo;
import com.mmc.csf.release.model.group.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author LW
* @date 2023/5/17 14:16
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TaskServiceQo implements Serializable {
@ApiModelProperty(value = "地域id")
private Integer regionId;
@ApiModelProperty(value = "行业id")
private Integer industryId;
@ApiModelProperty(value = "应用id")
private Integer appTypeId;
@ApiModelProperty(value = "服务名称")
private String inspectionName;
@ApiModelProperty(value = "页码", required = true)
@NotNull(message = "页码不能为空", groups = { Page.class })
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true)
@NotNull(message = "每页显示数不能为空", groups = { Page.class })
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
package com.mmc.csf.release.task.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author LW
* @date 2022/4/22 15:33
* 概要:
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "com.mmc.csf.model.dto.EvaluateInfoVO",description = "评论列表DTO")
public class EvaluateInfoVO implements Serializable {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "内容")
private String content;
@ApiModelProperty(value = "评论图片")
private String contentImgs;
@ApiModelProperty(value = "评论视频")
private String contentVideo;
@ApiModelProperty(value = "星级 0-5")
private Integer star;
@ApiModelProperty(value = "是否带图 0:带图 1:不带图")
private Integer img;
@ApiModelProperty(value = "评价类型:0:好评 1:差评")
private Integer type;
}
package com.mmc.csf.release.task.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mmc.csf.release.model.group.Create;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author Lw
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "com.mmc.csf.model.vo.OrderTaskVO", description = "订单增改VO")
public class OrderTaskVO implements Serializable {
private static final long serialVersionUID = -2965614984473801301L;
@ApiModelProperty(value = "服务id")
@NotNull(message = "服务id不能为空", groups = { Create.class})
private Integer inspectionId;
@ApiModelProperty(value = "industryId")
@NotNull(message = "industryId不能为空", groups = { Create.class })
private Integer industryId;
@ApiModelProperty(value = "服务开始时间", example = "2021-04-09 12:12:12")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
@ApiModelProperty(value = "服务结束时间", example = "2021-04-09 12:12:12")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
@ApiModelProperty(value = "任务描述", example = "0")
@Size(max = 400, message = "备注内容不能超过400个字符", groups = { Create.class})
private String taskDesc;
@ApiModelProperty(value = "图片地址", example = "0")
private List<String> filePath;
@ApiModelProperty(value = "详细地址")
private String taskAddress;
@ApiModelProperty(value = "经度")
private BigDecimal lon;
@ApiModelProperty(value = "纬度")
private BigDecimal lat;
}
package com.mmc.csf.release.task.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Author LW
* @date 2023/5/17 22:07
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TaskServiceDetailVO implements Serializable {
@ApiModelProperty(value = "服务id")
private Integer id;
@ApiModelProperty(value = "服务名称")
private String serviceName;
@ApiModelProperty(value = "服务图片")
private String pictureUrl;
@ApiModelProperty(value = "服务视频")
private String videoUrl;
@ApiModelProperty(value = "服务团队详情海报图")
private String teamPoster;
@ApiModelProperty(value = "评价信息")
private List<EvaluateInfoVO> evaluateInfo;
@ApiModelProperty(value = "评价总数量")
private Integer item;
}
package com.mmc.csf.release.task.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/5/17 14:28
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TaskServiceVO implements Serializable {
@ApiModelProperty(value = "服务id")
private Integer id;
@ApiModelProperty(value = "价格")
private BigDecimal price;
@ApiModelProperty(value = "团队名称")
private String teamName;
@ApiModelProperty(value = "服务名称")
private String serviceName;
}
......@@ -41,6 +41,11 @@
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- <dependency> -->
<!-- <groupId>com.aliyun</groupId> -->
<!-- <artifactId>aliyun-java-sdk-core</artifactId> -->
......
......@@ -2,7 +2,7 @@ package com.mmc.csf.common.util.page;
import java.io.Serializable;
import com.mmc.csf.release.qo.BaseInfoQO;
import com.mmc.csf.release.flyer.qo.BaseInfoQO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......
package com.mmc.csf.common.util.redis;
public class RedisConstant {
/**
* 验证码-key
*/
public final static String VERIFYCODEKEY = "verifyCode";
/**
* 电话号码-key
*/
public final static String PHONENUMKEY = "phoneNum";
/**
* 当天用户量统计-key
*/
public final static String ACTIVE_USER_TOTAL_COUNT_TODAY = "active_user_total_count_today";
/**
* 后台-当天用户量统计-key
*/
public final static String ADMIN_ACTIVE_COUNT_TODAY = "admin_active_count_today";
/**
* 云享飞-当天用户量统计-key
*/
public final static String YXF_ACTIVE_COUNT_TODAY = "yxf_active_count_today";
/**
* 云飞手-当天用户量统计-key
*/
public final static String YFS_ACTIVE_COUNT_TODAY = "yfs_active_count_today";
/**
* 云仓-当天用户量统计-key
*/
public final static String YC_ACTIVE_COUNT_TODAY = "yc_active_count_today";
/**
* 登录信息token前缀
*/
public final static String LOGING_TOKEN_BEFORE = "CLOUD-SHARED-FLIGHT-USERID@";
/**
* token黑名单-key
*
* @param userId
* @return
*/
/**
* 实名认证 redis 的键
*/
public final static String REALNAMEREDISKEY = "realName";
/**
* token失效
*/
public final static String DISABLE_TOKEN = "DISABLE-TOKEN";
/**
* 分片上传的key
*
* @param userId
* @return
*/
public final static String PART_UPLOAD = "UPLOAD_PART_";
/**
* 飞手端-假数据-分页信息-可以
*/
public final static String FLYER_DUMMY_DATA_PAGE = "FLYER_DUMMY_DATA_PAGE";
/**
* token失效列表的key
*/
public final static String DISABLE_TOKEN_LIST = "DISABLE_TOKEN_LIST";
/**
* 无人机城的订单状态
*/
public final static String UAV_MALL_ORDER_STATUS = "UAV_MALL_ORDER_STATUS";
/**
* 无人机城的快递公司编码
*/
public final static String UAV_MALL_EXP_COM = "UAV_MALL_EXP_COM";
/**
* 无人机城的快递状态码
*/
public final static String UAV_MALL_EXP_STATUS = "UAV_MALL_EXP_STATUS";
/**
* 微信access_token
*
* @param userId
* @return
*/
public final static String WX_ACCESS_TOKEN_BEFORE = "WX_ACCESS_TOKEN_";
public final static String REPO_SEND_PAY_MESSAGE = "REPO_ORDER_REMIND_PAY_";
public final static String FLYER_PUBLIC_DEFAULT_NAME = "FLYER_PUBLIC_DEFAULT_NAME";
public final static String EVALUATION = "EVALUATION";
public final static String FLYER_DUMMY_DATA="FLYER_DUMMY_DATA_KEY";
public final static String UAV_DUMMY_DATA="UAV_DUMMY_DATA_KEY";
/**
* tagInfoAllot表的缓存key
*/
public final static String TAGINFOALLOT_QUESTALL = "csf-service-system:tagInfoAllot:questAll";
public static String getDisableTokenKey(String accountId, String roleId, String tokenType) {
StringBuffer key = new StringBuffer();
key.append(RedisConstant.DISABLE_TOKEN);
key.append("_ROLE_");
key.append(roleId);
key.append("_");
key.append(accountId);
return key.toString();
}
/**
* 生成唯一的分片上传key
*
* @param uploadId
* @return
*/
public static String createPartUploadKey(String uploadId) {
StringBuffer key = new StringBuffer();
key.append(uploadId);
return key.toString();
}
/**
* 生成微信api的access_token的key
*/
public static String createWxToken(String wxAppid) {
StringBuffer key = new StringBuffer();
key.append(RedisConstant.WX_ACCESS_TOKEN_BEFORE);
key.append(wxAppid);
return key.toString();
}
/**
* 表单重复提交key
*/
public static String createRepeatKey(String token, String url, String params) {
StringBuffer key = new StringBuffer();
key.append(token);
key.append(url);
key.append(params);
return key.toString();
}
public static String createRepeatKey(String token, String url) {
return RedisConstant.createRepeatKey(token, url, "");
}
/**
* 登录缓存信息
*/
public static String createLoginCacheKey(String tokenType, Integer id) {
StringBuffer key = new StringBuffer();
key.append(tokenType);
key.append("_");
key.append(id);
return key.toString();
}
/**
* 每位账号的的token的key的前缀
*/
public static String tokenPreFix(String tokenType, String roleId) {
StringBuffer key = new StringBuffer();
key.append(tokenType);
key.append("_ROLE_");
key.append(roleId);
key.append("_");
return key.toString();
}
/**
* 每位账号的token保存的key
*/
public static String createLoginTokenKey(String tokenType, String roleId, String accountId) {
StringBuffer key = new StringBuffer();
key.append(RedisConstant.tokenPreFix(tokenType, roleId));
key.append(accountId);
return key.toString();
}
public static String createRepoOrderOver(Integer orderInfoId) {
StringBuffer key = new StringBuffer();
key.append(RedisConstant.REPO_SEND_PAY_MESSAGE);
key.append(orderInfoId);
return key.toString();
}
public static String getLockKey(String userId, String tokenType, String path) {
StringBuffer sb = new StringBuffer();
sb.append(userId);
sb.append("_");
sb.append(tokenType);
sb.append("_");
sb.append(path);
return sb.toString();
}
public static String createInspection(Integer id) {
StringBuffer key = new StringBuffer();
key.append(RedisConstant.EVALUATION);
key.append(id);
return key.toString();
}
public static String accessTokenKey(String clientId, Integer roleId, String grantType) {
StringBuilder key = new StringBuilder();
key.append("OAUTH_");
key.append(clientId);
key.append("_");
key.append(roleId);
key.append("_");
key.append(grantType);
return key.toString();
}
public static String getCompanyChildKey(Integer companyId){
StringBuilder key = new StringBuilder();
key.append("company_cache:");
key.append(companyId);
return key.toString();
}
public static String getXEAccessTokenKey(){
StringBuilder key = new StringBuilder();
key.append("XE_ACCESS_TOKEN");
return key.toString();
}
}
# application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ims-application
namespace: argocd
spec:
project: default # 项目名
source:
repoURL: http://git.mmcuav.cn/iuav/ims.git
targetRevision: HEAD #develop master # 分支名
path: kustomization/overlays/dev # 资源文件路径
destination:
server: https://kubernetes.default.svc # API Server 地址
namespace: dev # 部署应用的命名空间
# 默认情况下每 3 分钟会检测 Git 仓库一次
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
prune: true
apiVersion: v1
kind: ConfigMap
metadata:
name: ims-map
namespace: default
data:
SPRING_PROFILES_ACTIVE: default
apiVersion: apps/v1
kind: Deployment
metadata:
name: ims-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: ims
template:
metadata:
labels:
app: ims
spec:
containers:
- name: ims
image: REGISTRY/NAMESPACE/IMAGE:TAG
resources:
limits:
memory: 2048Mi
cpu: 100m
ports:
- containerPort: 10001
env:
- name: SPRING_PROFILES_ACTIVE
valueFrom:
configMapKeyRef:
name: ims-map
key: SPRING_PROFILES_ACTIVE
\ No newline at end of file
#apiVersion: extensions/v1beta1
#kind: Ingress
#metadata:
# name: pms-ingress
# namespace: default
#spec:
# rules:
# - host: infra.mmcuav.cn
# http:
# paths:
# - backend:
# serviceName: pms-svc
# servicePort: 8081
# path: /
\ No newline at end of file
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
app: ims
resources:
- ./deployment.yaml
- ./service.yaml
- ./configMap.yaml
\ No newline at end of file
apiVersion: v1
kind: Service
metadata:
name: ims-svc
namespace: default
spec:
selector:
app: ims
type: NodePort
ports:
- protocol: TCP
port: 10001
\ No newline at end of file
apiVersion: v1
kind: ConfigMap
metadata:
name: ims-map
data:
SPRING_PROFILES_ACTIVE: dev
\ No newline at end of file
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
#namePrefix: dev-
namespace: dev
commonLabels:
variant: dev
commonAnnotations:
note: This is dev!
patches:
- path: ./configMap.yaml
- path: ./service.yaml
images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly/ims
newTag: 109477f7d1e12814d3d28600cda6c90e3ce66713
apiVersion: v1
kind: Service
metadata:
name: ims-svc
namespace: default
spec:
selector:
app: ims
type: NodePort
ports:
- protocol: TCP
port: 10001
nodePort: 30001
\ No newline at end of file
apiVersion: v1
kind: ConfigMap
metadata:
name: ims-map
data:
SPRING_PROFILES_ACTIVE: prod
\ No newline at end of file
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
namespace: prod
#namePrefix: prod-
commonLabels:
variant: prod
commonAnnotations:
note: This is prod!
patches:
- configMap.yaml
\ No newline at end of file
package com.mmc.csf.release.controller;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.forum.vo.CommentAndReplyVO;
import com.mmc.csf.forum.vo.CommentVO;
import com.mmc.csf.forum.vo.DynamicVO;
import com.mmc.csf.release.forum.vo.CommentAndReplyVO;
import com.mmc.csf.release.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.DynamicVO;
import com.mmc.csf.release.service.DynamicService;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
......
package com.mmc.csf.release.controller;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.flyer.qo.CurriculumQo;
import com.mmc.csf.release.flyer.vo.CurriculumInfoVO;
import com.mmc.csf.release.service.FlyerTrainingService;
import com.mmc.csf.release.vo.DronePilotLicenseVO;
import com.mmc.csf.release.vo.FlightSkillsVO;
import com.mmc.csf.release.vo.RegistrationVO;
import com.mmc.csf.release.flyer.vo.DronePilotLicenseVO;
import com.mmc.csf.release.flyer.vo.FlightSkillsVO;
import com.mmc.csf.release.flyer.vo.RegistrationVO;
import com.mmc.csf.release.task.qo.TaskServiceQo;
import com.mmc.csf.release.task.vo.TaskServiceVO;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
......@@ -45,4 +49,11 @@ public class FlyerTrainingController {
public ResultBody getIndustryFlightSkills() {
return flyerTrainingService.getIndustryFlightSkills();
}
@ApiOperation(value = "课程视频列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = CurriculumInfoVO.class)})
@PostMapping("/queryCurriculumInfoList")
public ResultBody queryCurriculumInfoList(@RequestBody CurriculumQo curriculumQo) {
return ResultBody.success(flyerTrainingService.queryCurriculumInfoList(curriculumQo));
}
}
package com.mmc.csf.release.controller;
import com.mmc.csf.common.util.group.Create;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.forum.vo.DynamicVO;
import com.mmc.csf.release.service.TaskService;
import com.mmc.csf.release.task.qo.TaskServiceQo;
import com.mmc.csf.release.task.vo.OrderTaskVO;
import com.mmc.csf.release.task.vo.TaskServiceDetailVO;
import com.mmc.csf.release.task.vo.TaskServiceVO;
import io.swagger.annotations.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* @Author LW
* @date 2023/5/17 13:55
* 概要:
*/
@Api(tags = {"web-小程序-作业服务-模块"})
@RestController
@RequestMapping("/work")
public class TaskController {
@Resource
private TaskService taskService;
@ApiOperation(value = "作业服务列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = TaskServiceVO.class)})
@PostMapping("/queryTaskServiceList")
public ResultBody queryTaskServiceList(@RequestBody TaskServiceQo taskServiceQo) {
return ResultBody.success(taskService.queryTaskServiceList(taskServiceQo));
}
@ApiOperation(value = "获取服务信息")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = TaskServiceDetailVO.class) })
@GetMapping("selectInspection")
public ResultBody<TaskServiceDetailVO> getInspectionById(@ApiParam(value = "服务ID", required = true) @RequestParam Integer id){
return taskService.getInspectionById(id);
}
@ApiOperation(value = "预约服务")
@ApiResponses({ @ApiResponse(code = 200, message = "OK", response = ResultBody.class) })
@PostMapping("reservationService")
public ResultBody reservationService(@Validated(Create.class) @RequestBody OrderTaskVO orderTaskVO) {
return taskService.reservationService(orderTaskVO);
}
}
package com.mmc.csf.release.dao;
import com.mmc.csf.forum.vo.CommentAndReplyVO;
import com.mmc.csf.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.CommentAndReplyVO;
import com.mmc.csf.release.forum.vo.CommentVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......
package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.CurriculumInfoDO;
import com.mmc.csf.release.entity.FlightSkillsDO;
import com.mmc.csf.release.entity.PilotRegistrationDO;
import com.mmc.csf.release.vo.DronePilotLicenseVO;
import com.mmc.csf.release.flyer.qo.CurriculumQo;
import com.mmc.csf.release.flyer.vo.DronePilotLicenseVO;
import com.mmc.csf.release.task.qo.TaskServiceQo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
......@@ -30,4 +33,14 @@ public interface FlyerTrainingDao {
* @return {@link List}<{@link FlightSkillsDO}>
*/
List<FlightSkillsDO> listIndustryFlightSkills();
int countCurriculumInfoList(CurriculumQo curriculumQo);
/**
* 课程信息列表页面
*
* @param curriculumQo 课程问:
* @return {@link List}<{@link CurriculumInfoDO}>
*/
List<CurriculumInfoDO> listPageCurriculumInfo(CurriculumQo curriculumQo);
}
package com.mmc.csf.release.dao;
import com.mmc.csf.release.entity.InspComtDO;
import com.mmc.csf.release.entity.InspectionDO;
import com.mmc.csf.release.entity.TaskOrderDO;
import com.mmc.csf.release.task.qo.TaskServiceQo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Author LW
* @date 2023/5/17 13:56
* 概要:
*/
@Mapper
public interface TaskDao {
/**
* 计算任务服务列表
*
* @param taskServiceQo 任务服务
* @return int
*/
int countTaskServiceList(TaskServiceQo taskServiceQo);
/**
* 列表页面任务服务
*
* @param taskServiceQo 任务服务
* @return {@link List}<{@link InspectionDO}>
*/
List<InspectionDO> listPageTaskService(TaskServiceQo taskServiceQo);
/**
* 查询服务详情
*
* @param id id
* @return {@link InspectionDO}
*/
InspectionDO selectInspectionById(Integer id);
/**
* 得到行业和检查
*
* @param industryId 行业id
* @param inspectionId 检查id
* @return {@link Integer}
*/
Integer getIndustryAndInspect(Integer industryId, Integer inspectionId);
/**
* 通过id获取检验
*
* @param inspectionId 检查身份证
* @return {@link InspectionDO}
*/
InspectionDO getInspectionById(Integer inspectionId);
/**
* 插入订单任务
*
* @param taskOrderDo 任务订单做
*/
void insertOrderTask(TaskOrderDO taskOrderDo);
/**
* 得到评估信息列表
*
* @param size 大小
* @return {@link List}<{@link InspComtDO}>
*/
List<InspComtDO> getEvaluateInfoList(int size);
}
package com.mmc.csf.release.entity;
import com.mmc.csf.release.flyer.vo.CurriculumInfoVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
import java.io.Serializable;
/**
* 课程基本信息(CurriculumInfoDO)实体类
*
* @author makejava
* @since 2023-05-18 17:37:06
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CurriculumInfoDO implements Serializable {
private static final long serialVersionUID = 140348746605431718L;
private Integer id;
/**
* 课程名称
*/
private String curriculumName;
/**
* 课程供应商(id)
*/
private Integer supplierId;
/**
* 课程价格
*/
private BigDecimal curriculumPrice;
/**
* 课程简介
*/
private String curriculumDesc;
/**
* 课程是否免费 0:是 1:否
*/
private Integer free;
/**
* 执照考试id
*/
private Integer dronePilotLicenseId;
/**
* 飞行服务技能id
*/
private Integer flightSkills;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
/**
* 是否删除 0:否 1:是
*/
private Integer deleted;
private String videoUrl;
public CurriculumInfoVO buildCurriculumInfoVO(){
return CurriculumInfoVO.builder().id(id).curriculumDesc(curriculumDesc).price(curriculumPrice)
.free(free).supplierName("浙江科比特创新科技有限公司").curriculumName(curriculumName)
.videoUrl(videoUrl).build();
}
}
package com.mmc.csf.release.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.io.Serializable;
/**
* 课程视频url地址表(CurriculumVideoDO)实体类
*
* @author makejava
* @since 2023-05-18 17:37:22
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CurriculumVideoDO implements Serializable {
private static final long serialVersionUID = -50625092373872063L;
private Integer id;
private Integer curriculumInfoId;
/**
* 课程url地址
*/
private String curriculumUrl;
private Date updateTime;
private Integer deleted;
}
package com.mmc.csf.release.entity;
import com.mmc.csf.release.vo.FlightSkillsVO;
import com.mmc.csf.release.flyer.vo.FlightSkillsVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.mmc.csf.release.entity;
import com.mmc.csf.forum.vo.DynamicVO;
import com.mmc.csf.release.forum.vo.DynamicVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......
package com.mmc.csf.release.entity;
import com.mmc.csf.release.task.vo.EvaluateInfoVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.io.Serializable;
/**
* 评论表(InspComtDO)实体类
*
* @author makejava
* @since 2023-05-18 14:32:05
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InspComtDO implements Serializable {
private static final long serialVersionUID = 296479156881845974L;
private Integer id;
/**
* 头像
*/
private String userImg;
/**
* 昵称
*/
private String nickName;
/**
* 评价内容
*/
private String content;
/**
* 评价图片集合"1.jpg,2.jpg"使用逗号隔开
*/
private String contentImgs;
/**
* 评价视频
*/
private String contentVideo;
/**
* 评价星级
*/
private Integer star;
/**
* 关键字集合"深圳市,广州市,长沙市,"使用逗号隔开
*/
private String tags;
/**
* 是否带图 0:带图 1:不带图
*/
private Integer isImg;
/**
* 评价类型:0:好评 1:差评
*/
private Integer type;
/**
* 创建时间
*/
private Date createTime;
public EvaluateInfoVO buildEvaluateInfoVO() {
return EvaluateInfoVO.builder()
.id(this.id)
.content(this.content)
.contentImgs(this.contentImgs)
.contentVideo(this.contentVideo)
.star(this.star)
.type(this.type)
.build();
}
}
package com.mmc.csf.release.entity;
import com.mmc.csf.release.task.vo.TaskServiceDetailVO;
import com.mmc.csf.release.task.vo.TaskServiceVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
import java.io.Serializable;
/**
* 巡检管理(InspectionDO)实体类
*
* @author makejava
* @since 2023-05-17 17:36:15
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class InspectionDO implements Serializable {
private static final long serialVersionUID = 735206174138687828L;
private Integer id;
/**
* 服务名称
*/
private String name;
/**
* 服务亮点
*/
private String lightSpot;
/**
* 0飞行服务,1个人服务,2设备售卖,3设备租赁,4设备返祖
*/
private Integer serviceType;
/**
* 视频地址
*/
private String video;
/**
* 是否限时活动
*/
private Integer limitActive;
/**
* 作业类型
*/
private Integer workTypeId;
private Date updateTime;
private Date addTime;
/**
* 是否删除 0 未删除 1 删除
*/
private Integer isDel;
private String number;
private Integer sort;
/**
* 图片地址
*/
private String image;
/**
* 上架1 下架0
*/
private Integer isShelf;
/**
* 富文本内容
*/
private String content;
/**
* 服务领取数量(下单数量)
*/
private Integer orderNum;
/**
* 小卡片地址
*/
private String cardImg;
/**
* 手动设置领取服务数量
*/
private Integer fakeNum;
/**
* 服务编码
*/
private Integer isShowCode;
/**
* 是否用于生成假定单
*/
private Integer isFake;
/**
* 应用标签
*/
private Integer appTypeId;
/**
* 供应商的id
*/
private Integer supplierId;
/**
* 价格
*/
private BigDecimal price;
public TaskServiceVO buildTaskService() {
return TaskServiceVO.builder().serviceName(name).teamName("浙江科比特创新科技有限公司").price(price).id(id).build();
}
public TaskServiceDetailVO buildTaskServiceDetailVO(){
return TaskServiceDetailVO.builder().serviceName(name).id(id).teamPoster("https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/d755a2ee-ffe4-4c2c-8a8b-afcf447ad2ac.jpg")
.pictureUrl(image).videoUrl(video).build();
}
}
package com.mmc.csf.release.entity;
import com.mmc.csf.release.vo.RegistrationVO;
import com.mmc.csf.release.flyer.vo.RegistrationVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
......
package com.mmc.csf.release.entity;
import com.mmc.csf.release.task.vo.OrderTaskVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
import java.io.Serializable;
/**
* 任务订单做
* (TaskOrderDO)实体类
*
* @author makejava
* @date 2023/05/18
* @since 2023-05-18 10:58:17
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TaskOrderDO implements Serializable {
private static final long serialVersionUID = 174802281244031352L;
private Integer id;
/**
* 订单编号
*/
private String orderNo;
/**
* 订单名称
*/
private String orderName;
/**
* 服务id
*/
private Integer inspectionId;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 地址
*/
private String taskAddress;
/**
* 订单状态
*/
private Integer orderStatus;
/**
* 图片地址
*/
private String imageUrl;
/**
* 纬度
*/
private BigDecimal lat;
/**
* 经度
*/
private BigDecimal lon;
/**
* 下单人id
*/
private Integer userAccountId;
private Date createTime;
private Date updateTime;
public TaskOrderDO(OrderTaskVO orderTaskVO) {
this.inspectionId = orderTaskVO.getInspectionId();
this.taskAddress = orderTaskVO.getTaskAddress();
this.startTime = orderTaskVO.getStartTime();
this.endTime = orderTaskVO.getEndTime();
this.lon = orderTaskVO.getLon();
this.lat = orderTaskVO.getLat();
}
public void defaultInfo() {
if (orderStatus == null) {
orderStatus = 0;
}
}
}
......@@ -2,9 +2,9 @@ package com.mmc.csf.release.service;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.forum.vo.CommentAndReplyVO;
import com.mmc.csf.forum.vo.CommentVO;
import com.mmc.csf.forum.vo.DynamicVO;
import com.mmc.csf.release.forum.vo.CommentAndReplyVO;
import com.mmc.csf.release.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.DynamicVO;
import java.util.List;
......
package com.mmc.csf.release.service;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.vo.RegistrationVO;
import com.mmc.csf.release.flyer.qo.CurriculumQo;
import com.mmc.csf.release.flyer.vo.RegistrationVO;
/**
* @Author LW
......@@ -31,4 +33,12 @@ public interface FlyerTrainingService {
* @return {@link ResultBody}
*/
ResultBody getIndustryFlightSkills();
/**
* 查询任务服务列表
*
* @param taskServiceQo 任务服务问:
* @return {@link Object}
*/
PageResult queryCurriculumInfoList(CurriculumQo taskServiceQo);
}
package com.mmc.csf.release.service;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.task.qo.TaskServiceQo;
import com.mmc.csf.release.task.vo.OrderTaskVO;
import com.mmc.csf.release.task.vo.TaskServiceDetailVO;
/**
* @Author LW
* @date 2023/5/17 13:56
* 概要:
*/
public interface TaskService {
/**
* 查询任务服务列表
*
* @param taskServiceQo 任务服务
* @return {@link ResultBody}
*/
PageResult queryTaskServiceList(TaskServiceQo taskServiceQo);
/**
* 通过id获取服务详情
*
* @param id id
* @return {@link ResultBody}<{@link TaskServiceDetailVO}>
*/
ResultBody<TaskServiceDetailVO> getInspectionById(Integer id);
/**
* 预订服务
*
* @param orderTaskVO 订单任务
* @return {@link ResultBody}
*/
ResultBody reservationService(OrderTaskVO orderTaskVO);
}
......@@ -2,10 +2,10 @@ package com.mmc.csf.release.service.impl;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.forum.vo.CommentAndReplyVO;
import com.mmc.csf.forum.vo.CommentVO;
import com.mmc.csf.forum.vo.DynamicVO;
import com.mmc.csf.forum.vo.MediaVO;
import com.mmc.csf.release.forum.vo.CommentAndReplyVO;
import com.mmc.csf.release.forum.vo.CommentVO;
import com.mmc.csf.release.forum.vo.DynamicVO;
import com.mmc.csf.release.forum.vo.MediaVO;
import com.mmc.csf.release.dao.CommentDAO;
import com.mmc.csf.release.dao.DynamicDAO;
import com.mmc.csf.release.dao.LikeDAO;
......
package com.mmc.csf.release.service.impl;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.release.dao.FlyerTrainingDao;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.release.entity.CurriculumInfoDO;
import com.mmc.csf.release.entity.FlightSkillsDO;
import com.mmc.csf.release.entity.InspectionDO;
import com.mmc.csf.release.entity.PilotRegistrationDO;
import com.mmc.csf.release.flyer.qo.CurriculumQo;
import com.mmc.csf.release.flyer.vo.CurriculumInfoVO;
import com.mmc.csf.release.service.FlyerTrainingService;
import com.mmc.csf.release.vo.DronePilotLicenseVO;
import com.mmc.csf.release.vo.RegistrationVO;
import com.mmc.csf.release.flyer.vo.DronePilotLicenseVO;
import com.mmc.csf.release.flyer.vo.RegistrationVO;
import com.mmc.csf.release.task.vo.TaskServiceVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
......@@ -70,4 +76,21 @@ public class FlyerTrainingServiceImpl implements FlyerTrainingService {
return ResultBody.success(flightSkillsList.stream()
.map(FlightSkillsDO::buildFlightSkillsVO).collect(Collectors.toList()));
}
@Override
public PageResult queryCurriculumInfoList(CurriculumQo curriculumQo) {
Integer SZ = 440300;
if (curriculumQo.getRegionId() != null && !curriculumQo.getRegionId().equals(SZ)) {
return PageResult.buildPage(curriculumQo.getPageNo(), curriculumQo.getPageSize(), 0);
}
int count = flyerTrainingDao.countCurriculumInfoList(curriculumQo);
if (count == 0) {
return PageResult.buildPage(curriculumQo.getPageNo(), curriculumQo.getPageSize(), count);
}
Integer pageNo = curriculumQo.getPageNo();
curriculumQo.buildCurrentPage();
List<CurriculumInfoDO> curriculumList = flyerTrainingDao.listPageCurriculumInfo(curriculumQo);
List<CurriculumInfoVO> list = curriculumList.stream().map(CurriculumInfoDO::buildCurriculumInfoVO).collect(Collectors.toList());
return PageResult.buildPage(pageNo, curriculumQo.getPageSize(), count, list);
}
}
package com.mmc.csf.release.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.mmc.csf.common.util.math.CodeUtil;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.redis.RedisConstant;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.common.util.web.ResultEnum;
import com.mmc.csf.release.dao.TaskDao;
import com.mmc.csf.release.entity.InspComtDO;
import com.mmc.csf.release.entity.InspectionDO;
import com.mmc.csf.release.entity.TaskOrderDO;
import com.mmc.csf.release.service.TaskService;
import com.mmc.csf.release.task.qo.TaskServiceQo;
import com.mmc.csf.release.task.vo.OrderTaskVO;
import com.mmc.csf.release.task.vo.TaskServiceDetailVO;
import com.mmc.csf.release.task.vo.TaskServiceVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* @Author LW
* @date 2023/5/17 13:56
* 概要:作业服务实现层
*/
@Service
public class TaskServiceImpl implements TaskService {
@Resource
private TaskDao taskDao;
@Autowired
private RedisTemplate redisTemplate;
@Override
public PageResult queryTaskServiceList(TaskServiceQo taskServiceQo) {
Integer SZ = 440300;
if (taskServiceQo.getRegionId() != null && taskServiceQo.getRegionId().equals(SZ)) {
return PageResult.buildPage(taskServiceQo.getPageNo(), taskServiceQo.getPageSize(), 0);
}
int count = taskDao.countTaskServiceList(taskServiceQo);
if (count == 0) {
return PageResult.buildPage(taskServiceQo.getPageNo(), taskServiceQo.getPageSize(), count);
}
Integer pageNo = taskServiceQo.getPageNo();
taskServiceQo.buildCurrentPage();
List<InspectionDO> inspectionList = taskDao.listPageTaskService(taskServiceQo);
List<TaskServiceVO> list = inspectionList.stream().map(InspectionDO::buildTaskService).collect(Collectors.toList());
return PageResult.buildPage(pageNo, taskServiceQo.getPageSize(), count, list);
}
@Override
public ResultBody getInspectionById(Integer id) {
InspectionDO inspectionDO = taskDao.selectInspectionById(id);
if (inspectionDO == null) {
return ResultBody.error("作业服务不存在");
}
TaskServiceDetailVO taskServiceDetailVO = inspectionDO.buildTaskServiceDetailVO();
String key = RedisConstant.createInspection(id);
Boolean isExist = redisTemplate.hasKey(key);
if (!isExist) {
// 获取评论
int size = (int) (100 * Math.random() + 98);
List<InspComtDO> evaluateInfoList = taskDao.getEvaluateInfoList(size);
String toJSONString = JSONObject.toJSONString(evaluateInfoList);
redisTemplate.opsForValue().set(key,toJSONString ,2L, TimeUnit.DAYS);
taskServiceDetailVO.setEvaluateInfo(evaluateInfoList.stream().map(InspComtDO::buildEvaluateInfoVO).collect(Collectors.toList()));
taskServiceDetailVO.setItem(evaluateInfoList.size());
}else {
String listStr = (String) redisTemplate.opsForValue().get(key);
List<InspComtDO> array = JSONArray.parseArray(listStr, InspComtDO.class);
taskServiceDetailVO.setEvaluateInfo(array.stream().map(InspComtDO::buildEvaluateInfoVO).collect(Collectors.toList()));
taskServiceDetailVO.setItem(array.size());
}
return ResultBody.success(taskServiceDetailVO);
}
@Override
public ResultBody reservationService(OrderTaskVO orderTaskVO) {
Integer count = taskDao.getIndustryAndInspect(orderTaskVO.getIndustryId(), orderTaskVO.getInspectionId());
if (count == 0 ) {
return ResultBody.error(ResultEnum.INSPECTION_NOT_EXIST);
}
InspectionDO inspectionDO = taskDao.getInspectionById(orderTaskVO.getInspectionId());
if (inspectionDO == null) {
return ResultBody.error(ResultEnum.INSPECTION_NOT_EXIST);
}
TaskOrderDO taskOrderDo = new TaskOrderDO(orderTaskVO);
if (CollectionUtils.isNotEmpty(orderTaskVO.getFilePath())){
taskOrderDo.setImageUrl(String.join(",",orderTaskVO.getFilePath()));
}
taskOrderDo.setUserAccountId(1);
taskOrderDo.defaultInfo();
taskOrderDo.setOrderNo(CodeUtil.createOrderTaskNO());
taskOrderDo.setOrderName(inspectionDO.getName());
taskDao.insertOrderTask(taskOrderDo);
return ResultBody.success();
}
}
......@@ -51,8 +51,8 @@ spring:
#Redis
redis:
database: 0
host: 119.23.248.181
password: mmc@redis123
host: r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
password: MMC@2022&REDIS
port: 6379
#连接池
lettuce:
......
#Application
server:
port: 10001
servlet:
context-path: /release
#spring
spring:
application:
name: release
#Database
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://rm-wz9dd796t4j1giz6t.mysql.rds.aliyuncs.com:3306/iuav_ims?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: tmj
password: MMC@2022&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
cloud:
loadbalancer:
retry:
enabled: true
#Redis
redis:
database: 0
host: 119.23.248.181
password: mmc@redis123
port: 6379
#连接池
lettuce:
shutdown-timeout: 1000 # 关闭超时时间-ms
pool:
#最大连接个数
max-active: 30
#等待时间-ms
max-wait: 1000ms
#最大空闲
max-idle: 8
#初始化最小
min-idle: 1
#rabbitMQ
rabbitmq:
host: 119.23.248.181
port: 5672
username: admin
password: mmc123456
virtual-host: /
listener:
simple:
#acknowledge-mode: manual #设置确认模式手工确认
concurrency: 3 #消费者最小数量
max-concurrency: 10 # 消费者最大数量
# 一般消费者自动签收模式下可以添加下面配置,用于消费抛出异常后进行消息重新投递设置
retry:
enabled: true #是否开启消费者重试(为false时关闭消费者重试)
max-attempts: 3 # 最大重试重新投递消息次数
initial-interval: 900s #重试重新投递消息间隔时间(单位秒)
default-requeue-rejected: false #重试次数超过上面的设置之后是否丢弃(消费者listener抛出异常,是否重回队列,默认true:重回队列, false为不重回队列(结合死信交换机))
#eureka eureka.client.register-with-eureka=true
eureka:
instance:
prefer-ip-address: true
ip-address: 127.0.0.1
instance-id: ${eureka.instance.ip-address}:${server.port}@${random.int}
status-page-url: http://${eureka.instance.ip-address}:${server.port}${server.servlet.context-path}/swagger-ui.html
client:
fetch-registry: true
service-url:
defaultZone: http://edmin:sharefly1200@127.0.0.1:20080/eureka/
#logging
logging:
level:
com:
mmc:
csf: DEBUG
#mybatis
mybatis:
executor-type: simple
mapper-locations: classpath:mapper/**/*.xml
type-aliases-package: com.mmc.csf
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
#mmc:
# appid: 80001
# url: http://121.37.224.147
# companycode: MMC
#
##logstash服务器地址
#logstash:
# host: 10.86.210.18
##logstash端口
# port: 8084
#
#
#wechat:
# sub:
# appid: wx5c6a105a0ddca4c5
# secret: 96c75255dd26f82f8d55e15b59e101c7
#
#rabbitmq:
# enabled: false
# exchange: REPOORDER_WX_API_DIRECT_DEV
#
## 查看健康情况-开发分支配置则可-其余分支请勿配置
#management:
# endpoints:
# web:
# exposure:
# include: "*"
\ No newline at end of file
spring:
profiles:
active: dev
active: test
---
spring:
profiles: dev
---
spring:
......
......@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.csf.flyer.dao.FlyerTrainingDao">
<mapper namespace="com.mmc.csf.release.dao.FlyerTrainingDao">
<insert id="insertPilotRegistrationInfo" parameterType="com.mmc.csf.release.entity.PilotRegistrationDO"
useGeneratedKeys="true" keyProperty="id">
......@@ -11,7 +11,7 @@
VALUES (#{id}, #{applyUserId}, #{name}, #{city}, #{telephone}, #{drivingLicense}, #{province}, #{uavLicense},
#{industryAppAuth}, #{remark})
</insert>
<select id="selectAllLicenses" resultType="com.mmc.csf.release.vo.DronePilotLicenseVO">
<select id="selectAllLicenses" resultType="com.mmc.csf.release.flyer.vo.DronePilotLicenseVO">
select id,
parent_id,
license_type,
......@@ -25,4 +25,43 @@
skills_name
from flight_skills
</select>
<select id="countCurriculumInfoList" resultType="java.lang.Integer">
SELECT
count(*)
FROM
curriculum_info ci INNER JOIN curriculum_video cv ON ci.id = cv.curriculum_info_id
<where>
and ci.is_deleted = 0
<if test="licenseId != null">
and ci.drone_pilot_license_id = #{licenseId}
</if>
<if test="flightSkillsId != null">
and ci.flight_skills = #{flightSkillsId}
</if>
</where>
</select>
<select id="listPageCurriculumInfo" resultType="com.mmc.csf.release.entity.CurriculumInfoDO">
SELECT
ci.id,
ci.curriculum_name,
ci.supplier_id,
ci.curriculum_price,
ci.curriculum_desc,
ci.is_free free,
ci.drone_pilot_license_id,
ci.flight_skills,
cv.curriculum_url videoUrl
from curriculum_info ci INNER JOIN curriculum_video cv ON ci.id = cv.curriculum_info_id
<where>
and ci.is_deleted = 0
<if test="licenseId != null">
and drone_pilot_license_id = #{licenseId}
</if>
<if test="flightSkillsId != null">
and flight_skills = #{flightSkillsId}
</if>
</where>
order by ci.create_time desc
LIMIT #{pageNo},#{pageSize}
</select>
</mapper>
\ No newline at end of file
......@@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.csf.release.dao.CommentDAO">
<insert id="insertComment" parameterType="com.mmc.csf.forum.vo.CommentVO">
<insert id="insertComment" parameterType="com.mmc.csf.release.forum.vo.CommentVO">
INSERT INTO forum_comment(user_id, dynamic_id, content)
VALUES (#{userId}, #{dynamicId}, #{content})
</insert>
......@@ -22,7 +22,7 @@
<delete id="deleteCommentsByDynamic" parameterType="int">
DELETE FROM forum_comment WHERE dynamic_id = #{dynamicId}
</delete>
<select id="selectCommentList" resultType="com.mmc.csf.forum.vo.CommentAndReplyVO">
<select id="selectCommentList" resultType="com.mmc.csf.release.forum.vo.CommentAndReplyVO">
select id,
parent_id,
user_id,
......@@ -32,7 +32,7 @@
from forum_comment
where dynamic_id = #{dynamicId} and is_deleted = 0
</select>
<select id="selectSubCommentList" resultType="com.mmc.csf.forum.vo.CommentVO">
<select id="selectSubCommentList" resultType="com.mmc.csf.release.forum.vo.CommentVO">
select id,
parent_id,
user_id,
......
<?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.mmc.csf.release.dao.TaskDao">
<insert id="insertOrderTask" useGeneratedKeys="true"
keyProperty="id" parameterType="com.mmc.csf.release.entity.TaskOrderDO">
insert into task_order
(user_account_id, inspection_id, order_no, order_name, task_address,
start_time, end_time, order_status, lon, lat,image_url)
values (#{userAccountId}, #{inspectionId}, #{orderNo}, #{orderName}, #{taskAddress},
#{startTime}, #{endTime}, #{orderStatus}, #{lon}, #{lat},#{imageUrl})
</insert>
<select id="countTaskServiceList" resultType="java.lang.Integer">
SELECT
count(*)
FROM
industry ind
INNER JOIN industry_inspection ii ON ind.id = ii.industry_id
INNER JOIN inspection ins ON ii.inspection_id = ins.id
<where>
and ins.is_del = 0
<if test="inspectionName != null">
and ins.name like concat('%',#{inspectionName},'%')
</if>
<if test="industryId != null">
and ii.industry_id = #{industryId}
</if>
<if test="appTypeId != null">
and ins.app_type_id = #{appTypeId}
</if>
</where>
</select>
<select id="listPageTaskService" resultType="com.mmc.csf.release.entity.InspectionDO">
SELECT
ins.`name`,
ins.id,
ins.price
FROM
industry ind
INNER JOIN industry_inspection ii ON ind.id = ii.industry_id
INNER JOIN inspection ins ON ii.inspection_id = ins.id
<where>
and ins.is_del = 0
<if test="inspectionName != null">
and ins.name like concat('%',#{inspectionName},'%')
</if>
<if test="industryId != null">
and ii.industry_id = #{industryId}
</if>
<if test="appTypeId != null">
and ins.app_type_id = #{appTypeId}
</if>
</where>
ORDER BY ins.add_time desc
LIMIT #{pageNo},#{pageSize}
</select>
<select id="selectInspectionById" resultType="com.mmc.csf.release.entity.InspectionDO">
select `name`,
id,
video,
image
from inspection
where id = #{id}
</select>
<select id="getIndustryAndInspect" resultType="java.lang.Integer">
select count(*)
from industry_inspection
where industry_id = #{industryId}
and inspection_id = #{inspectionId}
</select>
<select id="getInspectionById" resultType="com.mmc.csf.release.entity.InspectionDO">
select i.id,
i.name,
i.service_type,
i.limit_active,
i.work_type_id,
i.light_spot,
i.number,
i.video,
i.image,
i.sort,
i.is_shelf,
i.content,
i.order_num,
i.is_del,
i.fake_num,
i.card_img,
i.is_show_code
from inspection i
where i.is_del = 0
and i.id = #{id}
order by i.sort
ASC
</select>
<select id="getEvaluateInfoList" resultType="com.mmc.csf.release.entity.InspComtDO">
SELECT id,
content,
content_imgs,
content_video,
star,
`type`,
create_time
FROM insp_comt
ORDER BY RAND() LIMIT #{size}
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论