7 changed files with 199 additions and 2 deletions
@ -1,4 +1,42 @@ |
|||
package com.ccsens.form.api; |
|||
|
|||
import com.ccsens.cloudutil.annotation.MustLogin; |
|||
import com.ccsens.form.bean.dto.FormDto; |
|||
import com.ccsens.form.bean.dto.WriteDto; |
|||
import com.ccsens.form.bean.vo.FormVo; |
|||
import com.ccsens.form.service.IWriteService; |
|||
import com.ccsens.util.JsonResponse; |
|||
import com.ccsens.util.bean.dto.QueryDto; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import io.swagger.annotations.ApiParam; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestMethod; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Slf4j |
|||
@Api(tags = "组件相关api" , description = "") |
|||
@RestController |
|||
@RequestMapping("/write") |
|||
public class WriteController { |
|||
@Resource |
|||
private IWriteService writeService; |
|||
|
|||
@MustLogin |
|||
@ApiOperation(value = "填写表单提交", notes = "zy:查询表单的基本信息,组件信息,及当前用户填写的信息") |
|||
@RequestMapping(value = "/submit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
|||
public JsonResponse submitForm(@ApiParam @Validated @RequestBody QueryDto<WriteDto.SubmitWriteForm> params) { |
|||
log.info("填写表单提交:{}",params); |
|||
writeService.submitForm(params); |
|||
log.info("填写表单提交成功"); |
|||
return JsonResponse.newInstance().ok(); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,39 @@ |
|||
package com.ccsens.form.bean.dto; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Data |
|||
public class WriteDto { |
|||
|
|||
@Data |
|||
@ApiModel("提交填写的表单") |
|||
public static class SubmitWriteForm{ |
|||
@ApiModelProperty("表单id") |
|||
private Long formId; |
|||
@ApiModelProperty("表单内每个组件的信息") |
|||
private List<ModuleWrite> moduleList; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("表单内每个组件填写的信息") |
|||
public static class ModuleWrite{ |
|||
@ApiModelProperty("表单内的组件id") |
|||
private Long formModuleId; |
|||
@ApiModelProperty("该组件的答案") |
|||
private List<ModuleAnswer> answerList; |
|||
} |
|||
|
|||
@Data |
|||
@ApiModel("组件内的答案") |
|||
public static class ModuleAnswer{ |
|||
@ApiModelProperty("答案或选项的key") |
|||
private String answer; |
|||
} |
|||
} |
@ -0,0 +1,15 @@ |
|||
package com.ccsens.form.service; |
|||
|
|||
import com.ccsens.form.bean.dto.WriteDto; |
|||
import com.ccsens.util.bean.dto.QueryDto; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
public interface IWriteService { |
|||
/** |
|||
* 填写表单后提交 |
|||
* @param params ok |
|||
*/ |
|||
void submitForm(QueryDto<WriteDto.SubmitWriteForm> params); |
|||
} |
@ -0,0 +1,84 @@ |
|||
package com.ccsens.form.service; |
|||
|
|||
import cn.hutool.core.collection.CollectionUtil; |
|||
import cn.hutool.core.lang.Snowflake; |
|||
import com.ccsens.form.bean.dto.WriteDto; |
|||
import com.ccsens.form.bean.po.FormUser; |
|||
import com.ccsens.form.bean.po.FormUserExample; |
|||
import com.ccsens.form.bean.po.FormWrite; |
|||
import com.ccsens.form.persist.mapper.FormUserMapper; |
|||
import com.ccsens.form.persist.mapper.FormWriteMapper; |
|||
import com.ccsens.util.CodeEnum; |
|||
import com.ccsens.util.bean.dto.QueryDto; |
|||
import com.ccsens.util.exception.BaseException; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Propagation; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author 逗 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
|||
public class WriteService implements IWriteService{ |
|||
@Resource |
|||
private FormWriteMapper formWriteMapper; |
|||
@Resource |
|||
private FormUserMapper formUserMapper; |
|||
@Resource |
|||
private Snowflake snowflake; |
|||
|
|||
@Override |
|||
public void submitForm(QueryDto<WriteDto.SubmitWriteForm> params) { |
|||
WriteDto.SubmitWriteForm submitWriteForm = params.getParam(); |
|||
//查找该用户是否有填写信息
|
|||
FormUser formUser; |
|||
FormUserExample formUserExample = new FormUserExample(); |
|||
formUserExample.createCriteria().andFormIdEqualTo(submitWriteForm.getFormId()).andUserIdEqualTo(params.getUserId()); |
|||
List<FormUser> formUserList = formUserMapper.selectByExample(formUserExample); |
|||
if(CollectionUtil.isNotEmpty(formUserList)){ |
|||
formUser = formUserList.get(0); |
|||
if(formUser.getSubmitStatus() == 1){ |
|||
//如果有且状态为已提交,则不能再次提交
|
|||
throw new BaseException(CodeEnum.ALREADY_UPLOAD_FORM); |
|||
}else { |
|||
//如果状态为未提交。则将状态改为已提交
|
|||
formUser.setSubmitStatus((byte) 1); |
|||
formUser.setOperator(params.getUserId()); |
|||
formUserMapper.updateByPrimaryKeySelective(formUser); |
|||
} |
|||
}else { |
|||
//如果没有,新建用户与表单的关联关心,状态为已提交
|
|||
formUser = new FormUser(); |
|||
formUser.setId(snowflake.nextId()); |
|||
formUser.setFormId(submitWriteForm.getFormId()); |
|||
formUser.setUserId(params.getUserId()); |
|||
formUser.setUserName(params.getUserName()); |
|||
formUser.setAvatarUrl(params.getAvatarUrl()); |
|||
formUser.setSubmitStatus((byte) 1); |
|||
formUser.setOperator(params.getUserId()); |
|||
formUserMapper.insertSelective(formUser); |
|||
} |
|||
//保存填写的答案信息
|
|||
if(CollectionUtil.isNotEmpty(submitWriteForm.getModuleList())){ |
|||
submitWriteForm.getModuleList().forEach(moduleWrite -> { |
|||
if(CollectionUtil.isNotEmpty(moduleWrite.getAnswerList())){ |
|||
moduleWrite.getAnswerList().forEach(moduleAnswer -> { |
|||
FormWrite formWrite = new FormWrite(); |
|||
formWrite.setId(snowflake.nextId()); |
|||
formWrite.setFormUserId(formUser.getId()); |
|||
formWrite.setFormModuleId(moduleWrite.getFormModuleId()); |
|||
formWrite.setAnswer(moduleAnswer.getAnswer()); |
|||
formWrite.setOperator(params.getUserId()); |
|||
formWriteMapper.insertSelective(formWrite); |
|||
}); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue