7 changed files with 199 additions and 2 deletions
@ -1,4 +1,42 @@ |
|||||
package com.ccsens.form.api; |
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 { |
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