zhizhi wu 6 years ago
parent
commit
cbf0c1a41c
  1. 28
      cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/PluginVo.java
  2. 12
      cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java
  3. 41
      mt/src/main/java/com/ccsens/mt/api/SigninController.java
  4. 12
      mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOther.java
  5. 48
      mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOtherExample.java
  6. 32
      mt/src/main/java/com/ccsens/mt/bean/vo/SigninVo.java
  7. 8
      mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninBasicDao.java
  8. 8
      mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninOtherDao.java
  9. 2
      mt/src/main/java/com/ccsens/mt/service/ISigninService.java
  10. 75
      mt/src/main/java/com/ccsens/mt/service/SigninService.java
  11. 28
      mt/src/main/resources/mapper_raw/MtSigninOtherMapper.xml
  12. 19
      tall/src/main/java/com/ccsens/tall/bean/vo/PluginVo.java
  13. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/ProPluginSigninDao.java
  14. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/ProPluginSigninFuzzyDao.java
  15. 8
      tall/src/main/java/com/ccsens/tall/persist/dao/SigninFieldDao.java
  16. 2
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  17. 2
      tall/src/main/java/com/ccsens/tall/service/ISysPluginService.java
  18. 1
      tall/src/main/java/com/ccsens/tall/service/IWbsSubSheetService.java
  19. 45
      tall/src/main/java/com/ccsens/tall/service/SysPluginService.java
  20. 53
      tall/src/main/java/com/ccsens/tall/service/UserService.java
  21. 166
      tall/src/main/java/com/ccsens/tall/service/WbsSubSheetService.java
  22. 12
      tall/src/main/java/com/ccsens/tall/web/PluginController.java
  23. 1
      util/src/main/java/com/ccsens/util/CodeEnum.java
  24. 860
      util/src/main/java/com/ccsens/util/WechatUtil.java
  25. 2
      util/src/main/java/com/ccsens/util/WordToJpgUtil.java
  26. 8
      util/src/main/java/com/ccsens/util/wx/WxXcxUtil.java

28
cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/PluginVo.java

@ -0,0 +1,28 @@
package com.ccsens.cloudutil.bean.tall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PluginVo {
@ApiModel
@Data
public static class PluginSignField{
@ApiModelProperty("变量名")
private String name;
@ApiModelProperty("展示名")
private String description;
@ApiModelProperty("类型 0文本 1文本框 2单选 3多选")
private int type;
@ApiModelProperty("类型值(文本,单选,多选,展示的内容 例:{\"1\":\"男\",\"2\":\"女\"},)")
private String fieldValue;
@ApiModelProperty("正则表达式")
private String format;
@ApiModelProperty("是否必填")
private int isRequired;
@ApiModelProperty("是否支持模糊查询")
private int isFuzzy;
}
}

12
cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java

@ -5,6 +5,7 @@ import com.ccsens.cloudutil.bean.tall.dto.LogDto;
import com.ccsens.cloudutil.bean.tall.dto.MemberRoleDto; import com.ccsens.cloudutil.bean.tall.dto.MemberRoleDto;
import com.ccsens.cloudutil.bean.tall.dto.UserDto; import com.ccsens.cloudutil.bean.tall.dto.UserDto;
import com.ccsens.cloudutil.bean.tall.vo.MemberVo; import com.ccsens.cloudutil.bean.tall.vo.MemberVo;
import com.ccsens.cloudutil.bean.tall.vo.PluginVo;
import com.ccsens.cloudutil.bean.tall.vo.TaskVo; import com.ccsens.cloudutil.bean.tall.vo.TaskVo;
import com.ccsens.cloudutil.bean.tall.vo.UserVo; import com.ccsens.cloudutil.bean.tall.vo.UserVo;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
@ -109,6 +110,12 @@ public interface TallFeignClient {
@GetMapping("/users/claims") @GetMapping("/users/claims")
String getUserId(@RequestParam( name = "token")String token); String getUserId(@RequestParam( name = "token")String token);
/**
* 通过插件id获取签到字段和详细信息
*/
@GetMapping("/plugins/sign")
List<PluginVo.PluginSignField> getSignFieldByTaskPluginId(Long taskPluginId);
} }
@Slf4j @Slf4j
@ -171,6 +178,11 @@ class TallFeignClientFallBack implements FallbackFactory<TallFeignClient> {
public String getUserId(String token) { public String getUserId(String token) {
return null; return null;
} }
@Override
public List<PluginVo.PluginSignField> getSignFieldByTaskPluginId(Long taskPluginId){
return null;
}
}; };
} }

41
mt/src/main/java/com/ccsens/mt/api/SigninController.java

@ -26,20 +26,47 @@ public class SigninController {
@Autowired @Autowired
private ISigninService signinService; private ISigninService signinService;
@ApiOperation(value = "签到", notes = "") @ApiOperation(value = "查看签到需要的信息", notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
}) })
@RequestMapping(value = "", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @RequestMapping(value = "info", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<SigninVo.SigninVoInfo> signin(HttpServletRequest request, public JsonResponse<SigninVo.SignInfoVo> getSignField(HttpServletRequest request,
@ApiParam @Validated @RequestBody SigninDto.SigninInfo signinInfo) throws Exception { @ApiParam @Validated @RequestBody Long taskPluginId) throws Exception {
log.info("{}:签到"); log.info("{}:查看签到需要填的信息");
//获取userId //获取userId
Long userId = userService.getUserIdByToken(request); Long userId = userService.getUserIdByToken(request);
SigninVo.SigninVoInfo signinVoInfo = signinService.signin(signinInfo,userId); SigninVo.SignInfoVo signInfoVo = signinService.getSignField(taskPluginId,userId);
return JsonResponse.newInstance().ok(signinVoInfo); return JsonResponse.newInstance().ok(signInfoVo);
} }
// @ApiOperation(value = "模糊查询签到信息", notes = "")
// @ApiImplicitParams({
// })
// @RequestMapping(value = "fuzzy", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
// public JsonResponse<SigninVo.SignInfoVo> getSignByFuzzy(HttpServletRequest request,
// @ApiParam @Validated @RequestBody Long projectId,String signinName,String key) throws Exception {
// log.info("{}:查看签到需要填的信息");
// //获取userId
// Long userId = userService.getUserIdByToken(request);
//
// return JsonResponse.newInstance().ok(signInfoVo);
// }
// @ApiOperation(value = "签到", notes = "")
// @ApiImplicitParams({
// })
// @RequestMapping(value = "", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
// public JsonResponse<SigninVo.SigninVoInfo> signin(HttpServletRequest request,
// @ApiParam @Validated @RequestBody SigninDto.SigninInfo signinInfo) throws Exception {
// log.info("{}:签到");
// //获取userId
// Long userId = userService.getUserIdByToken(request);
// SigninVo.SigninVoInfo signinVoInfo = signinService.signin(signinInfo,userId);
//
// return JsonResponse.newInstance().ok(signinVoInfo);
// }
@ApiOperation(value = "查看自己的签到信息", notes = "") @ApiOperation(value = "查看自己的签到信息", notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "taskId", value = "签到任务的id", required = true, paramType = ""), @ApiImplicitParam(name = "taskId", value = "签到任务的id", required = true, paramType = ""),

12
mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOther.java

@ -6,7 +6,7 @@ import java.util.Date;
public class MtSigninOther implements Serializable { public class MtSigninOther implements Serializable {
private Long id; private Long id;
private Long userId; private Long signinBasicId;
private String key; private String key;
@ -28,12 +28,12 @@ public class MtSigninOther implements Serializable {
this.id = id; this.id = id;
} }
public Long getUserId() { public Long getSigninBasicId() {
return userId; return signinBasicId;
} }
public void setUserId(Long userId) { public void setSigninBasicId(Long signinBasicId) {
this.userId = userId; this.signinBasicId = signinBasicId;
} }
public String getKey() { public String getKey() {
@ -83,7 +83,7 @@ public class MtSigninOther implements Serializable {
sb.append(" ["); sb.append(" [");
sb.append("Hash = ").append(hashCode()); sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id); sb.append(", id=").append(id);
sb.append(", userId=").append(userId); sb.append(", signinBasicId=").append(signinBasicId);
sb.append(", key=").append(key); sb.append(", key=").append(key);
sb.append(", value=").append(value); sb.append(", value=").append(value);
sb.append(", createdAt=").append(createdAt); sb.append(", createdAt=").append(createdAt);

48
mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOtherExample.java

@ -165,63 +165,63 @@ public class MtSigninOtherExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdIsNull() { public Criteria andSigninBasicIdIsNull() {
addCriterion("user_id is null"); addCriterion("signin_basic_id is null");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdIsNotNull() { public Criteria andSigninBasicIdIsNotNull() {
addCriterion("user_id is not null"); addCriterion("signin_basic_id is not null");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdEqualTo(Long value) { public Criteria andSigninBasicIdEqualTo(Long value) {
addCriterion("user_id =", value, "userId"); addCriterion("signin_basic_id =", value, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdNotEqualTo(Long value) { public Criteria andSigninBasicIdNotEqualTo(Long value) {
addCriterion("user_id <>", value, "userId"); addCriterion("signin_basic_id <>", value, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdGreaterThan(Long value) { public Criteria andSigninBasicIdGreaterThan(Long value) {
addCriterion("user_id >", value, "userId"); addCriterion("signin_basic_id >", value, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdGreaterThanOrEqualTo(Long value) { public Criteria andSigninBasicIdGreaterThanOrEqualTo(Long value) {
addCriterion("user_id >=", value, "userId"); addCriterion("signin_basic_id >=", value, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdLessThan(Long value) { public Criteria andSigninBasicIdLessThan(Long value) {
addCriterion("user_id <", value, "userId"); addCriterion("signin_basic_id <", value, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdLessThanOrEqualTo(Long value) { public Criteria andSigninBasicIdLessThanOrEqualTo(Long value) {
addCriterion("user_id <=", value, "userId"); addCriterion("signin_basic_id <=", value, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdIn(List<Long> values) { public Criteria andSigninBasicIdIn(List<Long> values) {
addCriterion("user_id in", values, "userId"); addCriterion("signin_basic_id in", values, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdNotIn(List<Long> values) { public Criteria andSigninBasicIdNotIn(List<Long> values) {
addCriterion("user_id not in", values, "userId"); addCriterion("signin_basic_id not in", values, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdBetween(Long value1, Long value2) { public Criteria andSigninBasicIdBetween(Long value1, Long value2) {
addCriterion("user_id between", value1, value2, "userId"); addCriterion("signin_basic_id between", value1, value2, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andUserIdNotBetween(Long value1, Long value2) { public Criteria andSigninBasicIdNotBetween(Long value1, Long value2) {
addCriterion("user_id not between", value1, value2, "userId"); addCriterion("signin_basic_id not between", value1, value2, "signinBasicId");
return (Criteria) this; return (Criteria) this;
} }

32
mt/src/main/java/com/ccsens/mt/bean/vo/SigninVo.java

@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class SigninVo { public class SigninVo {
@Data @Data
@ -18,4 +20,34 @@ public class SigninVo {
@ApiModelProperty("签到时间") @ApiModelProperty("签到时间")
private Long signTime; private Long signTime;
} }
@Data
@ApiModel
public static class SignInfoVo{
@ApiModelProperty("是否已签到 0未签到 1已签到")
private Integer isSign;
@ApiModelProperty("签到时间")
private Long signTime;
@ApiModelProperty("序号")
private int sequence;
@ApiModelProperty("签到字段")
private List<SignField> signField;
}
@Data
@ApiModel
public static class SignField{
@ApiModelProperty("字段名")
private String name;
@ApiModelProperty("内容")
private String value;
@ApiModelProperty("类型 0文本,1文本框,2单选,3多选")
private int type;
@ApiModelProperty("类型值(文本,单选,多选,展示的内容 例:{\"1\":\"男\",\"2\":\"女\"})")
private String field;
@ApiModelProperty("是否必填")
private int isRequired;
@ApiModelProperty("是否支持模糊查询")
private int isFuzzy;
}
} }

8
mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninBasicDao.java

@ -0,0 +1,8 @@
package com.ccsens.mt.persist.dao;
import com.ccsens.mt.persist.mapper.MtSigninBasicMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface MtSigninBasicDao extends MtSigninBasicMapper {
}

8
mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninOtherDao.java

@ -0,0 +1,8 @@
package com.ccsens.mt.persist.dao;
import com.ccsens.mt.persist.mapper.MtSigninOtherMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface MtSigninOtherDao extends MtSigninOtherMapper {
}

2
mt/src/main/java/com/ccsens/mt/service/ISigninService.java

@ -11,4 +11,6 @@ public interface ISigninService {
SigninVo.SigninVoInfo getSignByTaskId(Long taskId, Long userId); SigninVo.SigninVoInfo getSignByTaskId(Long taskId, Long userId);
List<SigninVo.SigninVoInfo> getSignAllByTaskId(Long taskId, Long userId); List<SigninVo.SigninVoInfo> getSignAllByTaskId(Long taskId, Long userId);
SigninVo.SignInfoVo getSignField(Long taskPluginId, Long userId);
} }

75
mt/src/main/java/com/ccsens/mt/service/SigninService.java

@ -2,11 +2,15 @@ package com.ccsens.mt.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.cloudutil.bean.tall.vo.PluginVo;
import com.ccsens.cloudutil.feign.TallFeignClient;
import com.ccsens.mt.bean.dto.SigninDto; import com.ccsens.mt.bean.dto.SigninDto;
import com.ccsens.mt.bean.po.MtSignin; import com.ccsens.mt.bean.po.*;
import com.ccsens.mt.bean.po.MtSigninExample;
import com.ccsens.mt.bean.vo.SigninVo; import com.ccsens.mt.bean.vo.SigninVo;
import com.ccsens.mt.persist.dao.MtSigninBasicDao;
import com.ccsens.mt.persist.dao.MtSigninDao; import com.ccsens.mt.persist.dao.MtSigninDao;
import com.ccsens.mt.persist.dao.MtSigninOtherDao;
import com.ccsens.util.CodeEnum; import com.ccsens.util.CodeEnum;
import com.ccsens.util.exception.BaseException; import com.ccsens.util.exception.BaseException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -21,6 +25,73 @@ public class SigninService implements ISigninService{
private MtSigninDao mtSigninDao; private MtSigninDao mtSigninDao;
@Autowired @Autowired
private Snowflake snowflake; private Snowflake snowflake;
@Autowired
private MtSigninBasicDao signinBasicDao;
@Autowired
private MtSigninOtherDao signinOtherDao;
@Autowired
private TallFeignClient tallFeignClient;
/**
* 查看签到所需信息
* @param taskPluginId
* @param userId
* @return
*/
@Override
public SigninVo.SignInfoVo getSignField(Long taskPluginId, Long userId) {
SigninVo.SignInfoVo signInfoVo = new SigninVo.SignInfoVo();
//1.判断用户是否已签到
MtSigninBasicExample signinBasicExample = new MtSigninBasicExample();
signinBasicExample.createCriteria().andUserIdEqualTo(userId).andTaskPluginIdEqualTo(taskPluginId);
List<MtSigninBasic> signinBasicList = signinBasicDao.selectByExample(signinBasicExample);
if(CollectionUtil.isNotEmpty(signinBasicList)){
MtSigninBasic mtSigninBasic = signinBasicList.get(0);
//已签到,返回签到的信息
List<SigninVo.SignField> signFieldList = new ArrayList<>();
MtSigninOtherExample signinOtherExample = new MtSigninOtherExample();
signinOtherExample.createCriteria().andSigninBasicIdEqualTo(mtSigninBasic.getId());
List<MtSigninOther> signinOtherList = signinOtherDao.selectByExample(signinOtherExample);
if(CollectionUtil.isNotEmpty(signinOtherList)){
for (MtSigninOther signinOther : signinOtherList){
SigninVo.SignField signField = new SigninVo.SignField();
signField.setName(signinOther.getKey());
signField.setValue(signinOther.getValue());
signFieldList.add(signField);
}
}
signInfoVo.setIsSign(1);
signInfoVo.setSequence(mtSigninBasic.getSequence());
signInfoVo.setSignTime(mtSigninBasic.getSigninTime());
signInfoVo.setSignField(signFieldList);
}else{
//获取字段详细的信息
List<SigninVo.SignField> signFieldList = new ArrayList<>();
List<PluginVo.PluginSignField> pluginSignFieldList = tallFeignClient.getSignFieldByTaskPluginId(taskPluginId);
if(CollectionUtil.isNotEmpty(pluginSignFieldList)){
for(PluginVo.PluginSignField pluginSignField : pluginSignFieldList) {
SigninVo.SignField signField = new SigninVo.SignField();
signField.setName(pluginSignField.getDescription());
signField.setField(pluginSignField.getFieldValue());
signField.setIsFuzzy(pluginSignField.getIsFuzzy());
signField.setIsRequired(pluginSignField.getIsRequired());
signField.setType(pluginSignField.getType());
signFieldList.add(signField);
}
}
signInfoVo.setIsSign(0);
signInfoVo.setSignField(signFieldList);
}
return signInfoVo;
}
/*=====================================================================================================*/
/** /**
* 签到 * 签到

28
mt/src/main/resources/mapper_raw/MtSigninOtherMapper.xml

@ -3,7 +3,7 @@
<mapper namespace="com.ccsens.mt.persist.mapper.MtSigninOtherMapper"> <mapper namespace="com.ccsens.mt.persist.mapper.MtSigninOtherMapper">
<resultMap id="BaseResultMap" type="com.ccsens.mt.bean.po.MtSigninOther"> <resultMap id="BaseResultMap" type="com.ccsens.mt.bean.po.MtSigninOther">
<id column="id" jdbcType="BIGINT" property="id" /> <id column="id" jdbcType="BIGINT" property="id" />
<result column="user_id" jdbcType="BIGINT" property="userId" /> <result column="signin_basic_id" jdbcType="BIGINT" property="signinBasicId" />
<result column="key" jdbcType="VARCHAR" property="key" /> <result column="key" jdbcType="VARCHAR" property="key" />
<result column="value" jdbcType="VARCHAR" property="value" /> <result column="value" jdbcType="VARCHAR" property="value" />
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" /> <result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
@ -69,7 +69,7 @@
</where> </where>
</sql> </sql>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, user_id, key, value, created_at, updated_at, rec_status id, signin_basic_id, key, value, created_at, updated_at, rec_status
</sql> </sql>
<select id="selectByExample" parameterType="com.ccsens.mt.bean.po.MtSigninOtherExample" resultMap="BaseResultMap"> <select id="selectByExample" parameterType="com.ccsens.mt.bean.po.MtSigninOtherExample" resultMap="BaseResultMap">
select select
@ -102,10 +102,10 @@
</if> </if>
</delete> </delete>
<insert id="insert" parameterType="com.ccsens.mt.bean.po.MtSigninOther"> <insert id="insert" parameterType="com.ccsens.mt.bean.po.MtSigninOther">
insert into t_mt_signin_other (id, user_id, key, insert into t_mt_signin_other (id, signin_basic_id, key,
value, created_at, updated_at, value, created_at, updated_at,
rec_status) rec_status)
values (#{id,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{key,jdbcType=VARCHAR}, values (#{id,jdbcType=BIGINT}, #{signinBasicId,jdbcType=BIGINT}, #{key,jdbcType=VARCHAR},
#{value,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{value,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP},
#{recStatus,jdbcType=TINYINT}) #{recStatus,jdbcType=TINYINT})
</insert> </insert>
@ -115,8 +115,8 @@
<if test="id != null"> <if test="id != null">
id, id,
</if> </if>
<if test="userId != null"> <if test="signinBasicId != null">
user_id, signin_basic_id,
</if> </if>
<if test="key != null"> <if test="key != null">
key, key,
@ -138,8 +138,8 @@
<if test="id != null"> <if test="id != null">
#{id,jdbcType=BIGINT}, #{id,jdbcType=BIGINT},
</if> </if>
<if test="userId != null"> <if test="signinBasicId != null">
#{userId,jdbcType=BIGINT}, #{signinBasicId,jdbcType=BIGINT},
</if> </if>
<if test="key != null"> <if test="key != null">
#{key,jdbcType=VARCHAR}, #{key,jdbcType=VARCHAR},
@ -170,8 +170,8 @@
<if test="record.id != null"> <if test="record.id != null">
id = #{record.id,jdbcType=BIGINT}, id = #{record.id,jdbcType=BIGINT},
</if> </if>
<if test="record.userId != null"> <if test="record.signinBasicId != null">
user_id = #{record.userId,jdbcType=BIGINT}, signin_basic_id = #{record.signinBasicId,jdbcType=BIGINT},
</if> </if>
<if test="record.key != null"> <if test="record.key != null">
key = #{record.key,jdbcType=VARCHAR}, key = #{record.key,jdbcType=VARCHAR},
@ -196,7 +196,7 @@
<update id="updateByExample" parameterType="map"> <update id="updateByExample" parameterType="map">
update t_mt_signin_other update t_mt_signin_other
set id = #{record.id,jdbcType=BIGINT}, set id = #{record.id,jdbcType=BIGINT},
user_id = #{record.userId,jdbcType=BIGINT}, signin_basic_id = #{record.signinBasicId,jdbcType=BIGINT},
key = #{record.key,jdbcType=VARCHAR}, key = #{record.key,jdbcType=VARCHAR},
value = #{record.value,jdbcType=VARCHAR}, value = #{record.value,jdbcType=VARCHAR},
created_at = #{record.createdAt,jdbcType=TIMESTAMP}, created_at = #{record.createdAt,jdbcType=TIMESTAMP},
@ -209,8 +209,8 @@
<update id="updateByPrimaryKeySelective" parameterType="com.ccsens.mt.bean.po.MtSigninOther"> <update id="updateByPrimaryKeySelective" parameterType="com.ccsens.mt.bean.po.MtSigninOther">
update t_mt_signin_other update t_mt_signin_other
<set> <set>
<if test="userId != null"> <if test="signinBasicId != null">
user_id = #{userId,jdbcType=BIGINT}, signin_basic_id = #{signinBasicId,jdbcType=BIGINT},
</if> </if>
<if test="key != null"> <if test="key != null">
key = #{key,jdbcType=VARCHAR}, key = #{key,jdbcType=VARCHAR},
@ -232,7 +232,7 @@
</update> </update>
<update id="updateByPrimaryKey" parameterType="com.ccsens.mt.bean.po.MtSigninOther"> <update id="updateByPrimaryKey" parameterType="com.ccsens.mt.bean.po.MtSigninOther">
update t_mt_signin_other update t_mt_signin_other
set user_id = #{userId,jdbcType=BIGINT}, set signin_basic_id = #{signinBasicId,jdbcType=BIGINT},
key = #{key,jdbcType=VARCHAR}, key = #{key,jdbcType=VARCHAR},
value = #{value,jdbcType=VARCHAR}, value = #{value,jdbcType=VARCHAR},
created_at = #{createdAt,jdbcType=TIMESTAMP}, created_at = #{createdAt,jdbcType=TIMESTAMP},

19
tall/src/main/java/com/ccsens/tall/bean/vo/PluginVo.java

@ -19,4 +19,23 @@ public class PluginVo {
@ApiModelProperty("描述") @ApiModelProperty("描述")
private String description; private String description;
} }
@ApiModel
@Data
public static class PluginSignField{
@ApiModelProperty("变量名")
private String name;
@ApiModelProperty("展示名")
private String description;
@ApiModelProperty("类型 0文本 1文本框 2单选 3多选")
private int type;
@ApiModelProperty("类型值(文本,单选,多选,展示的内容 例:{\"1\":\"男\",\"2\":\"女\"},)")
private String fieldValue;
@ApiModelProperty("正则表达式")
private String format;
@ApiModelProperty("是否必填")
private int isRequired;
@ApiModelProperty("是否支持模糊查询")
private int isFuzzy;
}
} }

8
tall/src/main/java/com/ccsens/tall/persist/dao/ProPluginSigninDao.java

@ -0,0 +1,8 @@
package com.ccsens.tall.persist.dao;
import com.ccsens.tall.persist.mapper.ProPluginSigninMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface ProPluginSigninDao extends ProPluginSigninMapper {
}

8
tall/src/main/java/com/ccsens/tall/persist/dao/ProPluginSigninFuzzyDao.java

@ -0,0 +1,8 @@
package com.ccsens.tall.persist.dao;
import com.ccsens.tall.persist.mapper.ProPluginSigninFuzzyMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface ProPluginSigninFuzzyDao extends ProPluginSigninFuzzyMapper {
}

8
tall/src/main/java/com/ccsens/tall/persist/dao/SigninFieldDao.java

@ -0,0 +1,8 @@
package com.ccsens.tall.persist.dao;
import com.ccsens.tall.persist.mapper.SigninFieldMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface SigninFieldDao extends SigninFieldMapper {
}

2
tall/src/main/java/com/ccsens/tall/service/ExcelService.java

@ -138,6 +138,8 @@ public class ExcelService implements IExcelService {
saveProTaskSubTime(taskDetails); saveProTaskSubTime(taskDetails);
//读取插件表 //读取插件表
readPlugin(xssfWorkbook, taskDetails, proRoles, hasGroupMap); readPlugin(xssfWorkbook, taskDetails, proRoles, hasGroupMap);
//读取签到信息表
wbsSubSheetService.getSigninSheet(sysProject.getId(),xssfWorkbook,taskDetails);
return sysProject; return sysProject;
} }

2
tall/src/main/java/com/ccsens/tall/service/ISysPluginService.java

@ -6,4 +6,6 @@ import java.util.List;
public interface ISysPluginService { public interface ISysPluginService {
List<PluginVo.PluginInfo> getPluginAll(); List<PluginVo.PluginInfo> getPluginAll();
List<PluginVo.PluginSignField> getSignByPlugin(Long taskPluginId);
} }

1
tall/src/main/java/com/ccsens/tall/service/IWbsSubSheetService.java

@ -15,4 +15,5 @@ public interface IWbsSubSheetService {
void getSubTaskMt(XSSFWorkbook xssfWorkbook, String sheetName, ProTaskDetail parentTaskDetail, void getSubTaskMt(XSSFWorkbook xssfWorkbook, String sheetName, ProTaskDetail parentTaskDetail,
List<ProTaskDetail> taskDetails, List<ProMember> proMembers, String deliverCell, Map<String, List<ProTaskDetail>> hasGroupMap); List<ProTaskDetail> taskDetails, List<ProMember> proMembers, String deliverCell, Map<String, List<ProTaskDetail>> hasGroupMap);
void getSigninSheet(Long projectId,XSSFWorkbook xssfWorkbook, List<ProTaskDetail> taskDetails);
} }

45
tall/src/main/java/com/ccsens/tall/service/SysPluginService.java

@ -1,6 +1,13 @@
package com.ccsens.tall.service; package com.ccsens.tall.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.tall.bean.po.ProPluginSignin;
import com.ccsens.tall.bean.po.ProPluginSigninExample;
import com.ccsens.tall.bean.po.SigninField;
import com.ccsens.tall.bean.vo.PluginVo; import com.ccsens.tall.bean.vo.PluginVo;
import com.ccsens.tall.persist.dao.ProPluginSigninDao;
import com.ccsens.tall.persist.dao.SigninFieldDao;
import com.ccsens.tall.persist.dao.SysPluginDao; import com.ccsens.tall.persist.dao.SysPluginDao;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -8,6 +15,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
@ -16,9 +24,46 @@ import java.util.List;
public class SysPluginService implements ISysPluginService{ public class SysPluginService implements ISysPluginService{
@Autowired @Autowired
private SysPluginDao sysPluginDao; private SysPluginDao sysPluginDao;
@Autowired
private ProPluginSigninDao pluginSigninDao;
@Autowired
private SigninFieldDao signinFieldDao;
@Override @Override
public List<PluginVo.PluginInfo> getPluginAll() { public List<PluginVo.PluginInfo> getPluginAll() {
List<PluginVo.PluginInfo> pluginInfoList = sysPluginDao.selectPluginAll(); List<PluginVo.PluginInfo> pluginInfoList = sysPluginDao.selectPluginAll();
return pluginInfoList; return pluginInfoList;
} }
/**
* 透过插件id查询签到的信息
*/
@Override
public List<PluginVo.PluginSignField> getSignByPlugin(Long taskPluginId) {
List<PluginVo.PluginSignField> pluginSignFieldList = new ArrayList<>();
PluginVo.PluginSignField pluginSignField = null;
//查找插件下的签到字段
ProPluginSigninExample pluginSigninExample = new ProPluginSigninExample();
pluginSigninExample.createCriteria().andTaskPluginIdEqualTo(taskPluginId);
List<ProPluginSignin> proPluginSigninList = pluginSigninDao.selectByExample(pluginSigninExample);
if(CollectionUtil.isNotEmpty(proPluginSigninList)){
for(ProPluginSignin pluginSignin : proPluginSigninList){
pluginSignField = new PluginVo.PluginSignField();
pluginSignField.setIsFuzzy(pluginSignin.getIsFuzzy());
pluginSignField.setIsRequired(pluginSignin.getIsRequired());
//查找字段的详细信息
SigninField signinField = signinFieldDao.selectByPrimaryKey(pluginSignin.getSigninFieldId());
if(ObjectUtil.isNotNull(signinField)){
pluginSignField.setName(signinField.getName());
pluginSignField.setDescription(signinField.getDescription());
pluginSignField.setType(signinField.getType());
pluginSignField.setFieldValue(signinField.getFieldValue());
pluginSignField.setFormat(signinField.getFormat());
}
pluginSignFieldList.add(pluginSignField);
}
}
return pluginSignFieldList;
}
} }

53
tall/src/main/java/com/ccsens/tall/service/UserService.java

@ -132,8 +132,8 @@ public class UserService implements IUserService {
theAuth = authList.get(0); theAuth = authList.get(0);
} else { } else {
SysAuthExample sysAuthExample = new SysAuthExample(); SysAuthExample sysAuthExample = new SysAuthExample();
authExample.createCriteria().andCredentialEqualTo(wxOauth2UserInfo.getUnionId()); sysAuthExample.createCriteria().andCredentialEqualTo(wxOauth2UserInfo.getUnionId());
List<SysAuth> sysAuthList = authDao.selectByExample(authExample); List<SysAuth> sysAuthList = authDao.selectByExample(sysAuthExample);
if(CollectionUtil.isNotEmpty(sysAuthList)){ if(CollectionUtil.isNotEmpty(sysAuthList)){
//添加认证方式 //添加认证方式
theAuth = new SysAuth(); theAuth = new SysAuth();
@ -195,6 +195,7 @@ public class UserService implements IUserService {
private UserVo.UserSign wxLogin(WebConstant.IDENTIFY_TYPE identifyType, String code) throws Exception { private UserVo.UserSign wxLogin(WebConstant.IDENTIFY_TYPE identifyType, String code) throws Exception {
UserVo.UserSign userSignVo = null; UserVo.UserSign userSignVo = null;
//获取微信信息并保存 //获取微信信息并保存
log.info("公众号登陆,{}",code);
WxOauth2UserInfo wxOauth2UserInfo = WxGzhUtil.getOauth2UserInfo(identifyType, code); WxOauth2UserInfo wxOauth2UserInfo = WxGzhUtil.getOauth2UserInfo(identifyType, code);
SysAuth theAuth = null; SysAuth theAuth = null;
@ -207,8 +208,8 @@ public class UserService implements IUserService {
theAuth = authList.get(0); theAuth = authList.get(0);
} else { } else {
SysAuthExample sysAuthExample = new SysAuthExample(); SysAuthExample sysAuthExample = new SysAuthExample();
authExample.createCriteria().andCredentialEqualTo(wxOauth2UserInfo.getUnionId()); sysAuthExample.createCriteria().andCredentialEqualTo(wxOauth2UserInfo.getUnionId());
List<SysAuth> sysAuthList = authDao.selectByExample(authExample); List<SysAuth> sysAuthList = authDao.selectByExample(sysAuthExample);
if(CollectionUtil.isNotEmpty(sysAuthList)){ if(CollectionUtil.isNotEmpty(sysAuthList)){
// SysAuth sysAuth = sysAuthList.get(0); // SysAuth sysAuth = sysAuthList.get(0);
//添加认证方式 //添加认证方式
@ -343,18 +344,54 @@ public class UserService implements IUserService {
UserVo.UserSign userSignVo = null; UserVo.UserSign userSignVo = null;
//0.获取openid //0.获取openid
WxXcxUtil.WechatUser wechatUser = WxXcxUtil.getUserInfo(code); WxXcxUtil.WechatUser wechatUser = WxXcxUtil.getUserInfo(code);
String openid = wechatUser.openid; String openId = wechatUser.openid;
String unionId = wechatUser.unionid; String unionId = wechatUser.unionid;
log.info("小程序登录,openid:{} ,unionId:{}",openId,unionId);
//1.查找对应账户,不存在则注册 //1.查找对应账户,不存在则注册
List<SysAuth> authList = null; List<SysAuth> authList = null;
SysAuth theAuth = null; SysAuth theAuth = null;
SysAuthExample authExample = new SysAuthExample(); SysAuthExample authExample = new SysAuthExample();
authExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Wxmp.value) authExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Wxmp.value)
.andIdentifierEqualTo(openid); .andIdentifierEqualTo(openId);
authList = authDao.selectByExample(authExample); authList = authDao.selectByExample(authExample);
if (CollectionUtil.isEmpty(authList)) { if (CollectionUtil.isEmpty(authList)) {
theAuth = wxRegist(openid, unionId,WebConstant.IDENTIFY_TYPE.Wxmp); SysAuthExample sysAuthExample = new SysAuthExample();
sysAuthExample.createCriteria().andCredentialEqualTo(unionId);
List<SysAuth> sysAuthList = authDao.selectByExample(sysAuthExample);
if(CollectionUtil.isNotEmpty(sysAuthList)){
// SysAuth sysAuth = sysAuthList.get(0);
//添加认证方式
theAuth = new SysAuth();
theAuth.setId(snowflake.nextId());
theAuth.setUserId(sysAuthList.get(0).getUserId());
theAuth.setIdentifyType((byte) WebConstant.IDENTIFY_TYPE.Wxmp.value);
theAuth.setIdentifier(openId);
theAuth.setCredential(unionId);
authDao.insertSelective(theAuth);
}else {
//新建用户并保存微信信息
SysUser user = new SysUser();
user.setId(snowflake.nextId());
userDao.insertSelective(user);
//添加认证方式
theAuth = new SysAuth();
theAuth.setId(snowflake.nextId());
theAuth.setUserId(user.getId());
theAuth.setIdentifyType((byte) WebConstant.IDENTIFY_TYPE.Wxmp.value);
theAuth.setIdentifier(openId);
theAuth.setCredential(unionId);
authDao.insertSelective(theAuth);
//自动添加账号密码
String accountName = RandomStringUtils.random(8, WebConstant.RANDOM_STR);
SysAuth accountAuth = new SysAuth();
accountAuth.setId(snowflake.nextId());
accountAuth.setUserId(user.getId());
accountAuth.setIdentifyType((byte) WebConstant.IDENTIFY_TYPE.Account.value);
accountAuth.setIdentifier("USER_" + accountName);
accountAuth.setCredential("123456");
authDao.insertSelective(accountAuth);
}
// theAuth = wxRegist(openid, unionId,WebConstant.IDENTIFY_TYPE.Wxmp);
} else { } else {
theAuth = authList.get(0); theAuth = authList.get(0);
} }

166
tall/src/main/java/com/ccsens/tall/service/WbsSubSheetService.java

@ -6,6 +6,7 @@ import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.po.*;
import com.ccsens.tall.persist.dao.*;
import com.ccsens.util.CodeEnum; import com.ccsens.util.CodeEnum;
import com.ccsens.util.ExcelUtil; import com.ccsens.util.ExcelUtil;
import com.ccsens.util.StringUtil; import com.ccsens.util.StringUtil;
@ -18,13 +19,14 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.sql.Struct;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Service @Service
public class WbsSubSheetService implements IWbsSubSheetService{ public class WbsSubSheetService implements IWbsSubSheetService {
@Autowired @Autowired
private Snowflake snowflake; private Snowflake snowflake;
@Autowired @Autowired
@ -33,6 +35,17 @@ public class WbsSubSheetService implements IWbsSubSheetService{
private IProTaskDetailService proTaskDetailService; private IProTaskDetailService proTaskDetailService;
@Autowired @Autowired
private IExcelService excelService; private IExcelService excelService;
@Autowired
private SysPluginDao sysPluginDao;
@Autowired
private TaskPluginDao taskPluginDao;
@Autowired
private SigninFieldDao signinFieldDao;
@Autowired
private ProPluginSigninDao proPluginSigninDao;
@Autowired
private ProPluginSigninFuzzyDao pluginSigninFuzzyDao;
/** /**
* 读取子任务表 * 读取子任务表
*/ */
@ -204,7 +217,14 @@ public class WbsSubSheetService implements IWbsSubSheetService{
} }
public void getSigninSheet(XSSFWorkbook xssfWorkbook,List<ProTaskDetail> taskDetails){ /**
* 签到信息表
* @param projectId
* @param xssfWorkbook
* @param taskDetails
*/
@Override
public void getSigninSheet(Long projectId,XSSFWorkbook xssfWorkbook, List<ProTaskDetail> taskDetails) {
XSSFSheet signSheet = xssfWorkbook.getSheet("签到信息表"); XSSFSheet signSheet = xssfWorkbook.getSheet("签到信息表");
int fuzzyStart = 0; int fuzzyStart = 0;
for (int i = 0; i <= signSheet.getLastRowNum(); i++) { for (int i = 0; i <= signSheet.getLastRowNum(); i++) {
@ -222,31 +242,137 @@ public class WbsSubSheetService implements IWbsSubSheetService{
fuzzyStart = i + 1; fuzzyStart = i + 1;
} }
} }
Long taskPluginId = null;
for (int i = 0; i < fuzzyStart; i++) { String taskName = null;
String taskName = ExcelUtil.getCellValue(signSheet.getRow(i).getCell(1)); String pluginName = null;
String pluginName = ExcelUtil.getCellValue(signSheet.getRow(i).getCell(2)); List<ProPluginSignin> proPluginSigninList = new ArrayList<>();
for (int i = 2; i < fuzzyStart; i++) {
if(StrUtil.isNotEmpty(ExcelUtil.getCellValue(signSheet.getRow(i).getCell(1)))){
taskName = ExcelUtil.getCellValue(signSheet.getRow(i).getCell(1));
}
if(StrUtil.isNotEmpty(ExcelUtil.getCellValue(signSheet.getRow(i).getCell(2)))){
pluginName = ExcelUtil.getCellValue(signSheet.getRow(i).getCell(2));
}
String signName = ExcelUtil.getCellValue(signSheet.getRow(i).getCell(3)); String signName = ExcelUtil.getCellValue(signSheet.getRow(i).getCell(3));
String isRequired = ExcelUtil.getCellValue(signSheet.getRow(i).getCell(3)); String isRequired = ExcelUtil.getCellValue(signSheet.getRow(i).getCell(4));
//任务下插件的id
if(StrUtil.isNotEmpty(taskName) && StrUtil.isNotEmpty(pluginName)) {
if (ObjectUtil.isNotNull(getTaskPluginId(taskName, pluginName, taskDetails))) {
taskPluginId = getTaskPluginId(taskName, pluginName, taskDetails);
}
}
//签到字段的id
Long signFieldId = null;
if (StrUtil.isNotEmpty(signName)) {
SigninFieldExample signinFieldExample = new SigninFieldExample();
signinFieldExample.createCriteria().andDescriptionEqualTo(signName);
List<SigninField> fieldList = signinFieldDao.selectByExample(signinFieldExample);
if (CollectionUtil.isNotEmpty(fieldList)) {
signFieldId = fieldList.get(0).getId();
}
}else {
break;
}
if (ObjectUtil.isNull(taskPluginId)) {
throw new BaseException(CodeEnum.WBS_NOT_PLUGIN);
}
if (ObjectUtil.isNull(signFieldId)) {
throw new BaseException(CodeEnum.NOT_SIGN_FIELD);
}
//新建签到字段和插件的关联表
ProPluginSignin proPluginSignin = new ProPluginSignin(); ProPluginSignin proPluginSignin = new ProPluginSignin();
proPluginSignin.setId(snowflake.nextId());
proPluginSignin.setTaskPluginId(taskPluginId);
Long taskDetailId = null; proPluginSignin.setSigninFieldId(signFieldId);
if(StrUtil.isNotEmpty(taskName) && CollectionUtil.isNotEmpty(taskDetails)){ if(StrUtil.isNotEmpty(isRequired)){
for(ProTaskDetail taskDetail : taskDetails){ if("是".equalsIgnoreCase(isRequired)){
if(taskName.equalsIgnoreCase(taskDetail.getName())){ proPluginSignin.setIsRequired((byte) 1);
taskDetailId = taskDetail.getId(); }else if("否".equalsIgnoreCase(isRequired)){
proPluginSignin.setIsRequired((byte) 0);
}
}
proPluginSigninList.add(proPluginSignin);
proPluginSigninDao.insertSelective(proPluginSignin);
}
//读取模糊查询的信息
XSSFRow fuzzy = signSheet.getRow(fuzzyStart);
for(int i = 0 ; i<fuzzy.getLastCellNum();i++){
String fieldCell = ExcelUtil.getCellValue(fuzzy.getCell(i));
//获取字段的id
Long signFieldId = null;
if(StrUtil.isNotEmpty(fieldCell)){
SigninFieldExample signinFieldExample = new SigninFieldExample();
signinFieldExample.createCriteria().andDescriptionEqualTo(fieldCell);
List<SigninField> fieldList = signinFieldDao.selectByExample(signinFieldExample);
if (CollectionUtil.isNotEmpty(fieldList)) {
signFieldId = fieldList.get(0).getId();
}
}else {
break;
}
//添加内容
if(ObjectUtil.isNotNull(signFieldId)) {
//修改关联表,将是否模糊搜索改成“是”
for(ProPluginSignin pluginSignin : proPluginSigninList){
if(signFieldId.longValue() == pluginSignin.getSigninFieldId().longValue()){
pluginSignin.setIsFuzzy((byte) 1);
proPluginSigninDao.updateByPrimaryKeySelective(pluginSignin);
break;
}
}
//添加模糊查询内容
for (int j = fuzzyStart + 1; j < signSheet.getLastRowNum(); j++) {
String description = ExcelUtil.getCellValue(signSheet.getRow(j).getCell(i));
if (StrUtil.isNotEmpty(description)) {
ProPluginSigninFuzzy signinFuzzy = new ProPluginSigninFuzzy();
signinFuzzy.setId(snowflake.nextId());
signinFuzzy.setProjectId(projectId);
signinFuzzy.setSigninFieldId(signFieldId);
signinFuzzy.setDescription(description);
pluginSigninFuzzyDao.insertSelective(signinFuzzy);
}else {
break; break;
} }
} }
} }
if(ObjectUtil.isNotNull(pluginName)){
SysPluginExample sysPluginExample = new SysPluginExample();
sysPluginExample.createCriteria().andNameEqualTo(pluginName);
}
} }
}
private Long getTaskPluginId(String taskDetailName, String sysPluginName, List<ProTaskDetail> taskDetails) {
Long taskPluginId = null;
//任务详情id
Long taskDetailId = null;
if (StrUtil.isNotEmpty(taskDetailName) && CollectionUtil.isNotEmpty(taskDetails)) {
for (ProTaskDetail taskDetail : taskDetails) {
if (taskDetailName.equalsIgnoreCase(taskDetail.getName())) {
taskDetailId = taskDetail.getId();
break;
}
}
}
//插件id
Long sysPluginId = null;
if (ObjectUtil.isNotNull(sysPluginName)) {
SysPluginExample sysPluginExample = new SysPluginExample();
sysPluginExample.createCriteria().andNameEqualTo(sysPluginName);
List<SysPlugin> sysPlugins = sysPluginDao.selectByExample(sysPluginExample);
if (CollectionUtil.isNotEmpty(sysPlugins)) {
sysPluginId = sysPlugins.get(0).getId();
} else {
throw new BaseException(CodeEnum.WBS_NOT_PLUGIN);
}
}
//任务的插件id
if (ObjectUtil.isNotNull(taskDetailId) && ObjectUtil.isNotNull(sysPluginId)) {
ProTaskPluginExample taskPluginExample = new ProTaskPluginExample();
taskPluginExample.createCriteria().andTaskDetailIdEqualTo(taskDetailId).andPluginIdEqualTo(sysPluginId);
List<ProTaskPlugin> taskPluginList = taskPluginDao.selectByExample(taskPluginExample);
if (CollectionUtil.isNotEmpty(taskPluginList)) {
taskPluginId = taskPluginList.get(0).getId();
}
}
return taskPluginId;
} }
} }

12
tall/src/main/java/com/ccsens/tall/web/PluginController.java

@ -1,5 +1,6 @@
package com.ccsens.tall.web; package com.ccsens.tall.web;
import com.ccsens.tall.bean.vo.MemberVo;
import com.ccsens.tall.bean.vo.PluginVo; import com.ccsens.tall.bean.vo.PluginVo;
import com.ccsens.tall.service.ISysPluginService; import com.ccsens.tall.service.ISysPluginService;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
@ -34,4 +35,15 @@ public class PluginController {
return JsonResponse.newInstance().ok(pluginInfo); return JsonResponse.newInstance().ok(pluginInfo);
} }
/**
* 透过插件id查询签到的信息
*/
@RequestMapping(value = "sign", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PluginVo.PluginSignField> getSignByPlugin( Long taskPluginId) throws Exception {
List<PluginVo.PluginSignField> pluginSignFieldList = sysPluginService.getSignByPlugin(taskPluginId);
return JsonResponse.newInstance().ok(pluginSignFieldList);
}
} }

1
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -91,6 +91,7 @@ public enum CodeEnum {
ALREADY_BINDING_PHONE(74,"您已绑定过手机号,请勿重复绑定",true), ALREADY_BINDING_PHONE(74,"您已绑定过手机号,请勿重复绑定",true),
MERGE_WX_PHONE(75,"该手机号已经注册过账号,是否将账号合并",true), MERGE_WX_PHONE(75,"该手机号已经注册过账号,是否将账号合并",true),
ALREADY_EXIST_ACCOUNT(76,"该账号已存在",true), ALREADY_EXIST_ACCOUNT(76,"该账号已存在",true),
NOT_SIGN_FIELD(77,"签到的字段不可用",true)
; ;
public CodeEnum addMsg(String msg){ public CodeEnum addMsg(String msg){

860
util/src/main/java/com/ccsens/util/WechatUtil.java

@ -1,430 +1,430 @@
//package com.ccsens.util; package com.ccsens.util;
//
//import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
//import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
//import lombok.Data; import lombok.Data;
//import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
//
//import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
//import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
//import java.net.ConnectException; import java.net.ConnectException;
//import java.util.*; import java.util.*;
//
//@Data @Data
//class GetUserInfoException extends RuntimeException{ class GetUserInfoException extends RuntimeException{
// private int code; private int code;
// public GetUserInfoException(int code,String message){ public GetUserInfoException(int code,String message){
// super(message); super(message);
// this.code = code; this.code = code;
// } }
//} }
//
//@Data @Data
//class PayException extends RuntimeException{ class PayException extends RuntimeException{
// private int code; private int code;
// public PayException(int code,String message){ public PayException(int code,String message){
// super(message); super(message);
// this.code = code; this.code = code;
// } }
//
// public PayException(String message){ public PayException(String message){
// super(message); super(message);
// this.code = -1; this.code = -1;
// } }
//} }
//
//public class WechatUtil { public class WechatUtil {
//
// /** /**
// * 被Jasckson使用的内部类 必须是static的 * 被Jasckson使用的内部类 必须是static的
// */ */
// public static class WechatUser { public static class WechatUser {
// public String openid; public String openid;
// public String session_key; public String session_key;
// public String unionid; public String unionid;
// public String errcode; public String errcode;
// public String errmsg; public String errmsg;
// } }
//
// /** /**
// * Access_Token * Access_Token
// */ */
// public static class WechatToken{ public static class WechatToken{
// public String access_token; public String access_token;
// public Long expires_in; public Long expires_in;
// public String errcode; public String errcode;
// public String errmsg; public String errmsg;
// public Date create_at; public Date create_at;
// } }
//
// /** /**
// * Get wx code * Get wx code
// */ */
// public static class WechatCode{ public static class WechatCode{
// public String scene; public String scene;
// public String page; public String page;
// public Integer width; public Integer width;
// public Boolean auto_color; public Boolean auto_color;
// public Boolean line_color; public Boolean line_color;
// public Boolean is_hyaline; public Boolean is_hyaline;
// } }
//
// /** /**
// * Prepare pay * Prepare pay
// */ */
// public static class PreparePayBean{ public static class PreparePayBean{
// public String appid;//小程序ID public String appid;//小程序ID
// public String mch_id;//商户号 public String mch_id;//商户号
// public String device_info;//设备号 public String device_info;//设备号
// public String nonce_str;//随机字符串 public String nonce_str;//随机字符串
// public String sign;//签名 public String sign;//签名
// public String sign_type; //签名类型 public String sign_type; //签名类型
// public String body;//商品描述 public String body;//商品描述
// public String detail;//商品详情 public String detail;//商品详情
// public String attach;//附加数据 public String attach;//附加数据
// public String out_trade_no;//商户订单号 public String out_trade_no;//商户订单号
// public String fee_type;//货币类型 public String fee_type;//货币类型
// public Integer total_fee; //金额(分) public Integer total_fee; //金额(分)
// public String spbill_create_ip;//终端IP public String spbill_create_ip;//终端IP
// public String time_start;//交易起始时间 public String time_start;//交易起始时间
// public String time_expire;//交易结束时间 public String time_expire;//交易结束时间
// public String goods_tag;//商品标记 public String goods_tag;//商品标记
// public String notify_url;//通知地址 public String notify_url;//通知地址
// public String trade_type;//交易类型 public String trade_type;//交易类型
// public String product_id;//商品id public String product_id;//商品id
// public String limit_pay;//指定支付方式 public String limit_pay;//指定支付方式
// public String openid;//用户标识 public String openid;//用户标识
// } }
//
// /** /**
// * Prepare pay result * Prepare pay result
// */ */
// public static class PreparePayResultBean{ public static class PreparePayResultBean{
// public String return_code; public String return_code;
// public String return_msg; public String return_msg;
// public String result_code; public String result_code;
// public String prepay_id; public String prepay_id;
// public String err_code; public String err_code;
// public String err_code_des; public String err_code_des;
// } }
//
// /** /**
// * Prepare pay resign * Prepare pay resign
// */ */
// public static class PreparePayReSignBean{ public static class PreparePayReSignBean{
// public String nonceStr; public String nonceStr;
// public String _package; public String _package;
// public long timeStamp; public long timeStamp;
// public String paySign; public String paySign;
// public String signType; public String signType;
// } }
//
// private static final String URL_LOGIN private static final String URL_LOGIN
// = "https://api.weixin.qq.com/sns/jscode2session?appid=%1$s&secret=%2$s&js_code=%3$s&grant_type=%4$s"; = "https://api.weixin.qq.com/sns/jscode2session?appid=%1$s&secret=%2$s&js_code=%3$s&grant_type=%4$s";
// private static final String URL_GET_ACCESS_TOKEN private static final String URL_GET_ACCESS_TOKEN
// = "https://api.weixin.qq.com/cgi-bin/token?grant_type=%1$s&appid=%2$s&secret=%3$s"; = "https://api.weixin.qq.com/cgi-bin/token?grant_type=%1$s&appid=%2$s&secret=%3$s";
// private static final String URL_GET_WX_CODE_A private static final String URL_GET_WX_CODE_A
// = "https://api.weixin.qq.com/wxa/getwxacode?access_token=%1$s"; = "https://api.weixin.qq.com/wxa/getwxacode?access_token=%1$s";
// private static final String URL_GET_WX_CODE_B private static final String URL_GET_WX_CODE_B
// = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%1$s"; = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%1$s";
// private static final String URL_GET_WX_CODE_C private static final String URL_GET_WX_CODE_C
// = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=%1$s"; = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=%1$s";
// private static final String URL_PREPARE_PAY private static final String URL_PREPARE_PAY
// = "https://api.mch.weixin.qq.com/pay/unifiedorder"; = "https://api.mch.weixin.qq.com/pay/unifiedorder";
// private static final String URL_PAY_TO_USR_WX private static final String URL_PAY_TO_USR_WX
// = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
// private static final String URL_PAY_TO_USR_BANK private static final String URL_PAY_TO_USR_BANK
// = "https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank"; = "https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank";
//
// private static final String appid = "wx356e01c7eb01d55d"; private static final String appid = "wx356e01c7eb01d55d";
// private static final String secret = "83149f3e151d9532f1d2eb76ca10722b"; private static final String secret = "83149f3e151d9532f1d2eb76ca10722b";
// private static final String mchid = "1513955071"; private static final String mchid = "1513955071";
// private static final String key = "5a689a2d6b8c4ff499c23d998fde0941"; //商户平台key private static final String key = "5a689a2d6b8c4ff499c23d998fde0941"; //商户平台key
//
// /** /**
// * 小程序登陆,根据code获取用户信息(openid,sessionKey,) * 小程序登陆根据code获取用户信息(openid,sessionKey,)
// * @param code * @param code
// * @return * @return
// * @throws ConnectException * @throws ConnectException
// * @throws Exception * @throws Exception
// */ */
// public static WechatUser getUserInfo(String code) throws Exception { public static WechatUser getUserInfo(String code) throws Exception {
// String response = null; String response = null;
// WechatUser wechatUser = null; WechatUser wechatUser = null;
// String url_login = String.format(URL_LOGIN, appid, secret, code, "authorization_code"); String url_login = String.format(URL_LOGIN, appid, secret, code, "authorization_code");
//
// try { try {
// response = HttpsUtil.httpsRequest(url_login, "GET", null); response = HttpsUtil.httpsRequest(url_login, "GET", null);
// wechatUser = JacksonUtil.jsonToBean(response, WechatUser.class); wechatUser = JacksonUtil.jsonToBean(response, WechatUser.class);
// }catch (Exception e){ }catch (Exception e){
// throw new GetUserInfoException(-1,e.getMessage()); throw new GetUserInfoException(-1,e.getMessage());
// } }
//
// if(wechatUser == null) { if(wechatUser == null) {
// throw new GetUserInfoException(-1, "Get UserInfoByCode failed."); throw new GetUserInfoException(-1, "Get UserInfoByCode failed.");
// } }
// if(!StrUtil.isEmpty(wechatUser.errcode)) { if(!StrUtil.isEmpty(wechatUser.errcode)) {
// throw new GetUserInfoException(Integer.valueOf(wechatUser.errcode), wechatUser.errmsg); throw new GetUserInfoException(Integer.valueOf(wechatUser.errcode), wechatUser.errmsg);
// } }
//
// return wechatUser; return wechatUser;
// } }
//
// /** /**
// * 获取Access_token * 获取Access_token
// * @return * @return
// * @throws Exception * @throws Exception
// */ */
// public static WechatToken getAccessToken() throws Exception { public static WechatToken getAccessToken() throws Exception {
// String response = null; String response = null;
// WechatToken wechatToken = null; WechatToken wechatToken = null;
// String url = String.format(URL_GET_ACCESS_TOKEN,"client_credential",appid,secret); String url = String.format(URL_GET_ACCESS_TOKEN,"client_credential",appid,secret);
//
// response = HttpsUtil.httpsRequest(url,"GET",null); response = HttpsUtil.httpsRequest(url,"GET",null);
// if(StrUtil.isEmpty(response)) { if(StrUtil.isEmpty(response)) {
// return null; return null;
// } }
// wechatToken = JacksonUtil.jsonToBean(response,WechatToken.class); wechatToken = JacksonUtil.jsonToBean(response,WechatToken.class);
// wechatToken.create_at = new Date(); wechatToken.create_at = new Date();
// return wechatToken; return wechatToken;
// } }
//
// /** /**
// * 获取小程序二维码/小程序码 * 获取小程序二维码/小程序码
// * @return * @return
// * @throws Exception * @throws Exception
// */ */
// public static void getWxCode(String page,String scene,String path) throws Exception { public static void getWxCode(String page,String scene,String path) throws Exception {
// WechatToken wechatToken = getAccessToken(); WechatToken wechatToken = getAccessToken();
// String url = String.format(URL_GET_WX_CODE_B,wechatToken.access_token); String url = String.format(URL_GET_WX_CODE_B,wechatToken.access_token);
//
// WechatCode wechatCode = new WechatCode(); WechatCode wechatCode = new WechatCode();
// wechatCode.page = page; wechatCode.page = page;
// wechatCode.scene = scene; wechatCode.scene = scene;
//
// String postStr = JacksonUtil.beanToJson(wechatCode); String postStr = JacksonUtil.beanToJson(wechatCode);
// System.out.println(postStr); System.out.println(postStr);
//
// HttpsUtil.httpsRequest(url,"POST",postStr,path); HttpsUtil.httpsRequest(url,"POST",postStr,path);
// } }
//
// /** /**
// * 统一下单 * 统一下单
// */ */
// public static PreparePayReSignBean preparePay(String openid,String out_trade_no,String body,int total_fee,String spbill_create_ip, public static PreparePayReSignBean preparePay(String openid,String out_trade_no,String body,int total_fee,String spbill_create_ip,
// String notify_url) throws Exception { String notify_url) throws Exception {
// PreparePayBean preparePayBean = new PreparePayBean(); PreparePayBean preparePayBean = new PreparePayBean();
// preparePayBean.appid = appid; preparePayBean.appid = appid;
// preparePayBean.mch_id = mchid; preparePayBean.mch_id = mchid;
// preparePayBean.openid = openid; preparePayBean.openid = openid;
// preparePayBean.total_fee = total_fee; preparePayBean.total_fee = total_fee;
// preparePayBean.out_trade_no = out_trade_no; preparePayBean.out_trade_no = out_trade_no;
// preparePayBean.body = new String(body.getBytes("ISO-8859-1"),"UTF-8");//以utf-8编码放入paymentPo,微信支付要求字符编码统一采用UTF-8字符编码 preparePayBean.body = new String(body.getBytes("ISO-8859-1"),"UTF-8");//以utf-8编码放入paymentPo,微信支付要求字符编码统一采用UTF-8字符编码
// //preparePayBean.body = new String("聊天密码小程序-充值"); //preparePayBean.body = new String("聊天密码小程序-充值");
// preparePayBean.spbill_create_ip = spbill_create_ip; preparePayBean.spbill_create_ip = spbill_create_ip;
// preparePayBean.notify_url = notify_url; preparePayBean.notify_url = notify_url;
// preparePayBean.trade_type = "JSAPI"; preparePayBean.trade_type = "JSAPI";
// preparePayBean.nonce_str = createNonceStr(); preparePayBean.nonce_str = createNonceStr();
//
// // 把请求参数打包成数组 // 把请求参数打包成数组
// Map<String,Object> sParaTemp = new HashMap(); Map<String,Object> sParaTemp = new HashMap();
// sParaTemp.put("appid", preparePayBean.appid); sParaTemp.put("appid", preparePayBean.appid);
// sParaTemp.put("mch_id", preparePayBean.mch_id); sParaTemp.put("mch_id", preparePayBean.mch_id);
// sParaTemp.put("openid", preparePayBean.openid); sParaTemp.put("openid", preparePayBean.openid);
// sParaTemp.put("total_fee",preparePayBean.total_fee + ""); sParaTemp.put("total_fee",preparePayBean.total_fee + "");
// sParaTemp.put("out_trade_no", preparePayBean.out_trade_no); sParaTemp.put("out_trade_no", preparePayBean.out_trade_no);
// sParaTemp.put("body", preparePayBean.body); sParaTemp.put("body", preparePayBean.body);
// sParaTemp.put("spbill_create_ip", preparePayBean.spbill_create_ip); sParaTemp.put("spbill_create_ip", preparePayBean.spbill_create_ip);
// sParaTemp.put("notify_url",preparePayBean.notify_url); sParaTemp.put("notify_url",preparePayBean.notify_url);
// sParaTemp.put("trade_type", preparePayBean.trade_type); sParaTemp.put("trade_type", preparePayBean.trade_type);
// sParaTemp.put("nonce_str", preparePayBean.nonce_str); sParaTemp.put("nonce_str", preparePayBean.nonce_str);
//
// preparePayBean.sign = createSign(sParaTemp); preparePayBean.sign = createSign(sParaTemp);
//
// String reqrXml = JacksonUtil.beanToXml(preparePayBean,"xml"); String reqrXml = JacksonUtil.beanToXml(preparePayBean,"xml");
// String respXml = HttpsUtil.httpsRequest(URL_PREPARE_PAY,"POST",reqrXml); String respXml = HttpsUtil.httpsRequest(URL_PREPARE_PAY,"POST",reqrXml);
//
// System.out.println("---------------PreparePay Request Xml-----------------"); System.out.println("---------------PreparePay Request Xml-----------------");
// System.out.println(reqrXml); System.out.println(reqrXml);
// System.out.println("---------------PreparePay Response Xml-----------------"); System.out.println("---------------PreparePay Response Xml-----------------");
// System.out.println(respXml); System.out.println(respXml);
// System.out.println("---------------PreparePay end-----------------"); System.out.println("---------------PreparePay end-----------------");
//
// PreparePayResultBean resultBean = null; PreparePayResultBean resultBean = null;
// PreparePayReSignBean reSignBean = new PreparePayReSignBean(); PreparePayReSignBean reSignBean = new PreparePayReSignBean();
// resultBean = JacksonUtil.xmlToBean(new ByteArrayInputStream(respXml.getBytes()),PreparePayResultBean.class); resultBean = JacksonUtil.xmlToBean(new ByteArrayInputStream(respXml.getBytes()),PreparePayResultBean.class);
//
// if(ObjectUtil.isNull(resultBean)) { if(ObjectUtil.isNull(resultBean)) {
// throw new PayException("PreparePay 返回的resultBean为空"); throw new PayException("PreparePay 返回的resultBean为空");
// } }
//
// if(!StrUtil.isEmpty(resultBean.return_code) if(!StrUtil.isEmpty(resultBean.return_code)
// && !StrUtil.isEmpty(resultBean.result_code)){ && !StrUtil.isEmpty(resultBean.result_code)){
// if(resultBean.result_code.equals("SUCCESS") && resultBean.return_code.equals(resultBean.result_code)){ if(resultBean.result_code.equals("SUCCESS") && resultBean.return_code.equals(resultBean.result_code)){
// reSignBean.nonceStr = createNonceStr(); reSignBean.nonceStr = createNonceStr();
// reSignBean._package = "prepay_id="+resultBean.prepay_id; reSignBean._package = "prepay_id="+resultBean.prepay_id;
// reSignBean.timeStamp = System.currentTimeMillis() / 1000; reSignBean.timeStamp = System.currentTimeMillis() / 1000;
// reSignBean.signType = "MD5"; reSignBean.signType = "MD5";
//
// // 把请求参数打包成数组 // 把请求参数打包成数组
// sParaTemp = new HashMap(); sParaTemp = new HashMap();
// sParaTemp.put("appId", appid); sParaTemp.put("appId", appid);
// sParaTemp.put("package", reSignBean._package); sParaTemp.put("package", reSignBean._package);
// sParaTemp.put("nonceStr", reSignBean.nonceStr); sParaTemp.put("nonceStr", reSignBean.nonceStr);
// sParaTemp.put("signType", reSignBean.signType); sParaTemp.put("signType", reSignBean.signType);
// sParaTemp.put("timeStamp",reSignBean.timeStamp + ""); sParaTemp.put("timeStamp",reSignBean.timeStamp + "");
//
// reSignBean.paySign = createSign(sParaTemp); reSignBean.paySign = createSign(sParaTemp);
//
// return reSignBean; return reSignBean;
// }else{ }else{
// throw new PayException("[" + resultBean.err_code + "]" throw new PayException("[" + resultBean.err_code + "]"
// + resultBean.err_code_des); + resultBean.err_code_des);
// } }
// }else { }else {
// throw new PayException(resultBean.return_msg); throw new PayException(resultBean.return_msg);
// } }
// //return null; //return null;
// } }
//
// /** /**
// * Create Sign * Create Sign
// * @param sParaTemp * @param sParaTemp
// * @return * @return
// */ */
// public static String createSign(Map<String,Object> sParaTemp){ public static String createSign(Map<String,Object> sParaTemp){
// // 除去数组中的空值和签名参数 // 除去数组中的空值和签名参数
// Map sPara = paraFilter(sParaTemp); Map sPara = paraFilter(sParaTemp);
// String prestr = createLinkString(sPara); // 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 String prestr = createLinkString(sPara); // 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
// //MD5运算生成签名 //MD5运算生成签名
// String sign = sign(prestr, key, "utf-8").toUpperCase(); String sign = sign(prestr, key, "utf-8").toUpperCase();
// return sign; return sign;
// } }
//
// /** /**
// * 除去数组中的空值和签名参数 * 除去数组中的空值和签名参数
// * @param sArray 签名参数组 * @param sArray 签名参数组
// * @return 去掉空值与签名参数后的新签名参数组 * @return 去掉空值与签名参数后的新签名参数组
// */ */
// private static Map paraFilter(Map<String,Object> sArray) { private static Map paraFilter(Map<String,Object> sArray) {
// Map result = new HashMap(); Map result = new HashMap();
// if (sArray == null || sArray.size() <= 0) { if (sArray == null || sArray.size() <= 0) {
// return result; return result;
// } }
// for (String key : sArray.keySet()) { for (String key : sArray.keySet()) {
// String value = "" + sArray.get(key); String value = "" + sArray.get(key);
// if (StrUtil.isEmpty(value) || key.equalsIgnoreCase("sign") || key.equalsIgnoreCase("sign_type")) { if (StrUtil.isEmpty(value) || key.equalsIgnoreCase("sign") || key.equalsIgnoreCase("sign_type")) {
// continue; continue;
// } }
// result.put(key, value); result.put(key, value);
// } }
// return result; return result;
// } }
//
// /** /**
// * 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串 * 把数组所有元素排序并按照参数=参数值的模式用&字符拼接成字符串
// * @param params 需要排序并参与字符拼接的参数组 * @param params 需要排序并参与字符拼接的参数组
// * @return 拼接后字符串 * @return 拼接后字符串
// */ */
// private static String createLinkString(Map<String,String> params) { private static String createLinkString(Map<String,String> params) {
// List<String> keys = new ArrayList(params.keySet()); List<String> keys = new ArrayList(params.keySet());
// Collections.sort(keys); Collections.sort(keys);
// String prestr = ""; String prestr = "";
// for (int i = 0; i < keys.size(); i++) { for (int i = 0; i < keys.size(); i++) {
// String key = keys.get(i); String key = keys.get(i);
// String value = params.get(key); String value = params.get(key);
// if (i == keys.size() - 1) {// 拼接时,不包括最后一个&字符 if (i == keys.size() - 1) {// 拼接时,不包括最后一个&字符
// prestr = prestr + key + "=" + value; prestr = prestr + key + "=" + value;
// } else { } else {
// prestr = prestr + key + "=" + value + "&"; prestr = prestr + key + "=" + value + "&";
// } }
// } }
// return prestr; return prestr;
// } }
//
// /** /**
// * 签名字符串 * 签名字符串
// * @param text 需要签名的字符串 * @param text 需要签名的字符串
// * @param key 密钥 * @param key 密钥
// * @param input_charset 编码格式 * @param input_charset 编码格式
// * @return 签名结果 * @return 签名结果
// */ */
// private static String sign(String text, String key, String input_charset) { private static String sign(String text, String key, String input_charset) {
// text = text + "&key=" + key; text = text + "&key=" + key;
// return DigestUtils.md5Hex(getContentBytes(text, input_charset)); return DigestUtils.md5Hex(getContentBytes(text, input_charset));
// } }
//
// /** /**
// * @param content * @param content
// * @param charset * @param charset
// * @return * @return
// * @throws * @throws
// * @throws UnsupportedEncodingException * @throws UnsupportedEncodingException
// */ */
// private static byte[] getContentBytes(String content, String charset) { private static byte[] getContentBytes(String content, String charset) {
// if (charset == null || "".equals(charset)) { if (charset == null || "".equals(charset)) {
// return content.getBytes(); return content.getBytes();
// } }
// try { try {
// return content.getBytes(charset); return content.getBytes(charset);
// } catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
// throw new RuntimeException("MD5签名过程中出现错误,指定的编码集不对,您目前指定的编码集是:" + charset); throw new RuntimeException("MD5签名过程中出现错误,指定的编码集不对,您目前指定的编码集是:" + charset);
// } }
// } }
//
// private static String createNonceStr(){ private static String createNonceStr(){
// return UUID.randomUUID().toString().replace("-",""); return UUID.randomUUID().toString().replace("-","");
// } }
//
// public static Map<String,Object> payToUsrWx( public static Map<String,Object> payToUsrWx(
// String partner_trade_no,String openid,int total_fee,String desc,String spbill_create_ip) String partner_trade_no,String openid,int total_fee,String desc,String spbill_create_ip)
// throws Exception{ throws Exception{
// //1.构造请求字符串 //1.构造请求字符串
// Map<String,Object> reqMap = new HashMap<String,Object>(); Map<String,Object> reqMap = new HashMap<String,Object>();
// reqMap.put("mch_appid",appid); reqMap.put("mch_appid",appid);
// reqMap.put("mchid",mchid); reqMap.put("mchid",mchid);
// //reqMap.put("device_info",null); //不能添加空字段,Jackson会生成闭包xml <device_info/>导致签名失败 //reqMap.put("device_info",null); //不能添加空字段,Jackson会生成闭包xml <device_info/>导致签名失败
// reqMap.put("nonce_str",createNonceStr()); reqMap.put("nonce_str",createNonceStr());
// reqMap.put("partner_trade_no",partner_trade_no); reqMap.put("partner_trade_no",partner_trade_no);
// reqMap.put("openid",openid); reqMap.put("openid",openid);
// reqMap.put("check_name","NO_CHECK"); reqMap.put("check_name","NO_CHECK");
// //reqMap.put("re_user_name",null); //reqMap.put("re_user_name",null);
// reqMap.put("amount",total_fee + ""); reqMap.put("amount",total_fee + "");
// reqMap.put("desc",desc); reqMap.put("desc",desc);
// reqMap.put("spbill_create_ip",spbill_create_ip); reqMap.put("spbill_create_ip",spbill_create_ip);
// reqMap.put("sign",createSign(reqMap)); reqMap.put("sign",createSign(reqMap));
//
// //2.发送付款请求 //2.发送付款请求
// String reqrXml = JacksonUtil.mapToXml(reqMap,"xml"); String reqrXml = JacksonUtil.mapToXml(reqMap,"xml");
// String respXml = HttpsUtil.httpsRequest(URL_PAY_TO_USR_WX,"POST",reqrXml, String respXml = HttpsUtil.httpsRequest(URL_PAY_TO_USR_WX,"POST",reqrXml,
// WebConstant.PATH_WX_CRET,mchid); WebConstant.PATH_WX_CRET,mchid);
// System.out.println("---------------PayToUsrWx Request Xml-----------------"); System.out.println("---------------PayToUsrWx Request Xml-----------------");
// System.out.println(reqrXml); System.out.println(reqrXml);
// System.out.println("---------------PayToUsrWx Response Xml-----------------"); System.out.println("---------------PayToUsrWx Response Xml-----------------");
// System.out.println(respXml); System.out.println(respXml);
// System.out.println("---------------PayToUsrWx end-----------------"); System.out.println("---------------PayToUsrWx end-----------------");
//
// //3.判断成功失败 //3.判断成功失败
// Map<String,Object> respMap = JacksonUtil.xmlToMap(new ByteArrayInputStream(respXml.getBytes())); Map<String,Object> respMap = JacksonUtil.xmlToMap(new ByteArrayInputStream(respXml.getBytes()));
// String return_code,result_code; String return_code,result_code;
// return_code = (String) respMap.get("return_code"); return_code = (String) respMap.get("return_code");
// result_code = (String) respMap.get("result_code"); result_code = (String) respMap.get("result_code");
//
// if(!StrUtil.isEmpty(return_code) && !StrUtil.isEmpty(result_code)){ if(!StrUtil.isEmpty(return_code) && !StrUtil.isEmpty(result_code)){
// if(return_code.equals("SUCCESS") && return_code.equals(result_code)){ if(return_code.equals("SUCCESS") && return_code.equals(result_code)){
// return respMap; return respMap;
// }else{ }else{
// throw new PayException("[" + respMap.get("err_code") + "]" throw new PayException("[" + respMap.get("err_code") + "]"
// + respMap.get("err_code_des")); + respMap.get("err_code_des"));
// } }
// }else { }else {
// throw new PayException((String) respMap.get("return_msg")); throw new PayException((String) respMap.get("return_msg"));
// } }
// //return null; //return null;
// } }
//
// public static Map<String,String> payToUsrBank(){ public static Map<String,String> payToUsrBank(){
// //Fix Me //Fix Me
// return null; return null;
// } }
//} }

2
util/src/main/java/com/ccsens/util/WordToJpgUtil.java

@ -1,4 +1,4 @@
package com.ccsens.util;//package com.ccsens.ptpro.util; //package com.ccsens.util;//package com.ccsens.ptpro.util;
// //
//import com.artofsolving.jodconverter.DocumentConverter; //import com.artofsolving.jodconverter.DocumentConverter;
//import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; //import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;

8
util/src/main/java/com/ccsens/util/wx/WxXcxUtil.java

@ -138,8 +138,12 @@ public class WxXcxUtil {
private static final String URL_CREATE_MENU private static final String URL_CREATE_MENU
= " https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%1$s"; = " https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%1$s";
private static final String appid = "wx7af1bf1e14facf82"; // private static final String appid = "wx7af1bf1e14facf82";
private static final String secret = "a6613fae11b497639c0224b820aaf6d9"; // private static final String secret = "a6613fae11b497639c0224b820aaf6d9";
private static final String appid = "wx356e01c7eb01d55d";
private static final String secret = "05c5204867d92a0ec7e7a44c9d95338b";
private static final String mchid = ""; private static final String mchid = "";
private static final String key = ""; private static final String key = "";

Loading…
Cancel
Save